【进阶】详解KEIL的分散加载文件
💡
原文中文,约14700字,阅读约需35分钟。
📝
内容提要
本文介绍了在ARM C库中使用分散文件指定栈和堆的方法,包括定义执行区域和属性、创建根区域和固定执行区域,以及使用预处理命令和表达式求值优化分散文件的使用。
🎯
关键要点
- ARM C库提供了多种实现__user_setup_stackheap()函数的方法。
- 在分散文件中定义ARM_LIB_HEAP和ARM_LIB_STACK区域以选择堆和栈的内存模型。
- 只能指定一个ARM_LIB_STACK或ARM_LIB_HEAP区域,并且必须分配一个大小。
- 可以通过定义ARM_LIB_STACKHEAP区域来组合栈和堆区域。
- 创建根区域时,可以指定ABSOLUTE属性并使用相同的地址。
- FIXED执行区属性确保加载地址和执行地址相同。
- 使用FIXED属性可以在固定地址创建根区域。
- 在分散文件中使用最少的布局规范以便于维护和调试。
- 使用__attribute__((at(address)))将函数或数据放置在特定地址。
- 使用分散文件将变量放置在特定段中。
- 使用.ANY模块选择器放置未分配的段。
- 使用ANY_SIZE指定未分配段的最大尺寸。
- 使用预处理命令和表达式求值优化分散文件的使用。
➡️