最新KEIL软件中编译器不再支持AC5解决方案

最新KEIL软件中编译器不再支持AC5解决方案

一、前言

新版Keil使用的是AC6(即Arm Compiler 6)编译器,而旧版Keil使用的是AC5(即Arm Compiler 5)编译器。KEIl5最新版本官方不再默认安装V5编译器,也就是KEIl5软件中已经没有了AC5(即Arm Compiler 5),最新的支持AC6(即Arm Compiler 6),导致某些代码无法兼容。新版本的KEIl5,搭配CubeMX使用没有出现什么问题。在查看正点原子代码的时候,编译莫名其妙会出现很多问题,就是因为编译器不再支持AC5(即Arm Compiler 5),只支持AC6(即Arm Compiler 6),所以出现部分代码不支持出现报错和警告。因此现在解决方案就有两个:一个是重新安装AC5(即Arm Compiler 5);另一个是根据现在的编译器来进行配置,进行代码修改兼容将AC5的代码移植为AC6。

二、问题复现

打开一个工程,然后直接编译,出现一段没见过的提示:

在这里插入图片描述

*** Target ‘Target 1’ uses ARM-Compiler ‘Default Compiler Version 5’ which is not available.
*** Please review the installed ARM Compiler Versions:
‘Manage Project Items - Folders/Extensions’ to manage ARM Compiler Versions.
‘Options for Target - Target’ to select an ARM Compiler Version for the target.
*** Rebuild aborted.
翻译一下:
*** 目标’Target 1’使用ARM-编译器’默认编译器版本5’,该版本不可用。
*** 请查看已安装的ARM编译器版本。
管理项目项目 - 文件夹/扩展程序 "来管理ARM编译器版本。
目标的选项 - 目标 "为目标选择一个ARM编译器版本。
*** 构建失败。

使用CubeMX建的工程看了一下设置,发现那些工程中在Target选项卡中选择的都是version6;保存设置(Arm Compiler:Use default compiler version 6)后重新进行编译,会发现Errors以及Warnings会有好多个。

在这里插入图片描述

在这里插入图片描述

三、解决方案

方案一:直接安装AC5(即Arm Compiler 5)

1、前往Arm Compiler 5 (ACOMP5)下载AC5,选择的版本是Arm Compiler 5.06 update 7。也可以选择其他版本:
注:下载链接:https://developer.arm.com/downloads/view/ACOMP5

在这里插入图片描述

2、根据操作系统选择下载版本,笔者的是window11选择的是Win32。

在这里插入图片描述

3、下载好进行解压,解压后进入解压后的文件夹并且选中setup.exe,右击鼠标点击以管理员身份运行进行安装,将其安装到Keil所在的安装目录下。例如笔者安装在D:\KEIL5\Keil_v5_Arm&C51,则AC5就安装到D:\KEIL5\Keil_v5_Arm&C51\Arm目录下,如图所示:
注:为便于管理给AC5编译器新建一个文件夹ARMCC,把AC5安装文件放置在ARMCC中。
一般来讲,AC5编译器的放置位置与ARMCLANG在同一级文件夹下。

在这里插入图片描述在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

4、打开工程,打开Manage Project Items(标号1);点击Folders/Extensions选项卡(标号2);点击ARM Compiler右侧的拓展选项(标号3);点击Add another ARM Compiler Version to List;选中刚刚安装的AC5(刚安装好的ARMCC文件夹),点击确定,保存后关闭选项卡。在设置中选择使用AC5(Arm Compiler:Use default compiler version 5)后重新进行编译,编译成功。

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

方案二:将AC5工程移植到AC6

一、按照官方文档说明进行配置

1、Switch the Compiler in µVision IDE

即配置工程,将编译器切换到AC6:Project(标号1) -> Option for Target (标号2)-> Target(标号3).Arm Compiler下拉框中选择Use default compiler version 6或者V6.18(标号4)

在这里插入图片描述

在这里插入图片描述

2、Diagnostic Settings: Warnings and Errors和Object and Library Compatibility

即诊断设置,也就是配置工程,编译时警告输出的方式:先切换到AC6(1.Switch the Compiler in µVision IDE(即上一步配置工程)),再配置(默认AC5-like即可)。关于使用库存在的一些问题,在编译的时候,添加关键字: -fshort-enums & -fshort-wchar(一般默认都是添加了的),按照下图进行配置即可。

在这里插入图片描述

这里想说一点:V6编译器检查的规则更加严格,简单来说,就是编译的警告会更多。如以前的一些代码编译都是没有警告,但用V6就可能有警告。

3、Incompatible Language Extensions

即V5和V6的指令不兼容,我们需要修改不兼容的代码。其实,就那么几条不兼容的语句,编译之后见到的错误基本就是由于这些语句的不兼容导致的。

在这里插入图片描述

4、Data Packing

这里主要是说数据结构,也是上面的指令不兼容的问题。如果之前使用typedef __packed struct定义,则替换成:__PACKED_STRUCT。

5、Assembler Migration

汇编迁移:这一节可以说是重点。

很多RTOS都有一个或多个与汇编有关的源代码文件,所以,很多有RTOS的工程,编译后都会存在许多错误。常见的就是“asm”这个关键字。
文件中大概说明了:兼容GNU标准,不兼容ARM标准。其中还特别强调了关于Inline Assembler的一点,仅支持GNU标准:
在这里插入图片描述

二、修改源代码

根据上面说明,已经修改完工程配置。接下来就需要修改源代码,如果兼容的源代码,替换即可; 如果没有,就只有按照官方说明一步一步修改。

使用官方提供的、兼容V6的代码替换这种快捷解决问题的办法。

解决CMSIS不兼容问题

如果我们安装了最新的MDK-ARM,在安装目录下都有这些文件。

在这里插入图片描述

如果MDK-ARM安装目录下不是最新的CMSIS文件。则需要下载最新的CMSIS文件替换你工程中CMSIS文件。
注:CMSIS文件下载地址:http://www.keil.com/dd2/Pack

例如笔者的安装目录为D:\KEIL5\Arm\Packs\ARM\CMSIS\5.9.0
其中5.9.0即为CMSIS文件的版本,并且从CMSIS文件下载地址网站可以看出CMSIS文件最新版本为5.9.0。若在CMSIS文件下载地址网站有最新版本,则需要下载最新的CMSIS文件替换你工程中CMSIS文件

在这里插入图片描述

若下载了最新的CMSIS文件(标号1),双击标号1,弹出安装界面,然后点击弹出界面的“Next"(标号2),即可完成安装最新的CMSIS文件。

在这里插入图片描述

这种方法可解决Cortet-M等处理器程序编译的错误问题,如STM32F0、F1、F4等Cortet-M等程序。

针对正点原子解决CMSIS不兼容问题

若使用的是正点原子的标准库程序,则需要按照下面两图进行配置,如图所示:

在这里插入图片描述

在这里插入图片描述

这种方法可解决正点原子标准库程序Cortet-M等处理器程序编译的错误问题,如STM32F0、F1、F4等Cortet-M等程序。

  • 12
    点赞
  • 79
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值