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
    +关注

    关注

    135

    文章

    9499

    浏览量

    388555
  • 源代码编译
    +关注

    关注

    0

    文章

    2

    浏览量

    5599

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

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    强强合作 西门子与日月光合作开发 VIPack 先进封装平台工作流程

    平台开发基于 3Dblox 的工作流程。双方目前已经合作完成三项 VIPack 技术的 3Dblox 工作流程验证,包括扇出型基板上芯片封装(FOCoS)、扇出型基板上芯片桥接
    的头像 发表于 10-23 16:09 2950次阅读
    强强合作 西门子与日月光合作开发 VIPack 先进封装平台<b class='flag-5'>工作流程</b>

    ADI Power Studio工作流程与工具概述

    、直观的工作流程,利用准确的模型来仿真实际性能,并自动生成关键的物料清单和报告等内容,帮助工程团队更早做出更优决策。
    的头像 发表于 10-22 09:38 632次阅读

    恩智浦i.MX RT1180跨界MCU驱动EtherCAT的工作流程

    上周的分享已经介绍了整个参考设计的概况和相关硬件资源。那么,本次会从软件工程角度进行分享。首先来了解EtherCAT Slave工作流程
    的头像 发表于 09-28 14:20 792次阅读
    恩智浦i.MX RT1180跨界MCU驱动EtherCAT的<b class='flag-5'>工作流程</b>

    电芯自动面垫分选装盒生产线的工作流程解析

    电芯自动面垫分选装盒生产线的工作流程解析|深圳比斯特自动化
    的头像 发表于 09-28 10:29 330次阅读

    请问如何在keil μVision 5上进行ARM编译器的代码优化?

    如何在keil μVision 5上进行ARM编译器的代码优化?
    发表于 08-20 07:37

    在IAR Arm开发工具链中--function_sections编译选项的使用

    本文主要介绍在IAR Arm开发工具链中不修改源代码的情况下使用‑‑function_sections编译选项把函数放到单独的section。
    的头像 发表于 06-13 13:53 1504次阅读
    在IAR <b class='flag-5'>Arm</b>开发工具链中--function_sections<b class='flag-5'>编译</b>选项的使用

    飞凌嵌入式ElfBoard ELF 1板卡-uboot编译链接文件uboot.lds

    编译完成之后在uboot根目录下生成的uboot.lds是链接文件。链接器就是通过这个文件将成千上万的.o文件链接在一起,此文件是根据arch/ar
    发表于 05-22 11:20

    非技术人员如何用n8n + DeepSeek打造AI自动化工作流

    作者:算力魔方创始人/英特尔创新大使刘力 本文从零开始介绍使用n8n和DeepSeek快速实现一个AI Agent,全自动实现一个Python代码的生成和执行工作流。 一,什么是n8n? n8n
    的头像 发表于 04-09 14:28 7797次阅读
    非技术人员如何用n8n + DeepSeek打造AI自动化<b class='flag-5'>工作流</b>?

    使用智能工具简化向Arm平台的迁移过程

    今年二月,Arm 推出了 GitHub Copilot 新扩展程序,助力快速迁移至 Arm 架构服务器。本文将带你了解开发者该如何利用 GitHub Copilot 和 Arm Runners 来进行无缝构建、测试和部署,从而简
    的头像 发表于 03-10 09:22 649次阅读
    使用智能工具简化向<b class='flag-5'>Arm</b>平台的迁移过程

    NX CAD软件:数字化工作流程解决方案(CAD工作流程)

    NXCAD——数字化工作流程解决方案(CAD工作流程)使用西门子领先的产品设计软件NXCAD加速执行基于工作流程的解决方案。我们在了解行业需求方面累积了多年的经验,并据此针对各个行业的具体需求提供
    的头像 发表于 02-06 18:15 739次阅读
    NX CAD软件:数字化<b class='flag-5'>工作流程</b>解决方案(CAD<b class='flag-5'>工作流程</b>)

    什么样的代码会被编译器优化

    现在的编译器有多智能,可能你辛辛苦苦写的代码,在编译器看来就是几句废话,直接被删除掉。
    的头像 发表于 01-16 16:38 928次阅读

    AI工作流自动化是做什么的

    AI工作流自动化是指利用人工智能技术,对工作流程中的重复性、规则明确的任务进行自动化处理的过程。那么,AI工作流自动化是做什么的呢?接下来,AI部落小编为您分享。
    的头像 发表于 01-06 17:57 1409次阅读

    ARM主板定制流程与成本

    ,企业往往需要对ARM主板进行定制。本文将探讨ARM主板的定制流程、影响定制成本的因素以及定制周期与时间成本。一、定制流程概述ARM主板的定
    的头像 发表于 01-06 13:21 876次阅读
    <b class='flag-5'>ARM</b>主板定制<b class='flag-5'>流程</b>与成本

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

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

    LJ40B4-20J/EZ常开型接近开关工作流程及接线图

    常开型接近开关的工作流程包括无信号触发状态、信号触发状态和信号输出与应用三个步骤。其接线方式可能因型号和制造商而异,但通常遵循两线制或三线制的接线原则。在实际应用中,应根据具体需求和场景选择合适的接近开关型号和接线方式。
    的头像 发表于 12-09 10:42 1426次阅读