打印

请教:关于IAR分散加载

[复制链接]
5536|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
flashdyc|  楼主 | 2009-11-2 19:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 flashdyc 于 2009-11-3 09:18 编辑

IAR中分散加载一般都有这么两句:
   place in ROM_region   { readonly };
   place in RAM_region   { readwrite,
                                      block CSTACK, block HEAP };
   这两句有些想不通:
   第一句说的是加载域?
   第二句应该肯定是执行域了吧
   但按我上述的想法如果第一句是加载域,为什么只包含readonly,数据段信息不也存储在flash中么。如果按文件中的这种写法如果我想程序存储在FLASH中,其中一部分代码运行时在RAM中那应该怎么设置?上述假设在ADS的scatter文件中是很容易配置的,在IAR中怎么也想不通
   说的简单点,就是我想在IAR中通过分散加载将程序下载到FLASH中,运行时一部分代码在RAM中运行,请问该如何设置

相关帖子

沙发
午夜粪车| | 2009-11-2 23:31 | 只看该作者
看不明白

使用特权

评论回复
板凳
flashdyc|  楼主 | 2009-11-3 09:59 | 只看该作者
是不是问题问的太基础了。。

使用特权

评论回复
地板
armhoo| | 2010-6-3 13:10 | 只看该作者
IAR分散加载至今俺也还不明白,等待高人解答?好像IAR无法得到加载域时的RO RW ZI等信息而只能得到运行时域的RO RW ZI相关信息,LZ上的例子中两句都是运行时域,就是运行时代码就必须在那两个place的地方。

使用特权

评论回复
5
Quentin| | 2010-6-5 10:51 | 只看该作者
占座学习

使用特权

评论回复
6
xinzha| | 2010-6-5 11:40 | 只看该作者
readonly包含了code段以及RO data,这一部分是运行时不允许被修改的。当然你想强行修改也能做到,只不过这样就不是代码的本意了。
ram段里面包含了堆,栈,rw的全局变量,static等等在运行时可以被修改的部分。

使用特权

评论回复
7
zchong| | 2010-6-6 20:43 | 只看该作者
部分代码拷贝到ram执行,可以使用IAR的关键字__ramfunc;
全部代码拷贝到ram执行,参考Technical Note 11578

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

17

帖子

0

粉丝