Realview MDK 链接脚本文件详细解析(一)–链接符号
Realview MDK 链接程序使用了两种方式控制程序的链接,即链接控制命令选项和链接脚本文件
链接脚本文件
链接脚本文件类型一般为:
xxxlink.sct
链接符号说明
当使用链接控制命令选项时,链接器定义了Image$$RO$$Base、 Image$$RO$$Limit、Image$$RW$$Base、Image$$RW$$Limit、 Image$$ZI$$Limit 和 Image$$ZI$$Limit 等 6 个段地址描述符。这 6 个描述符可以直接在程序中引用,而在使用链接脚本后,这 6 个描述符号就没有了,取而代之的是
链接脚本文件中的段描述符,格式为:Image$$段名$$Base 和 Image$$段名$$Limit。
链接符号含义
| 序号 | 段名 | 含义 |
|---|---|---|
| 1 | Image$$RO$$Base | RO 段的起始地址 |
| 2 | Image$$RO$$Limit | RO 段的结束地址 |
| 3 | Image$$RW$$Base | RW 段的起始地址 |
| 4 | Image$$RW$$Limit | RW 段的结束地址 |
| 5 | Image$$ZI$$Base | ZI 段的起始地址 |
| 6 | Image$$ZI$$Limit | ZI 段的结束地址 |
链接符号使用示例
示例一
extern int Image$$RW_IRAM1$$ZI$$Limit;
#define HEAP_SIZE (100 * 2014)
#define HEAP_BEGIN (&Image$$RW_IRAM1$$ZI$$Limit)
#define HEAP_END HEAP_SIZE
上述宏定义了堆的起始地址,即 ZI 段的结束地址,堆的大小为 HEAP_SIZE。也就是说从 ZI 段的结束地址 到 ZI 段的结束地址 + HEAP_SIZE 这一段空间用户可以作为堆来使用。例如在 RT-Thread 源码中有
rt_system_heap_init((void *)HEAP_BEGIN, (void *)HEAP_END);
本文详细解析RealviewMDK链接脚本的作用及符号定义,介绍如何通过链接脚本控制程序链接,包括RO、RW和ZI段的地址描述符,以及如何在程序中引用这些描述符。
1226

被折叠的 条评论
为什么被折叠?



