打印

分散加载

[复制链接]
2291|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
_L_D_H_|  楼主 | 2013-6-8 20:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用的是Lpc17xx,想通过分散加载实现在某个特定的flash地址写一个特定的数据。我的工程编译出来的code大小为60k,flash总共大小为64K的地址范围是0x00000000 ~ 0x0000F000。
如果我通过分散加载在0x000C000的地址上存放一个固定数值,这个如果实现?求高手指点

相关帖子

沙发
阿南| | 2013-6-9 12:58 | 只看该作者
baidu一下吧,或者找些书的例程看看

使用特权

评论回复
板凳
huangxz| | 2013-6-9 14:09 | 只看该作者
本帖最后由 huangxz 于 2013-6-9 14:11 编辑
const uint32_t my_box_version __attribute__((at(0x40000 + 0x02FC))) = 0x0002;
像这样就可以了,mdk比gcc要方便一点

如果要分散加载,要自定义一个段

使用特权

评论回复
地板
宛城君| | 2013-6-9 18:40 | 只看该作者
本帖最后由 宛城君 于 2013-6-9 18:46 编辑

何时使用分散加载
需要或最好使用分
散加载描述的情况包括:
复杂内存映射
如果必须将代码和数据放在多个不同的内存区域中,则需要使用
详细指令指定将哪个节放在哪个内存空间中。
不同类型的内存
许多系统都包含多种不同的物理内存设备,如闪存、ROM、
SDRAM 和快速 SRAM。 分散加载描述可以将代码和数据与最适合
的内存类型相匹配。 例如,可以将中断代码放在快速 SRAM 中以
缩短中断响应时间,而将不经常使用的配置信息放在较慢的闪存
中。
内存映射的外围设备
分散加载描述可以将数据节准确放在内存映射中的某个地址,以
便能够访问内存映射的外围设备。
位于固定位置的函数
可以将函数放在内存中的相同位置,即使已修改并重新编译周围
的应用程序。 这有助于实现跳转表。
使用符号标识堆和堆栈
链接应用程序时,可以为堆和堆栈位置定义一些符号。

使用 __at 节将节放在特定地址中
可以为节指定一个特殊名称,以编码必须将其放置到的地址。 您可以按以下方式指定名称:
.ARM.__at_address
其中:
address
是所需的节地址。 可以按十六进制或十进制指定此地址。 采用 .ARM.__at_address 格式的节是由缩写 __at 引用的。


在编译器中,可通过以下方式将变量分配给 __at 节:使用 __attribute__((section(”name”))) 显式命名节或使用属性 __at 为您设置节的名称

使用特权

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

本版积分规则

7

主题

59

帖子

4

粉丝