ARM代码编译与链接调试的工作流程梳理

💡 原文中文,约2100字,阅读约需5分钟。
📝

内容提要

ARM处理器有多种型号,如ARM7、ARM9、Cortex-M、Cortex-R和Cortex-A等。ARM代码编译和链接的工作流程包括编译过程和链接过程。编译过程将源代码转换为目标代码,使用ARM编译命令生成ELF格式的目标文件。链接过程将目标文件和链接库处理成ELF格式的映像文件。映像文件包含域、输出段和输入段,以及加载时地址和运行时地址的映射。链接器还具有优化功能。拓展知识包括程序断点、链接库的概念和JTAG调试器的使用。

🎯

关键要点

  • ARM处理器有多种型号,如ARM7、ARM9、Cortex-M、Cortex-R和Cortex-A。
  • 编译过程将源代码转换为目标代码,使用ARM编译命令生成ELF格式的目标文件。
  • makefile文件定义编译过程的规则,包括需要编译的文件和宏定义。
  • ELF文件包含编译生成的二进制代码及链接所需的信息。
  • 链接过程将目标文件和链接库处理成ELF格式的映像文件,包含分组信息和定位信息。
  • 映像文件由多个域、输出段和输入段组成,输入段包含代码和数据。
  • 加载时地址和运行时地址的区别在于存储位置,复杂地址映射可通过scatter配置文件设置。
  • 初始入口点和普通入口点的定义及其在程序中的作用。
  • scatter文件描述加载时域、运行时域和输入段选择符的信息。
  • 程序断点分为软件断点和硬件断点,后者需要硬件支持。
  • 链接库分为静态链接库和动态链接库,动态链接库又分为加载时和运行时动态链接库。
  • JTAG调试器通过ARM芯片的JTAG接口进行调试,具有非插入式调试的优点。
➡️

继续阅读