Keil:从AC5到AC6

前一阵安装了新版本的Keil,搭配CubeMX使用没有出现什么问题。但是今天查看以前代码的时候发现了一个很尴尬的问题,编译莫名其妙会出现很多问题。先把问题复现一下,在后面会讲如何解决:

1.问题复现

打开一个工程,然后直接编译,并不会现在令人愉快的0 Erros, 0 Warnings,而是一段没见过的提示:

*** Target 'LED' 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.
*** Build aborted.
翻译一下:
*** 目标'LED'使用ARM-编译器'默认编译器版本5',该版本不可用。
*** 请查看已安装的ARM编译器版本。管理项目项目 - 文件夹/扩展程序 "来管理ARM编译器版本。目标的选项 - 目标 "为目标选择一个ARM编译器版本。
*** 构建失败。

于是我打开用CubeMX建的工程看了一下设置,发现那些工程中在Target选项卡中选择的都是version6:

保存设置后重新进行编译,会发现Errors居然有200来个:

2.解决方法

出现该问题的原因是新版Keil使用的是AC6(即Arm Compiler 6)编译器,而旧版Keil使用的是AC5(即Arm Compiler 5)编译器。如果为了以后也使用AC6,那么方法是将AC5的代码移植为AC6;如果工程相当庞大,也可以让新版Keil使用AC5。

2.1.将AC5工程移植到AC6

打开sys.c文件,将代码替换为:

#include "sys.h"void WFI_SET(void)
{__ASM volatile("wfi");
}void INTX_DISABLE(void)
{         __ASM volatile("cpsid i");
}void INTX_ENABLE(void)
{__ASM volatile("cpsie i");
}void MSR_MSP(u32 addr)
{__ASM volatile("MSR MSP, r0");           //set Main Stack value__ASM volatile("BX r14");
}

打开usart.c文件,将下面这一段代码

#if 1
#pragma import(__use_no_semihosting)struct __FILE
{int handle;
};

替换为

#if 1
__ASM (".global __use_no_semihosting");

再次编译,依然有很多问题:

我们在设置中更改这两项的选项:

再次编译:

还有4Errors, 1Warnings。我们在Manage Project Items处将core_cm3.c移除:

移除后再次编译就无错误了:

烧录一下也没有问题,LED0常亮:

参考文献:

Migrate from ARM C/C++ Compiler 5 to ARM Compiler 6

Update ARM Compilation Tools

2.2.在新版本Keil中添加AC5编译器

前往Arm Compiler 5 (ACOMP5)下载AC5,笔者选择的版本是Arm Compiler 5.06 update 7。也可以选择其他版本:

注意操作系统的选择:

下载好后安装,将其安装到Keil所在的安装目录下。例如笔者安装在D:\Keil_v5,则AC5就安装到D:\Keil_v5\Arm\目录下。如图所示:

打开工程,打开Manage Project Items,点击Folders/Extensions选项卡:

点击ARM Compiler右侧的拓展选项:

点击新增ARM Compiler:

选中刚刚安装的AC5,点击确定,保存后关闭选项卡。在设置中选择使用AC5:

成功编译:

参考文献:

What should I do if I want to download a legacy release of Arm Compiler?

Arm Compiler downloads index

PS.使用此方法也可以在旧版Keil里使用AC6,只需要在官网下载一个AC6即可。

3.何为AC5?何为AC6?

Arm Compiler 5(即AC5),在Keil MDK V4版本及V5早期的版本都是使用AC5。在2015年的时候,AC6发布了,并在随后新版本的MDK中集成了AC6,直到现在最新版本的MDK集成了AC6.18。用户可以通过2.1一节中的方法修改AC5或AC6的版本。

AC5在编译时可以选择3种优化级别或者是不优化:

AC6在编译时可以选择6种优化级别或者是不优化:

同时,还可以选择C的版本:

关于每个优化级别具体是怎样优化的等等更详细的内容在此就不展开了。

