MDK 5.37 error: unknown register name ‘control‘ 和 Error: C9932E: Cannot obtain license for Compiler

一、背景

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相对之前的版本更新了啥,也没感觉出有啥让人眼前一亮的东西。

### 回答1: 错误消息"../core\core_cmfunc.h(629): error: unknown register name 'vfpcc' in asm"是指在汇编代码中的一个未知寄存器名称 'vfpcc'。 'tfpcc'是浮点处理器控制寄存器,用于控制浮点计算的状态。这个错误通常是由于编程错误引起的,可能是由于代码中使用了错误的寄存器名称或者在不支持浮点运算的硬件上尝试执行浮点运算。 要解决这个错误,可以尝试以下几个步骤: 1. 检查代码中是否存在拼写错误或语法错误。确保正确使用寄存器名称,并使用正确的语法指令。 2. 检查编译器和工具链的版本是否支持浮点运算。有时该错误可能是由于使用不支持浮点运算的工具链导致的。在这种情况下,需要更新编译器或选择支持浮点运算的工具链。 3. 确保正确配置了编译器选项和编译器配置文件。有时该错误也可能是由于编译器选项或配置文件错误导致的。检查相应的选项和配置文件,确保它们正确匹配所使用的硬件和库。 4. 检查目标硬件是否支持浮点运算。如果所使用的硬件不支持浮点运算,那么在代码中就不能使用浮点寄存器。可以尝试改用整数运算代替浮点运算,或者考虑更新硬件以支持浮点运算。 总之,要解决这个错误,需要仔细检查代码并确保正确使用寄存器名称和语法指令,同时确保编译器和工具链支持所需的浮点运算。如果问题仍然存在,需要进一步检查硬件支持和编译器配置等因素。 ### 回答2: 出现错误 "../core\core_cmfunc.h(629): error: unknown register name 'vfpcc' in asm" 表示在汇编代码中使用了一个未知的寄存器名 'vfpcc'。 在嵌入式系统中,汇编语言通常用于直接访问寄存器和底层硬件。该错误通常发生在编译器无法识别 "vfpcc" 寄存器的情况下。 若要解决该问题,可以尝试以下几种方式: 1. 检查代码中是否正确引入了相关的头文件。错误可能是由于未正确包含与 "vfpcc" 寄存器相关的头文件引起的。请检查代码中是否存在遗漏的头文件或错误的文件引入。 2. 检查编译器选项。某些编译器需要特殊的选项来启用对特殊寄存器的支持。请检查编译器的文档或相关资料,了解是否需要设置特定的编译器选项。 3. 更新编译器版本。有时,这种错误可能是由于编译器本身的问题引起的。尝试更新编译器到最新版本,其中可能已经修复了与 "vfpcc" 寄存器相关的问题。 4. 查找额外的支持。如果以上方法都无法解决问题,可以尝试在相关的开发者社区或者嵌入式系统的支持论坛上寻求帮助。其他人可能已经遇到和解决了类似的问题,并且能够提供更具体的方法或建议。 总之,错误 "../core\core_cmfunc.h(629): error: unknown register name 'vfpcc' in asm" 指示编译器无法识别 "vfpcc" 寄存器。通过检查代码、编译器选项和更新编译器版本等方法,通常可以解决此问题。 ### 回答3: 这个错误是由于在使用ARM编译器时,在../core\core_cmfunc.h文件的第629行中,遇到了一个未知的寄存器名称'vfpcc'。ARM架构中的VFP(向量浮点)指令集中的一些寄存器名称是由编译器定义的。然而,这个错误表明编译器无法识别'vfpcc'这个寄存器名称。 要解决这个错误,我们可以查阅ARM编译器的文档,确认'vfpcc'是不是一个有效的寄存器名称。如果不是,我们需要检查代码中是否有错误的寄存器使用。 另外,我们还可以检查编译器的版本是否过旧,如果是的话可以考虑升级到最新版本。有时,编译器的错误修复可能在更新的版本中得到了解决。 此外,我们还可以考虑修改代码,以使用正确的寄存器名称或者替换使用'vfpcc'的代码片段。根据具体的代码情况,可能需要进行一些代码调整或者修改相关的编译选项。 总结来说,解决这个错误的方法有:查阅编译器文档,确认寄存器名称是否正确;检查编译器版本,考虑升级;修改代码以使用正确的寄存器名称或者替换相关代码片段。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值