回到最初的问题,ARM的Image就是由上面所说的各个段组成的,那在只读的ROM空间,如何将READWRITE的数据放入RAM中的那,在代码中我们并没有作这些事啊。其实,这部分工作是由Image自动进行的不需要认为干预,在启动时,Image自动将数据拷贝到RAM中,这里还要强调一下,拷贝的只是READWRITE变量,对ZI的变量,直接将所在内存段清0即可,无需拷贝。
在编写嵌入式程序过程中,需要重点将存储空间中各段位置考虑好,在进行Image的编译,Image起始地址必须是0x00,或者CPU指定的运行地址,重点是分配各个特殊状态的STACK空间,以及用于动态分配的HEAP空间。在IAR中有关于 initialize by copy/manule的指令,就是用来将RW数据段拷入RAM中的,这里一定要将RW拷入,否则会导致运行错误。
联系客服