一、背景
2022年6月6日,满心欢喜地下载了时下最新版的 MDK5.37,用于编译基于STM32F4VET6的ROS小车底盘源码。毫不例外地出了问题。
二、流程记录
1、初打开工程时,提示没有设备
于是下载安装了STM32F4的设备包。可以双击安装包安装,也可以按如下步骤手动安装:
步骤③之后,进入设备包保存路径,可以定位到如下
.pack
文件,选择并导入即可:
2、现在有设备了,编译,报错
../CORE\core_cmFunc.h(66): error: unknown register name 'control' in asm
把报错粘贴到百度,大致了解到是编译器太新了,需要切换为旧编译器,步骤如下:
发现2022.6.6最新版的MDK537居然没有自带 Version 5 的编译器,于是按照 这篇博客下载并添加了 Version 5 的编译器。以为随便哪个 Version 5 的编译器都可以,就真随便下了一个,而且随便下载的这个是不用安装的,解压之后直接就是个文件夹放在自定义的路径下就行。但是编译依然会报错,反复使用注册机注册也无果:
Error: C9932E: Cannot obtain license for Compiler
3、于是下载了MDK531版本,编译成功
检查 MDK531 的 Version 5 编译器具体版本号为V5.06 update 6 (build 750)
再根据这篇博客下载安装 V5.06 update 6 (build 750) 的编译器到 MDK537 上,步骤如下:
定位到编译器文件夹所在的文件夹,选择编译器文件夹,添加即可。这样,就可以使用最新版的MDK537编译旧工程了,暂时还不知道MDK537相对之前的版本更新了啥,也没感觉出有啥让人眼前一亮的东西。