目录

介绍

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…