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

    文章

    8651

    浏览量

    361819
  • 源代码编译
    +关注

    关注

    0

    文章

    2

    浏览量

    5546

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

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

收藏 人收藏

    评论

    相关推荐

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

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

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

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

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

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

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

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

    设计和模拟厘米尺度超透镜的工作流程

    本文介绍了设计和模拟厘米尺度超透镜的工作流程
    的头像 发表于 12-16 11:02 559次阅读
    设计和模拟厘米尺度超透镜的<b class='flag-5'>工作流程</b>

    简述mvc的工作流程

    MVC(模型-视图-控制器)是一种用于组织和管理程序代码的软件架构模式。它将应用程序分为模型、视图和控制器三个不同的组件,每个组件负责不同的任务,以实现应用程序的协调和灵活性。 MVC的工作流程可以
    的头像 发表于 11-22 17:01 887次阅读

    ARM编译器工具链的动态链接应用说明

    动态链接是一个复杂的主题,通常只有部分人了解。 要理解ARM编译器工具链中的动态链接,您不仅需要良好的动态链接背景知识,还需要一些与动态
    发表于 08-29 06:48

    C语言的编译链接过程

      C语言的编译链接过程要把我们编写的一个C程序源代码转换成可以在硬件上运行的程序(可执行代码),需要进行编译
    的头像 发表于 08-21 10:06 1617次阅读
    C语言的<b class='flag-5'>编译</b><b class='flag-5'>链接</b>过程

    如何为Arm编译C和c++代码

    和C++源代码翻译成机器代码编译器。 •将汇编语言源代码翻译成机器代码的汇编程序。 •一个链接
    发表于 08-02 17:28

    Optimajet工作流过程的管理

    WorkflowEngine是业务流程管理(BPM)的骨干解决方案,它使得通过使用低代码可视化构建器来自动化工作流设计成为可能。它基于 .NETFramework/.NET Core
    的头像 发表于 07-03 15:26 450次阅读
    Optimajet<b class='flag-5'>工作流</b>过程的管理

    三坐标测量仪calypso优化影像测量仪工作流程

    三坐标测量仪calypso优化影像测量仪工作流程此外,随着今年新版本的发布,ZEISSCALYPSO进一步优化了光学坐标测量机的工作流程。针对蔡司O-DETECT等三坐标测量机,CALYPSO提供
    的头像 发表于 06-26 11:49 456次阅读
    三坐标测量仪calypso优化影像测量仪<b class='flag-5'>工作流程</b>

    C语言的编译过程

    C语言的编译链接过程要把我们编写的一个C程序源代码,转换成可以在硬件上运行的程序(可执行代码),需要进行编译
    发表于 06-25 10:36 286次阅读
    C语言的<b class='flag-5'>编译</b>过程

    一套完整的机器视觉系统的工作流程有哪些?

    机器视觉系统的工作流程
    的头像 发表于 06-06 15:17 1619次阅读
    一套完整的机器视觉系统的<b class='flag-5'>工作流程</b>有哪些?

    27个非常经典的设备工作流程图解

    今天给大家分享27个非常经典的设备工作流程图解。
    的头像 发表于 06-02 17:16 1082次阅读
    27个非常经典的设备<b class='flag-5'>工作流程</b>图解

    虹科方案|使用 HK-TRUENAS支持媒体和娱乐工作流程-2

    HongKe虹科方案使用HK-TRUENAS支持媒体和娱乐工作流程-2音频制作NASZFS文件系统M&E工作流程01支持M&E工作流程的HK-TRUENAS屡获殊荣的TrueNAS
    的头像 发表于 05-09 14:55 621次阅读
    虹科方案|使用 HK-TRUENAS支持媒体和娱乐<b class='flag-5'>工作流程</b>-2