0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

ARM代碼編譯鏈接的工作流程

GReq_mcu168 ? 來源:玩轉(zhuǎn)單片機(jī) ? 作者:玩轉(zhuǎn)單片機(jī) ? 2020-12-22 16:57 ? 次閱讀

ARM處理器在市面上到處都是ARM7、ARM9、Cortex-M、Cortex-R、Cortex-A包含的種類繁多,今天我們就來了解一下ARM代碼編譯鏈接的工作流程,以及過程中需要的相關(guān)概念信息

編譯過程編譯過程就是把源代碼編譯生成目標(biāo)代碼的過程。而采用ARM編譯命令,可以將源代碼編譯成帶有ELF格式的目標(biāo)文件。除了編譯命令可以選擇相應(yīng)的編譯選項(xiàng)之外,源代碼中的pragmas以及特別的關(guān)鍵字也會對編譯過程/結(jié)果產(chǎn)生一定影響。

makefile文件Makefile類似一個腳本文件,這個文件用來定義編譯過程,其中包含了需要編譯的文件、文件順序,編譯的宏定義等等,可以看做完整編譯需要的信息及過程的集合。 2.ELF格式文件ELF文件:(Executable and Linkable Format) ELF文件出了包含編譯出的二進(jìn)制代碼,還包含其他鏈接需要信息,ELF格式提供了相應(yīng)代碼/數(shù)據(jù)對應(yīng)編譯出的地址信息、文件信息等內(nèi)容。

鏈接過程鏈接就是把編譯生成的目標(biāo)文件和鏈接庫處理成為相應(yīng)ELF格式的映像文件(image),最終的文件可以寫入嵌入式系統(tǒng)ROM/FLASH中。映像文件中包含:分組信息和定位信息,亦即輸出段/域及地址定位信息。鏈接器同時可以生成相應(yīng)與域有關(guān)的符號來指示關(guān)于加載時地址、運(yùn)行時地址、加載時長度限制、運(yùn)行時長度限制等信息。同時鏈接器也具有優(yōu)化的功能,刪除不必要的代碼、段域等。

1.映像文件的組成一個映像文件包含一個或多個域;一個域包含一個或多個輸出段;一個輸出段包含一個或多個輸入段;輸入段中包含了目標(biāo)文件的代碼和數(shù)據(jù)。 輸入段的內(nèi)容:代碼、已初始化的數(shù)據(jù)、未初始化的數(shù)據(jù)、初始化0的存儲區(qū)域。 輸出段和域中包含:RO、RW、ZI域。

2.映像文件的地址映射加載時地址和運(yùn)行時地址的區(qū)別:加載時地址是運(yùn)行前的地址,簡單理解在FLASH中固定存儲即為加載時地址,而若代碼載入RAM運(yùn)行時,新的地址為運(yùn)行時地址;而程序在FLASH中運(yùn)行,加載時地址和運(yùn)行時地址就一致了。當(dāng)?shù)刂酚成鋸?fù)雜時,可以通過scatter配置文件進(jìn)行設(shè)置。

3.初始入口點(diǎn)和普通入口點(diǎn)初始入口點(diǎn):運(yùn)行時的入口點(diǎn),初始入口點(diǎn)必須位于映像文件運(yùn)行時入口點(diǎn),而它的加載時地址和運(yùn)行時地址一致(稱為固定域)??梢酝ㄟ^-entry指定映像文件的初始入口點(diǎn)。 普通入口點(diǎn):用ENTRY偽操作定義在程序中,一般為中斷服務(wù)程序的入口點(diǎn)。

4.scatter文件中包含的信息加載時域描述、運(yùn)行時域描述、輸入段描述、輸入段選擇符;加載時域包括:名稱、起始地址、屬性、最大尺寸和一個運(yùn)行時域;運(yùn)行時域包括:名稱、起始地址、屬性、最大尺寸和一個輸入段集合;輸入段選擇符描述了輸入段名稱或?qū)傩缘钠ヅ浞绞健? 輸入段屬性:RO-CODE/CODE、RO_DATA/CONST、RO/TEXT包括前兩項(xiàng)、RW_DATARW/DATA(RW_CODE+RW_DATA)、BSS、ZI;FIRSTLAST來指定運(yùn)行時域的開頭結(jié)尾,.ANY可以根據(jù)實(shí)際情況安排到合適的運(yùn)行時域。 可以使用FIXED屬性將域放置在ROM中固定位置,加載時域和固定時域即相同。

拓展知識

1.程序斷點(diǎn)斷點(diǎn)可以分為:軟件斷點(diǎn)和硬件斷點(diǎn),軟件斷點(diǎn)可以相應(yīng)地址插入相應(yīng)的指令實(shí)現(xiàn),而硬件斷點(diǎn)必須要需要相應(yīng)硬件支持才能實(shí)現(xiàn)。

