开发过单片机的同学都对keil不陌生,我们知道keil集成了代码编辑,编译,和调试的功能,极大的方便了我们的开发。但是keil万年不变的代码编辑器对于阅读源代码来说是极其不友好,还有那个已经停止维护的Arm Compiler 5不仅编译慢,还存在隐藏的BUG,都让人难以忍受。
还对Arm Compiler 5和Arm Compiler 6比较陌生的同学,建议首先百度了解一下。
最新版本的MDK虽然只支持到了6.14,但是Arm已经发布了最新版本 6.15,并且在老版本的MDK版本上也可以安装最新版本,安装方法参考傻孩子大佬的文章:惊爆内幕:老MDK也可以使用新编译器
接下来的内容我们来把VScode编辑代码的优点和Arm Compiler 6编译代码的优点结合到一起,来解决使用MDK开发touchgfx项目编译慢,阅读代码不友好的缺点。
软件:MDK V5.29以上,Visual Studio Code;TouchGFXDesigner v4.15,STM32CubeMX V6.0.1
1. 替换freertos的port.c和portmacro.h文件 由于STM32CubeMX自动生成的freertos工程默认的是使用ARM Compiler 5编译,所以需要替换可以使用ARM Compiler 6编译的接口。可以在STM32CubeMX软件包的安装目录中按照自己单片机型号找到对应的文件,然后替换掉cubemx自动生成的port.c和portmacro.h。
由于cubemx每次生成的代码都会自动覆盖,所有如果想永久使用armclang编译器,可以直接把下边目录的文件替换掉。
2.替换touchgfx_core库文件 进入到touchgfx的库目录,可以发现有Keil和Keil6.x两个文件夹,其中Keil6.x文件夹下对应的库便是给AC6用的。可以手动在mdk中把touchgfx_core更换为Keil6.x文件夹下的touchgfx_core库。
3.在MDK中设置编译规则 去掉Short enums/Wchar选项
去掉Micro LIB选项
4. 最后编译,ac6编译速度会比ac5有明显提升
1. 打开VSCODE安装keil插件
设置keil的编译器路径
2. 打开刚才的touchgfx工程
3.集编辑与编译一体的工具大功告成