RealView中如何定义|Image$$RW$$Base|、|Image$$ZI$$Base|?
问题类别:ARM软件工具 > Keil MDK | 浏览次数:10635 |
发布日期:2012/4/23 14:55:28 | 文章来源:完美体育·(中国)手机网页版科技 |
回复日期:2020/12/20 10:23:23 |
环境说明
RealView MDK中国版3.05以上分析描述
如何使用链接脚本中的Image$$RW$$Base|、|Image$$ZI$$Base|问题解答
使用分散载入描述文件时,Image$$RW$$Base、Image$$RW$$Limit、Image$$RO$$Base、Image$$RO$$Limit、Image$$ZI$$Base 和 Image$$ZI$$Limit 符号是未定义的。因为默认的实现使用 Image$$ZI$$Limit,所以您必须重新实现__user_initial_stackheap() 并定义堆区起始和栈区顶端的值。有关的更多信息,
请参阅KEIL 编译工具 2.0 版编译程序和库指南 中关于库存储器模型的章节
和 KEIL 编译工具 2.0 版开发者指南 中关于编写 ROM 代码的章节。如果不重
新实现 __user_initial_stackheap(),则链接程序显示以下出错信息:
Undefined symbol Image$$ZI$$Limit (referred from sys_stackheap.o)。
MDK-ARM链接程序使用了两种方式控制程序的链接,即链接控制命令选项和链接脚本文件。当使用链接控制命令选项时,链接器定义了Image$$RW$$Base、Image$$RW$$Limit、Image$$RO$$Base、Image$$RO$$Limit、Image$$ZI$$Base和Image$$ZI$$Limit等6个段地址描述符。这6个描述符可以直接在程序中引用。而在使用链接脚本文件后,这6个描述符号没有了,取而代之的是链接脚本文件中的段描述符,格式为:Image$$段名$$Base 和Image$$段名$$Limit。具体的你可以参看MDK帮助文档中关于链接器定义的符号这一章!
相关的链接: