摘要:MDK配置生产bin文件并通过脚本文件将bin文件重命名然后拷贝到目的文件夹中去。
在嵌入式开发中,MDK(Keil Microcontroller Development Kit)是一个常用的开发环境,尤其在STM32等微控制器的开发中。本文将介绍如何在MDK中配置生成BIN文件,并通过脚本将生成的文件复制到指定文件夹中。这对于版本管理和固件更新非常有帮助。
1、bin文件生成
在MDK中,生成BIN文件通常需要借助 fromelf 工具,它是Keil自带的工具,用于将编译生成的 .axf 文件转换为 .bin 文件。
1.1 配置步骤
- 找到 fromelf 工具的路径 通常, fromelf 工具位于Keil安装目录下的 ARM\ARMCC\bin 文件夹中。例如:
C:\Keil_v5\ARM\ARMCC\bin\fromelf.exe --bin --output ..\DownloadFiles\BMS_MAINCTRL.bin .\Build\BMS_MAINCTRL.axf
说明:
fromelf: D:\keil5\ARM\ARMCC\bin\fromelf.exe
MDK自带工具路径,笔者的路径如上所示,请修改为自己的路径(或者点击右边的文件夹小图标,找到该工具)。
[options]: --bin --output ../OBJ/PWM.bin
生成bin文件命令,想把生成的bin文件放在什么地方(记住路径最前面是 …/(两个点),而不是 ./(一个点),之前就被坑了)。
input_file: ../OBJ/PWM.axf
输入文件,这里是用axf格式的文件转换为bin文件,找到你工程里的axf文件所在位置,填上去就可以了。axf文件路径绝对不允许出现空格。
修改后:
D:\Program Files\Keil_v5\ARM\ARMCC\bin\fromelf.exe --bin --output .\Build\BMS_MAINCTRL.bin .\Build\BMS_MAINCTRL.axf
修改2:
D:\Program Files\Keil_v5\ARM\ARMCC\bin\fromelf.exe --bin --output .\Build\STM32F103ZET6 TESTCODE.bin .\Build\STM32F103ZET6 TESTCODE.axf
//出现了空格
//更改为:
D:\Program Files\Keil_v5\ARM\ARMCC\bin\fromelf.exe --bin --output .\Build\STM32F103ZET6_TESTCODE.bin .\Build\STM32F103ZET6_TESTCODE.axf
2、将生成的HEX文件复制到指定文件夹
为了方便管理和版本控制,我们可以将生成的BIN文件或HEX文件复制到指定文件夹中,并根据时间戳重命名文件。
2.1 原始
在桌面新建一个bat文件,输入以下内容
set filename=V6118_MAIN
set path=V6118_MAIN
::获取日期 将格式设置为:20110820
set datevar=%date:~0,4%%date:~5,2%%date:~8,2%
set timevar=%time:~0,2%
if /i %timevar% LSS 10 (
set timevar=0%time:~1,1%
)
::获取时间中的分、秒 将格式设置为:3220 ,表示 32分20秒
set timevar=%timevar%%time:~3,2%%time:~6,2%
set copyfilename=%filename%-%datevar%-%timevar%
copy %path%\%filename%.hex ..\HEX\%copyfilename%.hex
@echo filename:%copyfilename%.hex
path为hex生成的路径
timevar为获取系统时间
copyfilename表示复制后得到的文件名
copy %path%\%filename%.hex ..\HEX\%copyfilename%.hex表示将对应路径下的hex文件复制到其他上一层路径并命名(名称为copyfilename)
@echo filename:%copyfilename%.hex 表示打印复制后的文件名
保存文件,将文件放入到工程目录如下图所示

打开工程,配置如下

编译结果如下则表示成功

2.2 本工程修改
set filename=BMS_MAINCTRL
set path=Build
::获取日期 将格式设置为:20110820
set datevar=%date:~0,4%%date:~5,2%%date:~8,2%
set timevar=%time:~0,2%
if /i %timevar% LSS 10 (
set timevar=0%time:~1,1%
)
::获取时间中的分、秒 将格式设置为:3220 ,表示 32分20秒
set timevar=%timevar%%time:~3,2%%time:~6,2%
set copyfilename=%filename%-%datevar%-%timevar%
copy %path%\%filename%.hex ..\DownloadFiles\%copyfilename%.hex
@echo filename:%copyfilename%.hex
copy %path%\%filename%.bin ..\DownloadFiles\%copyfilename%.bin
@echo filename:%copyfilename%.bin
filename为hex和bin文件的文件名:BMS_MAINCTRL
path为hex生成的路径:Build
timevar为获取系统时间
copyfilename表示复制后得到的文件名:BMS_MAINCTRL-20220303-165722
copy %path%\%filename%.hex ..\HEX\%copyfilename%.hex表示将对应路径下的hex文件复制到其他上一层路径并命名(名称为copyfilename):..\DownloadFiles
@echo filename:%copyfilename%.hex 表示打印复制后的文件名

3. 总结
通过上述配置,我们可以在MDK中自动生成BIN文件,并通过批处理脚本将文件复制到指定目录并重命名。这不仅方便了版本管理,还提高了开发效率。希望本文对嵌入式开发人员有所帮助。

5806

被折叠的 条评论
为什么被折叠?



