tigerarm 发表于 2012-8-21 14:50:35

求助分散加载问题,求高手指点!【悬赏问答】

我用keil mdk调试stm32103c8,
1.在flash中调试ok,
2.在ram中调试也ok,
但是,我想试下分散加载,所以就在flash调试ok的项目中,
修改了一个option for group的Memory Assignment 项中Code/Const到RAM1,
结果调试下载总是进入fault中断,这是为什么啊!修改Code/Const到RAM1,
链接器不是会自动生成copy代码把指定的group代码复制到RAM1中然后执行的么!
求高手指点,谢谢!

tigerarm 发表于 2012-8-22 02:13:25

回复:求助分散加载问题,求高手指点!

补充一下,我把在RAM调试的工程做了修改,
把内部的ram,分为了2块,如下:
1.第一部分做IROM1
2.第二部分做IRAM1
然后,把一个group组加载到IRAM1,修改了选项
option for group中的Code/Const,修改为IRAM1,
调试时,分散加载编译调试都是OK的。
同样的方法修改flash中的调试就会出现fault中断,
请高手指点下,这是哪里出了问题,谢谢
 

ImCQ 发表于 2012-8-22 08:34:16

回复:求助分散加载问题,求高手指点!

搂主是想把flash中的程序拷贝到ram中再执行吗?看看把ram你分的IROM1和IRAM1有没有混,拷贝到ram中的代码段是否正确。

tigerarm 发表于 2012-8-22 13:07:39

回复:求助分散加载问题,求高手指点!

回复第 3 楼 于2012-08-22 08:34:16发表:
搂主是想把flash中的程序拷贝到ram中再执行吗?看看把ram你分的IROM1和IRAM1有没有混,拷贝到ram中的代码段是否正确。
 

我在看下吧,我不是想自己拷贝,我只是想验证一下分散加载,分配是没有混的,我试了一下RAM调试时用分散加载是OK的,

wkuang 发表于 2012-9-1 23:54:12

RE:求助分散加载问题,求高手指点!【悬赏问答】

分散加载其实很简单,你只要弄懂几个就行了
C代码编译后,分为三种数据,
一种是RO 数据,就是代码中的指令性数据,常数等(read only)
一种是RW数据, 就是代码中的变量,(read write)
一种是ZI数据,初始化为0变量的变量的赋值。(zero indicator)
RO要可以放到RAM中,也可以放到Flash中,但是RW必须放到RAM中,ZI只是一个标记,不需要存储,
还需要注意,arm里有加载域,执行域, 加载域就是数据存放的地方,执行域就是数据执行的时候所在位置,数据启动时,将数据从加载域里读取出来,放到执行域中去,这个可以参考arm 的编译手册,ads mdk的安装目录中都有
scatter file的格式可以参考zlg的一本书,深入浅出 arm7
页: [1]
查看完整版本: 求助分散加载问题,求高手指点!【悬赏问答】