Keil編譯文件格式轉換全解析

目錄

介紹

Keil自帶常用命令概覽

fromelf介紹

Keil可燒錄文件概述

核心差異概覽

.axf文件獲取

.hex文件獲取

.bin文件生成

?編輯

補充:生成可執行文件的匯編代碼(.asm文件)

Keil自帶常用命令詳解

核心功能??

??格式轉換??

??輸出路徑與文件名自動化?

工作流程??


介紹

????????首先,要明確的是:對于Before Build/Rebuild和After Build/Rebuild這樣的指令,這是在Keil的User設置頁面定義的用戶自定義命令,它會在Build/Rebuild執行前/后自動執行。來執行用戶希望的一些操作。用戶在User Command中填寫腳本指令,腳本可以是自己編寫,也可以是Keil自帶。最后通過是否勾選Run #前面的勾選框,來決定腳本是否運行。

Keil自帶常用命令概覽

fromelf --bin -o "$L@L.bin" "#L"fromelf --text -s -o "$L@L.sym" "#L"fromelf --text -c -o "$L@L.asm" "#L"

fromelf介紹

大家可以在類似的Keil路徑下找到Keil編譯所用到的工具,如下圖,其中fromelf.exe用于對生成工程文件進行格式轉換的,其它.exe的作用可以自行了解,本文不敘述。

Keil可燒錄文件概述

上文提到fromelf.exe用于對生成工程文件進行格式轉換,keil生成的可燒錄文件一般是三種。

  • bin文件(只有程序的二進制數據,沒有任何“標簽”):需手動指定起始地址。
  • hex文件(Intel制定的標準十六進制文件):包含地址信息(可以直接下載)。
  • axf文件(ARM芯片使用的文件格式,全稱ARM Executable File):包含調試信息,debug用。

核心差異概覽

??特性????.axf?? (ARM Executable Format)??.hex?? (Intel HEX)??.bin?? (Binary Image)
??內容??機器碼 + 調試信息 + 地址信息機器碼 + 地址信息 + 校驗和純二進制機器碼
??地址信息??? 包含(調試用)? 自帶存儲地址(燒錄自動定位)? 無(需手動指定起始地址)
??調試信息??? 完整(符號表、函數名、變量地址等)? 無? 無
??文件大小??最大(含額外調試數據)中等(ASCII格式,體積約為bin的2倍)最小(純二進制)
??可讀性??? 需專用工具解析? 文本格式,可用記事本查看? 二進制,需HEX編輯器查看
??燒錄方式??不直接燒錄(需轉換)直接燒錄(工具自動解析地址)直接燒錄(需手動輸入地址)
??典型應用??開發調試階段(Keil Debug/J-Link J-Scope)量產燒錄、串口升級、通用編程器支持Bootloader、OTA升級、存儲敏感場景

.axf文件獲取

.axf文件,keil默認生成,使用下載器(如J-Link)下載時/Debug調試時,下載的就是.axf文件。

.hex文件獲取

勾選"Create HEX File"選擇框以生成hex文件。

.bin文件生成

在"After Build/Rebuild"對應的命令行添加生成。

注意:.bin文件生成的時機。

.axf文件是Build/Rebuild生成;.bin文件是由.axf文件生成的,所以這個User Command是放在After Build/Rebuild".

fromelf --bin -o "$L@L.bin" "#L"

補充:生成可執行文件的匯編代碼(.asm文件)

????????另外,.axf文件也可以生成.asm文件,像C/C++這些高級語言一樣,asm(匯編)也是編程語言的一種(底層編程語言),只不過更接近底層,必要時更能幫助開發者分析程序底層邏輯、優化性能或調試問題。

????????需要區分的一點是,編程語言(如C/C++,ASM)直面用戶,用戶可以直接編程;經編譯生成的機器語言(如.axf/.hex/.bin)是硬件(如單片機)能夠讀懂的。

Keil自帶常用命令詳解

常用的也就以下三個,下面以fromelf.exe --bin -o "$L@L.bin" "#L"詳解使用方法。?

??命令示例????輸出內容????應用場景??
fromelf --bin -o "$L@L.bin" "#L"二進制機器碼(.bin)固件燒錄、量產部署
fromelf --text -s -o "$L@L.sym" "#L"符號表(函數/變量地址)內存布局分析、鏈接優化
fromelf --text -c -o "$L@L.asm" "#L"反匯編代碼(.asm)底層調試、性能調優

????????在Keil編譯器中,命令?fromelf --bin -o "$L@L.bin" "#L"?主要用于在編譯完成后自動將生成的?.axf?可執行文件轉換為可直接燒錄到嵌入式設備的二進制文件(.bin)。以下是其詳細作用及工作原理解析:

