你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

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

[复制链接]
tigerarm 提问时间:2012-8-21 14:50 /
我用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中然后执行的么!
求高手指点,谢谢!
收藏 评论4 发布时间:2012-8-21 14:50

举报

4个回答
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中断,
请高手指点下,这是哪里出了问题,谢谢
 
zoozo 回答时间: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

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版