ads 44b0的设置。。为什么我的程序运行一天才死,有时候几分钟就死了,死的时候中断都进不去。

cme05015   2009-10-30 13:46 楼主
为什么一般都是-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的情况呢?

各位谁能帮我看看是什么问题吗???

回复评论 (2)

存储器都在哪里,取决于你处理器和实际的硬件配置......

ro,read only,只读的. 通常执行代码和一些只读数据都放在ro里面
rw,read and write,可读写的. 这些数据有自己的初始值,而初始值都要在rom里面保存着,你的main开始执行之前,有一些代码负责把这些初始值复制到RAM里面.
zi,zero initialized data,初始值为0的数据.这些数据被集中起来放在一起,启动代码会把它们都设置成0.

so,rom里面需要包含code,ro data和rw data
点赞  2009-10-30 23:41
ro-base设置为 0x0c008000
点赞  2010-5-18 14:41
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复