2.鏈接庫的概念鏈接庫分為:靜態(tài)鏈接庫和動態(tài)鏈接庫,而動態(tài)鏈接庫又分為加載時動態(tài)鏈接庫和運(yùn)行時動態(tài)鏈接庫;其差別:靜態(tài)鏈接庫的使用內(nèi)容包含在生成的目標(biāo)代碼中,加載時動態(tài)鏈接庫是程序載入內(nèi)存時知道相應(yīng)的動態(tài)鏈接庫調(diào)用內(nèi)容同時調(diào)入內(nèi)存中,而運(yùn)行時動態(tài)鏈接庫只有在運(yùn)行到需要調(diào)用時才調(diào)入使用。

3.JTAGJTAG仿真器也稱為JTAG調(diào)試器,是通過ARM芯片的JTAG邊界掃描口進(jìn)行調(diào)試的設(shè)備。JTAG仿真器比較便宜,連接比較方便,通過現(xiàn)有的JTAG邊界掃描口與 ARM CPU通信,屬于完全非插入式(即不使用片上資源)調(diào)試,它無需目標(biāo)存儲器,不占用目標(biāo)系統(tǒng)的任何端口,而這些是駐留監(jiān)控軟件所必需的。 另外,由于JTAG調(diào)試的目標(biāo)程序是在目標(biāo)板上執(zhí)行,仿真更接近于目標(biāo)硬件,因此,許多接口問題,如高頻操作限制、ACDC參數(shù)不匹配,電線長度的限制等被最小化了。使用集成開發(fā)環(huán)境配合JTAG仿真器進(jìn)行開發(fā)是目前采用最多的一種調(diào)試方式。

責(zé)任編輯:xj

原文標(biāo)題:ARM代碼編譯、鏈接調(diào)試過程

文章出處:【微信公眾號:玩轉(zhuǎn)單片機(jī)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • ARM
    ARM
    +關(guān)注

    關(guān)注

    134

    文章

    9027

    瀏覽量

    366490
  • 源代碼編譯
    +關(guān)注

    關(guān)注

    0

    文章

    2

    瀏覽量

    5553

原文標(biāo)題:ARM代碼編譯、鏈接調(diào)試過程

