0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

ARM代码编译链接的工作流程

GReq_mcu168 来源:玩转单片机 作者:玩转单片机 2020-12-22 16:57 次阅读

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调试的目标程序是在目标板上执行,仿真更接近于目标硬件,因此,许多接口问题,如高频操作限制、ACDC参数不匹配,电线长度的限制等被最小化了。使用集成开发环境配合JTAG仿真器进行开发是目前采用最多的一种调试方式。

责任编辑:xj

原文标题:ARM代码编译、链接调试过程

文章出处:【微信公众号:玩转单片机】欢迎添加关注!文章转载请注明出处。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • ARM
    ARM
    +关注

    关注

    134

    文章

    9091

    浏览量

    367492
  • 源代码编译
    +关注

    关注

    0

    文章

    2

    浏览量

    5557

原文标题:ARM代码编译、链接调试过程

文章出处:【微信号:mcu168,微信公众号:硬件攻城狮】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    使用pdfDocs提高工作效率,改进PDF工作流程

    使用pdfDocs提高工作效率,改进PDF工作流程。 pdfDocs是一款PDF管理应用程序,可帮助法律专业人士创建、编辑、整理、装订、编辑和保护 PDF 文档,提高工作效率和安全性。 为什么选择
    的头像 发表于 12-21 15:31 101次阅读
    使用pdfDocs提高<b class='flag-5'>工作</b>效率,改进PDF<b class='flag-5'>工作流程</b>

    用CPLD控制ADS7229,工作流程是怎么样的?

    用CPLD控制ADS7229,因为需要用到状态机,需要了解7229的工作流程是怎么样的,手册上没有看懂,望大侠指点! 比如:流程一:通过SPI接口进行寄存器(CFR)配置——》启动转换-——》等待转换完成——》输出数据(sdo)——》启动下一次转换?
    发表于 12-03 07:50

    浅谈无刷电机的工作流程

    上一期的芝识课堂,我们跟大家一起分析了无刷电机的四个功能单元,并详细分析了PWM和逆变器单元的工作情况,今天我们继续来熟悉无刷电机工作流程中另外两个重要的部分——转子位置检测和波形驱动。
    的头像 发表于 11-12 13:46 438次阅读
    浅谈无刷电机的<b class='flag-5'>工作流程</b>

    人员定位系统的原理和工作流程

    人员定位是一种用于确定或跟踪人员位置的技术。随着科技的快速发展,人员定位系统变得越来越常见,在许多不同的领域得到了广泛的应用。本文将探讨人员定位系统的原理和工作流程,包括定位技术、数据传输和处理
    的头像 发表于 09-03 10:42 536次阅读
    人员定位系统的原理和<b class='flag-5'>工作流程</b>

    java反编译代码可以修改么

    Java反编译是一种将编译后的Java字节码(.class文件)转换回源代码的过程。反编译后的代码可以进行修改,但是需要注意,反
    的头像 发表于 09-02 11:00 673次阅读

    ida反编译出来代码能直接用吗

    IDA反编译出来的代码通常 不能直接使用 ,这主要基于以下几个方面的原因: 一、代码的不完整性 IDA反编译生成的代码可能缺少原始源
    的头像 发表于 09-02 10:55 666次阅读

    从记录到管理:单北斗工作记录仪如何优化工作流程

    在这个快节奏的时代,每一分效率的提升都是企业竞争力的关键。从繁琐的手工记录到智能化的数据管理,技术的飞跃正悄然改变着我们的工作方式。顶坚单北斗工作记录仪如何成为优化工作流程的得力助手,实现从记录
    的头像 发表于 08-30 11:09 275次阅读
    从记录到管理:单北斗<b class='flag-5'>工作</b>记录仪如何优化<b class='flag-5'>工作流程</b>

    行云流水线 满足你对工作流编排的一切幻想~skr

    流水线模型 众所周知,DevOps流水线(DevOps pipeline)的本质是实现自动化工作流程,用于支持软件开发、测试和部署的连续集成、交付和部署(CI/CD)实践。它是DevOps方法论
    的头像 发表于 08-05 13:42 279次阅读

    e² studio中链接脚本的修改指导

    一般而言,程序编译经历下图四个阶段,链接编译的最后一步,无论是在PC上编译代码,还是在PC上使用嵌入式gcc工具交叉
    的头像 发表于 06-13 10:49 466次阅读
    e² studio中<b class='flag-5'>链接</b>脚本的修改指导

    M8_8pin公头如何简化工作流程

    德索工程师说道M8_8pin公头作为一种先进的连接器设计,其在多个领域都发挥着重要作用,特别是在自动化、航空、医疗等领域。它通过实现高效、稳定的信号和数据传输,为各种设备提供了可靠的连接。在工作流程中,M8_8pin公头通过其独特的设计和功能,可以大大简化工作流程,提高
    的头像 发表于 05-05 13:41 250次阅读
    M8_8pin公头如何简化<b class='flag-5'>工作流程</b>

    鸿蒙原生应用元服务-访问控制(权限)开发工作流程相关

    一、权限的工作流程 权限申请使用的工作流程 应用在访问数据或者执行操作时,需要评估该行为是否需要应用具备相关的权限。如果确认需要目标权限,则需要在应用安装包中申请目标权限。 然后,需要判断目标权限
    发表于 04-19 15:27

    Ansys与SynMatrix合作,简化无线通信射频滤波器设计工作流程

    Ansys扩展其电子系列产品组合,以简化无线通信射频滤波器设计工作流程
    的头像 发表于 04-08 09:45 802次阅读
    Ansys与SynMatrix合作,简化无线通信射频滤波器设计<b class='flag-5'>工作流程</b>

    推挽放大威廉希尔官方网站 工作流程

    ”),另一个在负半周期拉动负载(“挽”),因此称为“推挽”。这种结构允许放大威廉希尔官方网站 在信号的两个半周期内都能提供能量,从而有效地将输入信号的功率放大到更高的水平。 推挽放大威廉希尔官方网站 的工作流程如下: 信号分离:输入信号首先被送到一个分相器(通
    的头像 发表于 02-03 17:23 1337次阅读
    推挽放大威廉希尔官方网站
<b class='flag-5'>工作流程</b>

    物联网数据采集器的工作原理和工作流程

    物联网数据采集器的工作原理和工作流程 物联网数据采集器是物联网系统中的关键组成部分,它负责收集、处理和传输设备所产生的数据。其工作原理和工作流程如下所述。 一、物联网数据采集器
    的头像 发表于 02-01 10:59 4927次阅读

    SOLIDWORKS 2024通过自动化和缩短工作流程来实现智能工作

    随着科技的快速发展,工程设计和制造业正在经历变革。在这个过程中,SOLIDWORKS 2024的发布为我们提供了一个全新的视角,以实现更智能的工作流程。本文将探讨SOLIDWORKS 2024如何通过自动化和缩短工作流程来实现智能工作
    的头像 发表于 01-10 11:37 548次阅读
    SOLIDWORKS 2024通过自动化和缩短<b class='flag-5'>工作流程</b>来实现智能<b class='flag-5'>工作</b>