自从接触到stm32的HAL库之后就被HAL库超慢长的编译时间折磨的不要不要的~~~
现在ST也是主推HAL库,标准库不再更新了,F7,、H7也只有HAL库,以后使用HAL库必然是主流,但是HAL库超长的编译时间实在是太磨人了,将许多“新手”“老手”纷纷劝退,有人建议过我更换到IAR,但是MDK用惯了更换IAR用起来不舒服,于是我选择使用MDK的V6编译器。
终于在今天解决了成功升级V6编译器后无法跳转的问题,从今以后就可以愉快的使用HAL库加V6编译器了。现在将MDK编译器V5升级到V6的心得体会分享给大家。
准备工作:官方文档Migrate ARM Compiler 5 to ARM Compiler 6.pdf(MDK官网或者本帖)、官方固件库(ST官网)、MDK5(5.23以上就有,下限到哪没有我也不清楚,大家可以在options->target选项卡的arm compiler里面有没有V6编译器,没有的话版本更新一下就行了)、一款开发板用来验证、USB转TTL用来验证串口。
具体步骤:
可以使用现成的工程修改(注意备份):
1、文件更换:将你的CORE文件夹下的cmsis_armcc.h替换为cmsis_armcc_V6.h(路径:STM32Cube_FW_F1_V1.6.0\Drivers\CMSIS\Include,其他固件库路径类似)
2、如果你使用了正点原子的SYSTEM文件夹,则需要修改sys.c和uart.c
sys.c:AC5和AC6的内联汇编格式不同需要修改为以下形式
也可以直接删除,一般我们用不到这些汇编,参考官方文档
uart.c需要注释以下代码或者直接删掉。
#pragma import(__use_no_semihosting)
//标准库需要的支持函数
struct __FILE
{
int handle;
};
注意不要注释掉了FILE __stdout; 否则串口无法映射到printf;
如果你想新建个AC6的工程只需要在复制CORE文件夹里的文件时将cmsis_armcc.h替换为cmsis_armcc_V6.h即可。
Options选项卡的修改:
Target选项卡:
建议选择第二项,虽然第四项也是一样的,但是如果你以后MDK版本升级了这个选项还是需要再次修改,不然会报错!
C/C++:
Link Time Optimization链接优化,官方文档建议勾选,warnings选择AC5-like warnings没什么警告选ALL warnings警告会相当多
关于Optimization选项选择:
新手建议选择不优化即-O0,优化时速度与代码大小是对立的,即速度快代码大,代码小速度慢,O1到O3是优化速度,Oz是纯粹优化代码大小,Os则是平衡优化,二者兼顾一点。
1、按照下面的AC5与AC6不兼容的指令自行修改
2、将固件库更新至最新版(官方已经做好了)
最后,相关工程压缩包和文档:https://gitee.com/xwl_fighter/stm32ac6_template/tree/master
原创作品,未经权利人授权禁止转载。详情见转载须知。 举报文章
我要举报该内容理由
×