为什么一般都是-ro-base 0xc100000开始呢?BANK6为RAM,起始地址为0xc000000???在这个之前都是存放的什么呢???
(我的ram有8M,_ISR_STARTADDRESS EQU 0xc7fff00,内存中的中断映射的地址从0xc7fff00开始。)
我的程序有时候会突然死机,可能运行一天才死,也可能刚开机几分钟就死了。死掉的时候连中断都进不去。。每次开始之后都是执行相同的操作。我怀疑是不是我ads里面设置的不太好,导致数据将我中断向量覆盖了。
我的ads在arm linker里面设置linktype=simple,Ro base=0xc100000,rw base没有填写,options里面的Image entery point也是0xc100000:
-info totals -entry 0xc100000 -ro-base 0xc100000 -first vector.o(reset)
还有,我们的ads在编译完成后,输出:
ro size(code+ro data) 223.67kB
rw size(rw data+zi data) 34.39kB
rom size(code +ro data +rw data) 237.58kB
是什么意思呢???
这是不是意味着,我的ram有很多没有使用到呢???会不会我有8MB的RAM,但是我只用到了1MB的情况呢?
各位谁能帮我看看是什么问题吗???
存储器都在哪里,取决于你处理器和实际的硬件配置......
ro,read only,只读的. 通常执行代码和一些只读数据都放在ro里面
rw,read and write,可读写的. 这些数据有自己的初始值,而初始值都要在rom里面保存着,你的main开始执行之前,有一些代码负责把这些初始值复制到RAM里面.
zi,zero initialized data,初始值为0的数据.这些数据被集中起来放在一起,启动代码会把它们都设置成0.
so,rom里面需要包含code,ro data和rw data