文章出處:【微信號:mcu168,微信公眾號:硬件攻城獅】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    人員定位系統(tǒng)的原理和工作流程

    人員定位是一種用于確定或跟蹤人員位置的技術(shù)。隨著科技的快速發(fā)展,人員定位系統(tǒng)變得越來越常見,在許多不同的領(lǐng)域得到了廣泛的應(yīng)用。本文將探討人員定位系統(tǒng)的原理和工作流程,包括定位技術(shù)、數(shù)據(jù)傳輸和處理
    的頭像 發(fā)表于 09-03 10:42 ?318次閱讀
    人員定位系統(tǒng)的原理和<b class='flag-5'>工作流程</b>

    java反編譯代碼可以修改么

    Java反編譯是一種將編譯后的Java字節(jié)碼(.class文件)轉(zhuǎn)換回源代碼的過程。反編譯后的代碼可以進(jìn)行修改,但是需要注意,反
    的頭像 發(fā)表于 09-02 11:00 ?450次閱讀

    ida反編譯出來代碼能直接用嗎

    IDA反編譯出來的代碼通常 不能直接使用 ,這主要基于以下幾個方面的原因: 一、代碼的不完整性 IDA反編譯生成的代碼可能缺少原始源
    的頭像 發(fā)表于 09-02 10:55 ?433次閱讀

    從記錄到管理:單北斗工作記錄儀如何優(yōu)化工作流程

    在這個快節(jié)奏的時代,每一分效率的提升都是企業(yè)競爭力的關(guān)鍵。從繁瑣的手工記錄到智能化的數(shù)據(jù)管理,技術(shù)的飛躍正悄然改變著我們的工作方式。頂堅(jiān)單北斗工作記錄儀如何成為優(yōu)化工作流程的得力助手,實(shí)現(xiàn)從記錄
    的頭像 發(fā)表于 08-30 11:09 ?220次閱讀
    從記錄到管理:單北斗<b class='flag-5'>工作</b>記錄儀如何優(yōu)化<b class='flag-5'>工作流程</b>

    e2 studio中鏈接腳本的修改指導(dǎo)

    一般而言,程序編譯經(jīng)歷下圖四個階段,鏈接編譯的最后一步,無論是在PC上編譯代碼,還是在PC上使用嵌入式gcc工具交叉
    的頭像 發(fā)表于 06-13 10:49 ?408次閱讀
    e2 studio中<b class='flag-5'>鏈接</b>腳本的修改指導(dǎo)

    M8_8pin公頭如何簡化工作流程

    德索工程師說道M8_8pin公頭作為一種先進(jìn)的連接器設(shè)計,其在多個領(lǐng)域都發(fā)揮著重要作用,特別是在自動化、航空、醫(yī)療等領(lǐng)域。它通過實(shí)現(xiàn)高效、穩(wěn)定的信號和數(shù)據(jù)傳輸,為各種設(shè)備提供了可靠的連接。在工作流程中,M8_8pin公頭通過其獨(dú)特的設(shè)計和功能,可以大大簡化工作流程,提高
    的頭像 發(fā)表于 05-05 13:41 ?201次閱讀
    M8_8pin公頭如何簡化<b class='flag-5'>工作流程</b>

    鴻蒙原生應(yīng)用元服務(wù)-訪問控制(權(quán)限)開發(fā)工作流程相關(guān)

    一、權(quán)限的工作流程 權(quán)限申請使用的工作流程 應(yīng)用在訪問數(shù)據(jù)或者執(zhí)行操作時,需要評估該行為是否需要應(yīng)用具備相關(guān)的權(quán)限。如果確認(rèn)需要目標(biāo)權(quán)限,則需要在應(yīng)用安裝包中申請目標(biāo)權(quán)限。 然后,需要判斷目標(biāo)權(quán)限
    發(fā)表于 04-19 15:27

    Ansys與SynMatrix合作,簡化無線通信射頻濾波器設(shè)計工作流程

    Ansys擴(kuò)展其電子系列產(chǎn)品組合,以簡化無線通信射頻濾波器設(shè)計工作流程
    的頭像 發(fā)表于 04-08 09:45 ?682次閱讀
    Ansys與SynMatrix合作,簡化無線通信射頻濾波器設(shè)計<b class='flag-5'>工作流程</b>

    推挽放大電路工作流程

    ”),另一個在負(fù)半周期拉動負(fù)載(“挽”),因此稱為“推挽”。這種結(jié)構(gòu)允許放大電路在信號的兩個半周期內(nèi)都能提供能量,從而有效地將輸入信號的功率放大到更高的水平。 推挽放大電路的工作流程如下: 信號分離:輸入信號首先被送到一個分相器(通
    的頭像 發(fā)表于 02-03 17:23 ?1279次閱讀
    推挽放大電路<b class='flag-5'>工作流程</b>

    物聯(lián)網(wǎng)數(shù)據(jù)采集器的工作原理和工作流程

    物聯(lián)網(wǎng)數(shù)據(jù)采集器的工作原理和工作流程 物聯(lián)網(wǎng)數(shù)據(jù)采集器是物聯(lián)網(wǎng)系統(tǒng)中的關(guān)鍵組成部分,它負(fù)責(zé)收集、處理和傳輸設(shè)備所產(chǎn)生的數(shù)據(jù)。其工作原理和工作流程如下所述。 一、物聯(lián)網(wǎng)數(shù)據(jù)采集器
    的頭像 發(fā)表于 02-01 10:59 ?4453次閱讀

    SOLIDWORKS 2024通過自動化和縮短工作流程來實(shí)現(xiàn)智能工作

    隨著科技的快速發(fā)展,工程設(shè)計和制造業(yè)正在經(jīng)歷變革。在這個過程中,SOLIDWORKS 2024的發(fā)布為我們提供了一個全新的視角,以實(shí)現(xiàn)更智能的工作流程。本文將探討SOLIDWORKS 2024如何通過自動化和縮短工作流程來實(shí)現(xiàn)智能工作
    的頭像 發(fā)表于 01-10 11:37 ?496次閱讀
    SOLIDWORKS 2024通過自動化和縮短<b class='flag-5'>工作流程</b>來實(shí)現(xiàn)智能<b class='flag-5'>工作</b>

    設(shè)計和模擬厘米尺度超透鏡的工作流程

    本文介紹了設(shè)計和模擬厘米尺度超透鏡的工作流程。
    的頭像 發(fā)表于 12-16 11:02 ?979次閱讀
    設(shè)計和模擬厘米尺度超透鏡的<b class='flag-5'>工作流程</b>

    彩色多普勒血流顯像儀的工作流程

    彩色多普勒血流顯像儀是一種在醫(yī)學(xué)影像診斷中廣泛使用的設(shè)備,主要用于觀察和分析人體內(nèi)部器官和組織的血流情況。其工作流程可以分為以下幾個步驟: 一、設(shè)備準(zhǔn)備 在使用彩色多普勒血流顯像儀之前,需要先進(jìn)
    的頭像 發(fā)表于 12-13 10:45 ?860次閱讀

    簡述mvc的工作流程

    MVC(模型-視圖-控制器)是一種用于組織和管理程序代碼的軟件架構(gòu)模式。它將應(yīng)用程序分為模型、視圖和控制器三個不同的組件,每個組件負(fù)責(zé)不同的任務(wù),以實(shí)現(xiàn)應(yīng)用程序的協(xié)調(diào)和靈活性。 MVC的工作流程可以
    的頭像 發(fā)表于 11-22 17:01 ?2089次閱讀

    armasm編譯匯編代碼鏈接失敗的問題分析

    這里新開一篇博文,專門講講針對ARM格式的匯編代碼,使用AC6.12應(yīng)該如何處理。下述內(nèi)容大多來自文檔
    的頭像 發(fā)表于 11-13 16:03 ?807次閱讀