amoBBS 阿莫电子论坛

 找回密码
 注册
搜索
bottom↓
查看: 3631|回复: 20

最新版IAR For ARM 8.22.1用C++写代码去掉warning方法...

[复制链接]
发表于 2018-2-25 17:02:36 | 显示全部楼层 |阅读模式
本帖最后由 jangyouhua 于 2018-2-25 17:02 编辑

农历新年伊始,装了IAR For Arm最新版 IAR For ARM 8.22.1版, 该版本改进了IDE的性能
同时支持 "CMSIS version 5.3 including CMSIS NN for machine learning",说明白了,就是支持了最新的CMSIS 5.3.0
因为该版本内置了最新的CMSIS 5.3.0,打开老工程时,会出现几个问题,这里根据本人的摸索,将解决的方法
写出来以节约遇到此问题的同行!
一、安装完后,直接打开老工程(老版本的CMSIS库),编泽可以通过但会在build显示窗提示一堆的
"
Warning: The header file 'cmsis_iar.h' is obsolete and should not be used.
         A sutiable version is automatically included from the CMSIS-core package.
         This file will be removed in a future release.

"
该warning会很多!如下图1所示

提示的意思是cmsis_iar.h文件太旧不建议使用,IAR自动从自带的CMSIS-core包提取新的用!
你勾或不勾选下图"Use CMSIS"选项,这个warning始终出现!

解决办法,去掉老工程用的CMSIS目录下的包包含,去掉如下图所示包含目录!
再次编泽,出错

经查是由mpu_armv7.h文件中函数参数关健字“__RESTRICT”引起的,__RESTRICT是C99支持的特性(如何用自已查),C++不支持
而我的工程是用c++编写的,但头文件中也指定了C编泽"
#ifdef __cplusplus
extern "C" {
#endif
.......
"


后来在网上找到了解决办法:
Options->C/C++ Compiler->Extra Options
勾选 Use command line options
添加以下代码
“--enable_restrict” 就能够在C++的情况下编译通过了.如图2所示!



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
发表于 2018-2-26 12:54:06 来自手机 | 显示全部楼层
那里有下栽
发表于 2018-2-26 15:54:39 | 显示全部楼层

iar 官网吧
发表于 2018-2-26 16:40:09 | 显示全部楼层
大牛人啦
发表于 2018-2-28 12:52:36 来自手机 | 显示全部楼层
又更新了!D
发表于 2018-2-28 17:06:54 | 显示全部楼层
更新速度太快,跟不上节奏啦
发表于 2018-2-28 23:24:02 | 显示全部楼层
每次解决这样的bug,就感觉还是好坑
 楼主| 发表于 2018-3-1 11:35:32 | 显示全部楼层
楼上的,还有什么坑?我一直用着,8.xx.x这版稳定多了,天天用没发现什么问题。
发表于 2018-3-3 15:52:39 | 显示全部楼层
感谢LZ,遇到同样的问题,使用你找到的方法解决了。另外感觉这个版本的却比上个版本流畅多了,不论是打开界面,还是运行调试。
发表于 2018-3-8 09:11:24 | 显示全部楼层
关于'cmsis_iar.h'的warning没看到楼主去掉哪个包含目录。找到另一个解决办法:
1. 进入iar安装目录下这个目录:
c:\Program Files (x86)\IAR Systems\Embedded Workbench 8.22\arm\CMSIS\Core\Include\
2. 将cmsis_iccarm.h复制一份命名为cmsis_iar.h。
搞定。
原cmsis_iar.h在arm\inc\c\下,由于搜索包含目录时arm\CMSIS\Core\Include\在arm\inc\c\之前,就会使用CMSIS\Core\Include\目录下的那份cmsis_iar.h

发表于 2018-3-8 16:10:46 | 显示全部楼层
官网下载速度达到3M了,非常好!
发表于 2018-3-26 12:01:28 | 显示全部楼层
iskywolf 发表于 2018-3-8 09:11
关于'cmsis_iar.h'的warning没看到楼主去掉哪个包含目录。找到另一个解决办法:
1. 进入iar安装目录下这个 ...

你这个方法还是有点问题,我直接按照你说的改,好像还是不行。。。我修改了一下,完全可以。。。
1. 进入iar安装目录下这个目录:
c:\Program Files (x86)\IAR Systems\Embedded Workbench 8.22\arm\CMSIS\Core\Include\
2.复制cmsis_iccarm.h一份文件出来,改名为cmsis_iar.h
3.将arm\CMSIS\Core\Include\arm\inc\c\下的cmsis_iar.h改名为cmsis_iar.old
4.将第3步的cmsis_iar.h文件复制到arm\CMSIS\Core\Include\arm\inc\c\下。
发表于 2018-3-28 01:22:05 | 显示全部楼层
警告的意识是 cmsis_iar.h 这文件废弃了,将来的版本将要删除,赶紧别用了。
从根源上解决,全项目文本搜索 cmsis_iar.h,找到的换成 cmsis_iccarm.h 就可以了。
找到两文件core_cmInstr.h 和 core_cmFunc.h 里有,换完了世界清净了。
发表于 2018-3-28 11:07:44 | 显示全部楼层
诺飞 发表于 2018-3-28 01:22
警告的意识是 cmsis_iar.h 这文件废弃了,将来的版本将要删除,赶紧别用了。
从根源上解决,全项目文本搜索 ...

我的工程中没有包含 cmsis_iar.h文件,也会提示
发表于 2018-3-28 12:12:32 | 显示全部楼层
其他头文件有包含的,比如项目 Drivers\CMSIS\Include 目录的 core_cmInstr.h 和 core_cmFunc.h 文件。IAR执行文件中查找 cmsis_iar.h,范围选项目文件和头文件。
发表于 2018-3-28 12:12:57 来自手机 | 显示全部楼层
这个方法好啊!谢谢楼主了
发表于 2018-3-28 18:52:44 来自手机 | 显示全部楼层
感谢楼主分享
发表于 2018-4-4 16:27:04 | 显示全部楼层
楼主有没有和谐工具呢?
发表于 2018-4-5 01:07:50 | 显示全部楼层
实测 cmsis_iar.h 替换成 cmsis_iccarm.h 有效
发表于 2018-4-5 06:42:14 来自手机 | 显示全部楼层
打官方的patch
发表于 2018-11-1 09:44:06 | 显示全部楼层
IAR新版本的坑。还有个wchar_t警告怎么处理?
友情提示:标题不合格、重复发帖,将会被封锁ID。详情请参考:论坛通告:封锁ID、获得注册邀请码、恢复被封ID、投诉必读
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|阿莫电子论坛(原ourAVR/ourDEV) ( 公安备案:44190002001997(交互式论坛) 工信部备案:粤ICP备09047143号 )

GMT+8, 2019-3-21 00:15

阿莫电子论坛, 原"中国电子开发网"

© 2004-2018 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表