周公: 这段时间在学习EASYARM2200开发版的分散加载文件时,有如下疑问不解特向各位大师请教: 1.ARM的系统软件开发中主要包含RO,RW,ZI三个段组成。其中的RW,ZI段有都属于数据段,但两者间何区别?他们分别对应的是程序中的哪些变量? 2.存储器分配应遵循哪些规则要求呢? 例如以下片内FLASH固化程序的SCF文件: ROM_LOAD 0x0 { ROM_EXEC 0x00000000 { Startup.o (vectors, +First) * (+RO) } IRAM 0x40000000 { Startup.o (+RW,+ZI) } ERAM 0x80000000 { * (+RW,+ZI) } HEAP +0 UNINIT { heap.o (+ZI) } STACKS 0x40004000 UNINIT { stack.o (+ZI) } } 这其中的问题有: (1)为什么 Startup.o和stack.o目标文件的ZI变量放在片内存储器内?哪些数据量该放片内片外?而且加载区STACKS的地址0x40004000在存储器映射表中对应的是“保留给片内存储器空间”,怎么能用呢? (2)heap.o 和stack.o的RW变量放在那儿呢?为什么不跟ZI区放在一起? 恳请赐教! |