本帖最后由 宛城君 于 2013-6-9 18:46 编辑
何时使用分散加载
需要或最好使用分
散加载描述的情况包括:
复杂内存映射
如果必须将代码和数据放在多个不同的内存区域中,则需要使用
详细指令指定将哪个节放在哪个内存空间中。
不同类型的内存
许多系统都包含多种不同的物理内存设备,如闪存、ROM、
SDRAM 和快速 SRAM。 分散加载描述可以将代码和数据与最适合
的内存类型相匹配。 例如,可以将中断代码放在快速 SRAM 中以
缩短中断响应时间,而将不经常使用的配置信息放在较慢的闪存
中。
内存映射的外围设备
分散加载描述可以将数据节准确放在内存映射中的某个地址,以
便能够访问内存映射的外围设备。
位于固定位置的函数
可以将函数放在内存中的相同位置,即使已修改并重新编译周围
的应用程序。 这有助于实现跳转表。
使用符号标识堆和堆栈
链接应用程序时,可以为堆和堆栈位置定义一些符号。
使用 __at 节将节放在特定地址中
可以为节指定一个特殊名称,以编码必须将其放置到的地址。 您可以按以下方式指定名称: .ARM.__at_address其中: address是所需的节地址。 可以按十六进制或十进制指定此地址。 采用 .ARM.__at_address 格式的节是由缩写 __at 引用的。
在编译器中,可通过以下方式将变量分配给 __at 节:使用 __attribute__((section(”name”))) 显式命名节或使用属性 __at 为您设置节的名称 |