当前时间: 2026-01-14 16:14:09
分类:软件教程
评论(0)
Keil 生成 *.bin 文件的配置说明
它是二进制文件(Binary File)的简称,文件内存储的是纯粹的机器码(0或1);在MCU烧录的bin文件中,你看到的这些数据对应的是Flash内存地址中的实际值。
相比hex文件,bin文件在大批量产烧录和OTA升级这两个场景下具有绝对的优势;因为bin文件直接存储原始机器码,不需要进行解析,直接插入Flash中;体积更小,烧录和传输耗时更短。
Keil在默认条件下,编译程序生成的是.hex文件,如下:
如果要生成.bin文件,则需要调用Keil内置的fromelf工具,这个工具可以在编译后自动生成bin文件,配置方法如下:
步骤2:①、点击“User”选项卡;②、勾选“Run #1” 表示在构建编译后需要执行此项操作;③、在命令行中写入命令<fromelf.exe –bin -o “$L@L.bin” “#L“>,这个命令的含义解析:fromelf.exe 表示调用ARM编译器提供的ELF格式转换工具,这个工具在keil安装路径的ARM\ARMCLANG\bin\文件夹下;–bin 表示指定输出格式为二进制;-o “$L@L.bin”表示指定输出文件的路径和名称,拆开分析 $L:表示当前项目输出目录的路径(即output文件夹),@L:表示使用当前项目的名称(不带扩展名);“#L” 表示转换的目标文件是Keil编译后生成的ELF文件(也就是.axf或.elf后缀的文件);
步骤3:①、切换到“Ouput”选项卡;②、设置项目名称,这里设置好的名称就是最后bin文件的名称;设置完成后,点击编译。
编译完成后,会执行上述设定的命令,同时在输出文件夹中,可以找到生成的bin文件。
遇到复杂的项目,为了后期维护升级方便,MCU的软件设计一般都会采用 Bootloader + App这种模式,Bootloader程序是从0x08000000开始,而App则需要修改在Flash中的起始地址,比如从0x08008000开始,批量生产时将这两段程序编译为.bin文件,产线通过J-Flash等烧录工具,再将两端程序烧录到MCU的Flash中。
实现的方式是先生成Bootloader的.bin文件;①、切换到Target选项卡;②、设置Bootloader的起始地址;③、设置占用空间大小;最后按照上一小节的操作步骤取bin文件。
然后生成App的bin文件;①、切换到Target选项卡;②、设置Bootloader的起始地址;③、设置占用空间大小;最后取App的bin文件。
后续程序升级时,只需要App的bin文件,使用上位机程序+Bootloader即可完成App的程序升级,这种方式在工业现场,无网络、设备结构复杂的场合下非常实用。
以上就是Keil生成 .bin 文件的配置流程,以及bin文件的应用场景;
操作很简单,重要的是,要知道用在哪里、怎么用、为什么用~