Keil-MDK编译前后运行用户自定义程序

Keil作为一款经典的嵌入式开发IDE,从51到ARM一直都被众多的开发者使用。今天介绍一下它运行用户程序的功能,也就是在”Target Options”中”User”选项卡之下的内容。

在那些需要自动处理源文件或者转换输出文件的场景中,这部分功能是相当给力的。比如我最近做的一个网络模块。它内置了几个网页用以显示运行状态和配置功能参数,开发的时候要把HTML的源文件转成.h头文件中的字符串。它还提供了固件升级功能,也就是要把固件文件提供给用户,这样固件文件就要加密。另外为了方便调试和追踪代码,还希望能自动提交代码到版本库。

显然,转换HTML文件要在编译之前进行,而固件文件加密和提交代码在编译链接并输出完成之后进行。这样就可以像下面这样设置:

keil-mdk-user-prog

网页转换和加密所用的工具是我用C写的两个命令行下的小程序,操作源文件和输出文件时使用的都是相对路径。如果在上面直接调用这两个小程序的话,会导致找不到正确的文件。所以做了一个.bat的DOS脚本,在调用这些工具之前先CD到相应的目录,比如“加密.bat”这个文件的内容就是下面这几行:

keil-user-bat

这样配合另外一个自动固件升级的程序(每隔500ms检查固件文件,如有变动就自动通过网络升级设备),就可以实现修改源文件后只需点一下keil的生成按钮,就可完成网页转换-编译输出-固件加密-提交代码-固件升级的一系列步骤。大大简化了开发过程,不用再像以前那样先要运行网页转换的程序,然后在keil里生成,再然后运行加密程序、提交代码,最后再固件升级。

另外这样调用命令行程序后,就会把keil的”Build Output”输出窗口作为显示终端。这些命令行程序中如果有printf函数输出,就会直接显示在”Build Output”输出窗口中。

发表评论

电子邮件地址不会被公开。

*