【进阶】详解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指定未分配段的最大尺寸。
  • 使用预处理命令和表达式求值优化分散文件的使用。
➡️

继续阅读