Nucleo-L476运行FreeRTOS学习4 - Keil Compiler V6使用方法
在使用cubemx学习FreeRTOS时,生成的工程使用的时hal库,编译速度巨慢,本文采用Keil编译器由V5到V6的迁移
本文使用的keil版本为V5.25
Compiler V6发布已经好几年了,Arm Compiler 6是一个基于LLVM的工具链,那LLVM是什么呢?简单来说LLVM是把语法分析和机器码生成分开成两个独立部分。这样移植编译器到新构架就很容易了,你只要修改机器码生成部分,语法分析不用改。GCC的编译器这两部分是混在一起的。LLVM与GCC比较优点很多。比如错误信息详细,编译快等等。感兴趣的可以自行查一下。
一般来讲LLVM的语法分析部分是从GCC继承过来的。所以吗,语法规则和GCC是差不多的。说了这么多其实就像告诉你一件事,Arm Compiler 6的C和汇编的语法和GCC是差不多的。
下面开始设置:
1. 设置keil
选择使用V6.9
这块配置如下:
2. FreeRTOS配置
主要由于CUBE生成的port.c、 portmacro.h不支持GNU,内部有大量的内联汇编,需更换为GCC版本。
将FreeRTOS源码中的GCC/ARM_CM4F内的port.c portmacro.h替换到项目目录
① 源码库文件路径见下图:(我用的是FreeRTOS的V10.3.0的源代码库替换,项目中用的是V10.0.1,替换之后可以正常编译和运行,有没有区别可以自行查一下) 我使用的文件见可下载: https://download.****.net/download/Paul_Yu_Zhang/12154191
② 项目工程的文件路径为:(我这是已经替换过了,压缩包时我原文件的备份)
3. 替换之后编译运行
尝试编译一下,没有错误,速度比之前用V5时速度提升好多倍;
至此,替换完成。