arm处理器在市面上到处都是arm7、arm9、cortex-m、cortex-r、cortex-a包含的种类繁多,今天我们就来了解一下arm代码编译链接的工作流程,以及过程中需要的相关概念信息。
编译过程编译过程就是把源代码编译生成目标代码的过程。而采用arm编译命令,可以将源代码编译成带有elf格式的目标文件。除了编译命令可以选择相应的编译选项之外,源代码中的pragmas以及特别的关键字也会对编译过程/结果产生一定影响。
makefile文件makefile类似一个脚本文件,这个文件用来定义编译过程,其中包含了需要编译的文件、文件顺序,编译的宏定义等等,可以看做完整编译需要的信息及过程的集合。 2.elf格式文件elf文件:(executable and linkable format) elf文件出了包含编译出的二进制代码,还包含其他链接需要信息,elf格式提供了相应代码/数据对应编译出的地址信息、文件信息等内容。
链接过程链接就是把编译生成的目标文件和链接库处理成为相应elf格式的映像文件(image),最终的文件可以写入嵌入式系统的rom/flash中。映像文件中包含:分组信息和定位信息,亦即输出段/域及地址定位信息。链接器同时可以生成相应与域有关的符号来指示关于加载时地址、运行时地址、加载时长度限制、运行时长度限制等信息。同时链接器也具有优化的功能,删除不必要的代码、段域等。
1.映像文件的组成一个映像文件包含一个或多个域;一个域包含一个或多个输出段;一个输出段包含一个或多个输入段;输入段中包含了目标文件的代码和数据。 输入段的内容:代码、已初始化的数据、未初始化的数据、初始化0的存储区域。 输出段和域中包含:ro、rw、zi域。
2.映像文件的地址映射加载时地址和运行时地址的区别:加载时地址是运行前的地址,简单理解在flash中固定存储即为加载时地址,而若代码载入ram运行时,新的地址为运行时地址;而程序在flash中运行,加载时地址和运行时地址就一致了。当地址映射复杂时,可以通过scatter配置文件进行设置。
3.初始入口点和普通入口点初始入口点:运行时的入口点,初始入口点必须位于映像文件运行时入口点,而它的加载时地址和运行时地址一致(称为固定域)。可以通过-entry指定映像文件的初始入口点。 普通入口点:用entry伪操作定义在程序中,一般为中断服务程序的入口点。
4.scatter文件中包含的信息加载时域描述、运行时域描述、输入段描述、输入段选择符;加载时域包括:名称、起始地址、属性、最大尺寸和一个运行时域;运行时域包括:名称、起始地址、属性、最大尺寸和一个输入段集合;输入段选择符描述了输入段名称或属性的匹配方式。 输入段属性:ro-code/code、ro_data/const、ro/text包括前两项、rw_datarw/data(rw_code+rw_data)、bss、zi;firstlast来指定运行时域的开头结尾,.any可以根据实际情况安排到合适的运行时域。 可以使用fixed属性将域放置在rom中固定位置,加载时域和固定时域即相同。
拓展知识
1.程序断点断点可以分为:软件断点和硬件断点,软件断点可以相应地址插入相应的指令实现,而硬件断点必须要需要相应硬件支持才能实现。
2.链接库的概念链接库分为:静态链接库和动态链接库,而动态链接库又分为加载时动态链接库和运行时动态链接库;其差别:静态链接库的使用内容包含在生成的目标代码中,加载时动态链接库是程序载入内存时知道相应的动态链接库调用内容同时调入内存中,而运行时动态链接库只有在运行到需要调用时才调入使用。
3.jtagjtag仿真器也称为jtag调试器,是通过arm芯片的jtag边界扫描口进行调试的设备。jtag仿真器比较便宜,连接比较方便,通过现有的jtag边界扫描口与 arm cpu 核通信,属于完全非插入式(即不使用片上资源)调试,它无需目标存储器,不占用目标系统的任何端口,而这些是驻留监控软件所必需的。 另外,由于jtag调试的目标程序是在目标板上执行,仿真更接近于目标硬件,因此,许多接口问题,如高频操作限制、ac和dc参数不匹配,电线长度的限制等被最小化了。使用集成开发环境配合jtag仿真器进行开发是目前采用最多的一种调试方式。
原文标题:arm代码编译、链接调试过程
文章出处:【微信公众号:玩转单片机】欢迎添加关注!文章转载请注明出处。
华为MateBook 13 2020款樱粉金高清图集
斯坦福SR560可编程滤波器开机显示overload维修案例
带两个RMS检测器的集成双向桥,用于测量RF功率和回波损耗
数字功放-耐福NTP功放芯片的详细性能概述
传三星获谷歌Tensor G4 AP订单 将使用第三代4nm工艺制造
ARM代码编译链接的工作流程
安防领域的eSIM技术解决方案分析
dfrobot面包实验杜邦线介绍
微雪电子IC120-0444-306 PLCC44测试座简介
创维Q80系列电视定义AIoT生态 引领电视行业步入崭新的时代
中国联通以5G+MEC为锚点去构建边缘云生态
LMD一体化电机中Motion Control款的简单应用
示波器的发展过程及如何选择合适的示波器详细说明
英伟达又一次站上人工智能的风口
气象监测仪:精准气象预测,助力农业生产
可定时开关路由器制作图解
eda怎么自动布线 eda布线完了之后干嘛
云米最新推出的iLive2智能冰箱 物联网时代产品中的佼佼者
日前松下正式发布了TP-55ZT110和TP-55ZT100透明OLED显示器
小米note2和小米note3哪个好