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接口进行调试,具有非插入式调试的优点。
➡️