核心功能??

??格式轉換??

  • --bin?參數指定輸出為二進制格式(.bin),該格式僅包含純機器碼,不含調試信息或符號表,適合直接燒錄到微控制器的Flash中。
  • 輸入文件?#L?指向Keil編譯生成的?.axf?文件(ARM Executable Format),包含完整的程序代碼、數據及調試信息。

??輸出路徑與文件名自動化?

假設.axf文件的絕對路徑是:D:\project\output\app.axf?

"$L@L.bin":動態生成輸出文件的路徑和名稱:

  • $L:表示?.axf?文件的??目錄路徑??(不含文件名),例如?D:\project\output\
  • @L:表示?.axf?文件的??主文件名??(不含擴展名),例如若?.axf?文件為?app.axf,則?@L?為?app"$L@L.bin"組合后輸出路徑如?D:\project\output\app.bin

"#L":表示輸入的.axf文件的完整地址

  • #L:表示完整的?.axf?文件路徑(含文件名),例如?D:\project\output\app.axf

工作流程??

  • ??編譯觸發??:當Keil完成代碼編譯并生成?.axf?文件后,該命令作為“構建后操作”(After Build/Rebuild)自動執行。
  • ??轉換過程??:fromelf.exe?解析?.axf?文件,提取純二進制數據,生成?.bin?文件,并保存到指定路徑。
  • ??輸出位置??:生成的?.bin?文件默認位于與?.axf?相同的目錄中(通過?$L?指定),文件名與工程設置的 ??“Name of Executable”?? 一致。

注意:如果編譯時候報錯,一般的可能是文件路徑問題。注意在下面的設置頁正確設置存儲路徑和文件名,確保輸出目錄存在。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/89691.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/89691.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/89691.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

World of Warcraft [CLASSIC] The Ruby Sanctum [RS] Halion

World of Warcraft [CLASSIC] The Ruby Sanctum [RS] Halion 紅玉圣殿海里昂 清小怪小德可以睡龍類 打完3個副官就激活 【海里昂】 第一階段:外面環境(現實位面)火抗光環 第二階段:內場環境(暗影環境)暗…

Excel基礎:格式化

Excel格式化是指對單元格內容進行視覺呈現方式的調整,它不改變實際數據內容,但能顯著提升數據的可讀性,根據格式應用的范圍,格式可分為"單元格格式"和"數據格式"。本文介紹了這兩類格式的主要設置方法&#x…

基于STM32單片機車牌識別系統攝像頭圖像處理設計的論文

摘 要 本設計提出了一種基于 32 單片機的車牌識別系統攝像頭圖像處理方案。該系統主要由 STM32F103RCT6 單片機核心板、2.8 寸 TFT 液晶屏顯示、攝像頭圖像采集 OV7670、蜂鳴器以及 LED 電路組成。 在車牌識別過程中,STM32F103RCT6 單片機核心板發揮著關鍵的控制作用…

React hooks——useCallback

