目录

Keil 4 与 Keil 5 的兼容性

目录

前言

2013 年 10 月,Keil 公司(被 ARM 公司收购)正式发布 Keil uVision5 IDE,相比 Keil 4 最大的区别是其增加了 Software Packs,可以独立于工具链进行添加更新芯片支持库和软件中间库,并且 SWD 下载速度提升到了 50M。由于 Keil 5 内部架构升级还是比较大,与 Keil 4 存在一些兼容问题,需要我们来解决。补充:Keil 软件资源下载请移步到《安富莱电子》,J-Link 驱动请移步 《segger 官网下载》。

方法

1、Keil 4, Keil 5 共存安装

因为使用 Keil 4 开发已经很长一段时间了,很多工程是 Keil 4 工程格式,暂不想将它们改为 Keil 5 工程格式,怕编译器更改影响编译的目标文件,引发原程序新 BUG 的产生,最好的方法是在同一系统环境里同时安装 Keil 4 和 Keil 5。但由于软件认为是版本的升级,不允许两版本软件共存,需要我们作出特别处理。不过本人更推荐安装:官方专用的 keil 5 兼容 keil 4 工程补丁(MDKCM 525.EXE - 安富莱电子提供下载),安装补丁后 keil 5 可直接打开 Keil 4 工程,此后如果想把 Keil 4 工程改为 Keil 5 工程,直接把 xxx.uvproj、xxx.uvopt 另存在为 xxx.uvprojx、xxx.uvoptx,再使用 Keil 5 打开即可。

1、要先安装 Keil 4,再安装 Keil 5,还要求安装到不同目录:

../img/20220327_02_01.jpg

1.2、按win+r键运行,输入regedit打开注册表:

../img/20220327_02_02.jpg

1.3、修改 Keil 4 版本的 exe 启动路径:

../img/20220327_02_03.jpg

1.4、修改 Keil 5 版本的 exe 启动路径:

../img/20220327_02_04.jpg

1.5、之后打开 Keil 4 和 Keil 5 工程就互不干扰了。

2、Keil 4 打开源文件卡死

之前用高版本的 Keil 5 打开过工程(没更改工程扩展名),现在用低版本的 Keil 4 打开就会出现:打开源文件直接跳至最后一行卡死。解决方法:打开工程关闭所有窗口文件,然后全部保存,关闭 Keil,再次打开就可以了。还有一方法:直接删除 .uvopt、.uvopt.bak、.uvproj.bak 文件(但可能会影响某些工程配置)。

../img/20220327_03_01.jpg

3、Keil 4 打开 Keil 5 工程

某些情况下需要使用 Keil 4 打开 Keil 5 工程(例如:还没安装 Keil 5),而软件一般是高版本向低版本兼容,低版本不能打开高版本。对于没有使用 Software Packs 的 Keil 5 工程只需要修改里面几项内容后,即可使用 Keil 4 打开。

3.1、复制两个工程文件,并更改扩展名:

../img/20220327_04_01.jpg

3.2、修改工程项目文件里面内容:

../img/20220327_04_02.jpg
../img/20220327_04_03.jpg

3.3、最后即可打开上图的project.uvproj工程并使用。

补充:但某些情况下可能出现编译“Error: XXXXXX: type of input file ‘xxxxxx’ unknown”错误时,需要手工对每个包含路径更新一遍:

../img/20220327_04_04.jpg

4、Keil 5 打开 Keil 4 工程

为了 Keil 5 能“原汁原味”地打开 Keil 4 工程,我们可以安装兼容包(Arm7、Arm9、Cortex-R 为 MDK79525.EXE,Cortex-M 为 MDKCM 525.EXE):MDKCM 525.EXE - 安富莱电子提供下载)。安装兼容包后 keil 5 可直接打开 Keil 4 工程,此后如果想把 Keil 4 工程改为 Keil 5 工程,直接把 xxx.uvproj、xxx.uvopt 另存在为 xxx.uvprojx、xxx.uvoptx,再使用 Keil 5 打开即可(Keil 5 会自动修正文件相关内容)。

5、Keil 5 死锁 J-Link 解决

我的 J-Link 比较旧:固件 V7 版,驱动为 V4.98;安装的 Keil 5 为 V5.33 版。在 Keil 5 中使用 J-Link 调试,会强制要求升级 J-Link 固件,不升级不能用,升级又被死锁。于是从网上搜索一些解决方案,得到两条重要信息:1、Keil V5.23 以及之前版本不检测 J-Link D版;2、使用 J-Link 驱动的 JLinkARM.dll 替换 Keil 5 后就不会提示升级固件(也有网文提到包括 JLink.exe)。有了这两条信息,就有了解决方案:

5.1、Keil V5.14 取代 Keil V5.33 的 Segger 文件夹:

../img/20220327_05_01.jpg

5.2、J-Link V4.98 替换 Keil V5.33 的 JLinkARM.dll 文件:

../img/20220327_05_02.jpg

5.3、成功解决强制升级及死锁问题:

../img/20220327_05_03.jpg

6、Keil 5 使用的编译器

从 MDK 5.37 开始,不再默认安装 Arm Compiler 5(ARMCC)编译器(可以下载独立安装),只集成 Arm Compiler 6(ARMCLAN,基于 LLVM 的 Clang)编译器,也就是说 Arm Compiler 5 以后就要退出舞台了!补充:Keil 软件资源下载请移步到《安富莱电子》,J-Link 驱动请移步 《segger 官网下载》。