【软件入门】Keil:从AC5到AC6相关推荐

  1. keil MDK AC5向AC6迁移后如何重定向printf

    从AC5向AC6迁移,已经有很多人给出了迁移的教程,AC6的编译速度着实非常有吸引力,我也尝试根据网上的教程从AC5向AC6迁移,但程序执行到printf的时候便会有问题. 有问题的重定向代码: /* ...

  2. Keil MDK使用编译器AC5与AC6生成浏览信息的差异

    关注+星标公众号,不错过精彩内容 作者 | strongerHuang 微信公众号 | 嵌入式专栏 很多使用过Keil MDK的工程师都发现了一个问题,Keil MDK编译代码的时候,速度很慢. 编译 ...

  3. Keil MDK 编译器 AC5 和 AC6 优化选项重要内容和区别

    关注.星标公众号,不错过精彩内容 整理:黄工 参考来源:Arm官网 使用过Keil MDK (Arm Compiler 6)编译器V6版本的读者应该发现了一个问题,V6版本速度比V5版本编译速度快很多 ...

  4. STM51嵌入式开发入门软件安装-Keil、stc、驱动

    STM51嵌入式开发入门软件安装-Keil.stc.驱动 STM51嵌入式开发入门软件安装-Keil.stc.驱动 1 Keil安装 1.1 百度进入官网 1.2 选择C51,点击后需要填的信息随便填 ...

  5. 【STM32F429的DSP教程】第6章 ARM DSP源码和库移植方法(MDK5的AC5和AC6)

    完整版教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=94547 第6章   ARM DSP源码和库移植方法(MDK5的AC5 ...

  6. [keil5]从AC5到AC6的转变

    具体步骤: 可以使用现成的工程修改(注意备份):1.文件更换:将你的CORE文件夹下的cmsis_armcc.h替换为cmsis_armcc_V6.h(路径:STM32Cube_FW_F1_V1.6. ...

  7. 实战技能分享,如何让工程代码各种优化等级通吃,含MDK AC5,AC6,IAR和GCC

    目录 引出问题: MDK设置方法(AC5和AC6): 1.开启优化后,部分功能不正常 2.开启优化后,直接整体卡死 AC5设置方法: AC6设置方法: IAR设置方法: 1.开启优化后,部分功能不正常 ...

  8. 韦东山 IMX6ULL和正点原子_「正点原子NANO STM32开发板资料连载」第三章 MDK5 软件入门1...

    1)实验平台:ALIENTEK NANO STM32F411 V1开发板 2)摘自<正点原子STM32F4 开发指南(HAL 库版>关注官方微信号公众号,获取更多资料:正点原子 第三章 M ...

  9. STM32CubeMX实战教程(一)——软件入门

    软件入门 前言 新建工程 界面简介 MCU 外设配置 时钟树 工程设置 工具 生成代码 代码分析 main.c gpio.c stm32f4xx_it.c 程序下载 现象 结语 前言 STM32Cub ...

最新文章

  1. linux简单设计与实现代码,《linux内核设计与实现》第五章(示例代码)
  2. [2019BUAA软件工程]第1次阅读作业
  3. Python 学习之元组
  4. sv编程语言_SV及UVM高级话题篇之一:SystemVerilog开源公共库(上)
  5. Java Date Time 教程
  6. 【数据结构与算法】广度优先遍历(BFS) 深度优先遍历(DFS)
  7. java ssdb 操作link遍历map的两种方式
  8. 网站迁移或者调整页面链接的方法
  9. 阿里取消“361”绩效考核,不写周报不鼓励加班?
  10. python椭圆曲线加密_如何理解椭圆曲线加密并对其进行编码
  11. PHP程序员面临的成长瓶颈
  12. webSocket和http长连接短连接
  13. 基于深度学习的AI疲劳检测系统
  14. 计算机学硕比专硕累吗,2019计算机考研常识:学硕与专硕对比
  15. [转]短信验证码如何防止不恶意点击被刷!
  16. Ubuntu 安装 OpenFOAM + PETSc
  17. 读书笔记 摘自:《创业就是要细分垄断》
  18. 跳转到三方App ,三方App 是如何返回自己的App的
  19. 人工智能科技出海服务公司ADVANCE.AI助力企业开拓尼日利亚市场
  20. CSS样式之实现水平排列块元素的几种方式

热门文章

  1. 做短视频千万不要错过这5个视频素材网
  2. 串口传输bin文件-C - kermit工具、kermit协议
  3. 国际高中成绩差但是想读名校怎么办(文末附自救指南)
  4. 关于内存类型 UDIMM、RDIMM、LRDIMM 的学习结论(转)
  5. 1000款水墨墨迹毛笔素材
  6. CentOS (linux) 启动错误 *** Run 'setenforce 1'to reenable. 解决
  7. ubuntu18.04+cuda9.0+lenovo y430p(GTX850M)亲测可用
  8. 支持向量机SVM--线性
  9. Docker学习手记-1
  10. rem 用户改变字体大小_用户可以更改字体大小