一、簡介useCallback 是 React 提供的一個 Hook,用于緩存函數引用,避免在組件重新渲染時創建新的函數實例,從而優化性能。1.1 基本語法const memoizedCallback useCallback(() > {// 函數邏輯},[dependencies] // 依賴項數組 );第一個參數…

跨個體預訓練與輕量化Transformer在手勢識別中的應用:Bioformer

目錄 一、從深度學習到邊緣部署,手勢識別的新突破 (一)可穿戴設備 邊緣計算 個性化醫療新可能 (二)肌電信號(sEMG):手勢識別的關鍵媒介 (三)挑戰&#…

無線調制的幾種方式

不同的調制方式在 頻譜效率、抗干擾能力、功耗、實現復雜度 等方面存在顯著差異。以下是主要調制方式的對比分析:一、調制方式的核心區別調制方式原理頻譜效率抗干擾能力功耗典型應用AM改變載波振幅低差(易受噪聲影響)較高廣播電臺FM改變載波…

五分鐘系列-網絡性能測試工具iperf3

目錄 一、iperf3 是什么? 二、為什么需要 iperf3? 三、iperf3 的主要測量指標 四、安裝 iperf3 五、基礎使用模式(命令行參數示例) 1. 啟動 Server 端 (必須) 2. 啟動 Client 端進行測試 (最常見) 基本 TCP 測試 (10秒) …

LiFePO4電池的安全詳解

一、電池的制作過程 鋰離子電池的五大核心組成部分:正極、負極、電解液、隔膜和外殼。 正極:把正極材料(如LiFePO?)+ 導電劑(如炭黑)+ 粘結劑(如PVDF)混合成漿料,涂覆在鋁箔上,然后烘干、輥壓。 負極:把負極材料(如石墨)+ 導電劑 + 粘結劑混合成漿料,涂覆在銅…

S7-200 SMART PLC: SMART 200 CPU 密碼設置及權限設置方式

在工業自動化控制中,SMART 200 CPU 的安全穩定運行直接關系到整個系統的可靠運作,而組態系統安全則是保障 SMART 200 CPU 安全的核心環節。通過合理設置密碼及相關安全參數,能為 SMART 200 CPU 構建一道堅固的防護屏障,有效保護用…

Datawhale AI數據分析 作業

一、 貸款批準預測數據集1. 數據探索與理解prompt 1:這是訓練數據,目的是貸款批準預測數據集上訓練的深度學習模型生成的數據,旨在使用借款人信息預測貸款批準結果,它通過模擬真實貸款審批場景,幫助金融機構評估借款人風險。 請展…

100條常用SQL語句

一、基本查詢語句 查詢所有數據: SELECT * FROM 表名; 查詢特定列: SELECT 列名1, 列名2 FROM 表名; 條件查詢: SELECT * FROM 表名 WHERE 條件; 模糊查詢: SELECT * FROM 表名 WHERE 列名 LIKE ‘模式%’; 排序查詢: …

Visual Studio編譯WPF項目生成的文件介紹

文章目錄一、Summarize主要輸出文件1. **可執行文件 (.exe)**2. **程序集文件 (.dll)**3. **PDB 文件 (.pdb)**資源與配置文件1. **XAML 編譯文件 (.baml)**2. **資源文件 (.resources)**3. **應用程序配置文件 (.config)**依賴文件1. **引用的 NuGet 包**2. **引用的框架程序集…

「Chrome 開發環境快速屏蔽 CORS 跨域限制詳細教程」*

Chrome 開發環境快速屏蔽 CORS 跨域限制【超詳細教程】 📢 為什么需要臨時屏蔽 CORS? 在日常前后端開發中,我們經常會遇到這樣的報錯: Access to fetch at https://api.example.com from origin http://localhost:3000 has been …

Linux命令大全-df命令

一、簡介df(英文全拼:display free disk space) 命令用于顯示或查看文件系統(或磁盤)的空間使用情況,包括總容量、已用空間、可用空間、使用率和掛載點等信息。二、語法df [選項]... [文件]...參數參數說明…

《程序員修煉之道》第一二章讀書筆記

最近在看《程序員修煉之道:通向務實的最高境界》這一本書,記錄一下看書時的一點淺薄感悟。務實程序員不僅是一種技能水平的體現,更是一種持續修煉、不斷反思并主動承擔責任的過程。對自己的行為負責是務實哲學的基石之一。在重構CRM時面對文檔…

ArcGISPro應用指南:使用ArcGIS Pro創建與優化H3六邊形網格

H3 是由 Uber 開發的一個開源地理空間分析框架,旨在通過將地球表面劃分為等面積的六邊形網格來支持各種地理空間數據分析任務。每個六邊形單元在 H3 系統中都有一個獨一無二的標識符,即 H3 指數。這種網格系統不僅能夠覆蓋全球,而且適用于任何…

xss-dom漏洞

目錄 靶場搭建 第一關 第二關 第三關 第四關 第五關 第六關 第七關 第八關 靶場下載地址:https://github.com/PwnFunction/xss.pwnfunction.com 靶場搭建 將文件用clone 下載到ubuntu, 然后進入 cd xss.pwnfunction.com/hugo/ 這個目錄下 hu…

BPE(字節對編碼)和WordPiece 是什么

BPE(字節對編碼)和WordPiece 是什么 BPE(字節對編碼)和WordPiece 是自然語言處理中常用的子詞分詞算法,它們通過將文本拆分為更小的語義單元來平衡詞匯表大小和表達能力。 BPE(Byte Pair Encoding,字節對編碼) 原理 初始化:將文本按字符(或Unicode字節)拆分為最小…

Java行為型模式---狀態模式

狀態模式基礎概念狀態模式(State Pattern)是一種行為型設計模式,其核心思想是允許對象在內部狀態發生改變時改變它的行為,對象看起來好像修改了它的類。狀態模式將狀態相關的行為封裝在獨立的狀態類中,并將狀態轉換邏輯…

重學Framework Input模塊:如何實現按鍵一鍵啟動Activity-學員作業

需求背景: 近來vip群里學員朋友有問道一個需求,大概需求就是他們做TV的Framework開發,想要遙控器有一個新定義的兒童節目按鍵,想要實現這個按鍵按下后就跳轉到兒童節目的Activity。需求拆解及作業要求: 針對上面需求&a…