国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

    文章

    9552

    瀏覽量

    391857
  • 源代碼編譯
    +關注

    關注

    0

    文章

    2

    瀏覽量

    5601

原文標題:ARM代碼編譯、鏈接調試過程

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    是德科技與三星攜手英偉達展示端到端AI-RAN驗證工作流程

    是德科技(NYSE: KEYS )與三星電子宣布,會在巴塞羅那舉行的2026年世界移動通信大會(MWC 2026)上,與英偉達聯合演示端到端人工智能無線接入網絡(AI-RAN)測試與驗證工作流程。該
    的頭像 發表于 03-05 10:04 ?350次閱讀

    虛幻引擎5在建筑可視化中的應用:趨勢、挑戰與基于Perforce P4的工作流程

    UE5正在重塑建筑可視化:實時交互、AI輔助、BIM聯動......技術紅利已來,工作流卻拖了后腿?這篇干貨解析了趨勢和痛點,更揭秘了如何用Perforce P4打造高效的UE5工作流
    的頭像 發表于 02-27 15:26 ?242次閱讀
    虛幻引擎5在建筑可視化中的應用:趨勢、挑戰與基于Perforce P4的<b class='flag-5'>工作流程</b>

    一張圖看懂遠動通信裝置的工作流程

    遠動通信裝置作為電網的“千里眼”“順風耳”,核心是完成“現場狀態上傳”與“調度指令下達”的閉環協作。它的工作流程看似復雜,實則可拆解為“數據采集—數據傳輸—調度處理—指令執行—結果反饋”五大核心步驟
    的頭像 發表于 01-23 11:57 ?484次閱讀
    一張圖看懂遠動通信裝置的<b class='flag-5'>工作流程</b>

    芯片ATE測試詳解:揭秘芯片測試機臺的工作流程

    ATE(自動測試設備)是芯片出廠前的關鍵“守門人”,負責篩選合格品。其工作流程分為測試程序生成載入、參數測量與功能測試(含直流、交流參數及功能測試)、分類分檔與數據分析三階段,形成品質閉環。為平衡
    的頭像 發表于 01-04 11:14 ?2120次閱讀
    芯片ATE測試詳解:揭秘芯片測試機臺的<b class='flag-5'>工作流程</b>

    強強合作 西門子與日月光合作開發 VIPack 先進封裝平臺工作流程

    平臺開發基于 3Dblox 的工作流程。雙方目前已經合作完成三項 VIPack 技術的 3Dblox 工作流程驗證,包括扇出型基板上芯片封裝(FOCoS)、扇出型基板上芯片橋接
    的頭像 發表于 10-23 16:09 ?3860次閱讀
    強強合作 西門子與日月光合作開發 VIPack 先進封裝平臺<b class='flag-5'>工作流程</b>

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

    、直觀的工作流程,利用準確的模型來仿真實際性能,并自動生成關鍵的物料清單和報告等內容,幫助工程團隊更早做出更優決策。
    的頭像 發表于 10-22 09:38 ?1060次閱讀

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

    上周的分享已經介紹了整個參考設計的概況和相關硬件資源。那么,本次會從軟件工程角度進行分享。首先來了解EtherCAT Slave工作流程
    的頭像 發表于 09-28 14:20 ?1204次閱讀
    恩智浦i.MX RT1180跨界MCU驅動EtherCAT的<b class='flag-5'>工作流程</b>

    電芯自動面墊分選裝盒生產線的工作流程解析

    電芯自動面墊分選裝盒生產線的工作流程解析|深圳比斯特自動化
    的頭像 發表于 09-28 10:29 ?480次閱讀

    為什么RT Thread Studio 鏈接器無法正確讀取鏈接文件?

    大家好,我用RT Thread Studio 創建工程,然后下載相應的編譯器,編譯代碼,源碼編譯成功,但是最后鏈接時出現問題: 。。。。
    發表于 09-02 08:22

    請問如何在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 ?1785次閱讀
    在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 ?8437次閱讀
    非技術人員如何用n8n + DeepSeek打造AI自動化<b class='flag-5'>工作流</b>?

    使用智能工具簡化向Arm平臺的遷移過程

    今年二月,Arm 推出了 GitHub Copilot 新擴展程序,助力快速遷移至 Arm 架構服務器。本文將帶你了解開發者該如何利用 GitHub Copilot 和 Arm Runners 來進行無縫構建、測試和部署,從而簡
    的頭像 發表于 03-10 09:22 ?817次閱讀
    使用智能工具簡化向<b class='flag-5'>Arm</b>平臺的遷移過程

    cubeide的代碼怎么編譯到內部+外部FLASH里面去?

    我有一個項目,準備使用GUI和AI,準備使用STM32U5,但是編譯出來的代碼很多,STM32U5的內部FLASH不夠用,準備使用OSPI擴展外部FLASH。但是遇到一個問題,我不知道怎么將編譯
    發表于 03-07 07:48