找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 9321|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

IAR for ARM "Error[Pe147]" and "Error[Pe337]" solution

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:82083 發(fā)表于 2015-6-9 02:00 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
今天升級了一下IAR,發(fā)現(xiàn)之前編譯通過的程序報了很多類似的錯誤:Error[Pe147]: declaration is incompatible with "__nounwind__interwork __softfp unsigned long __get_PSP(void)"
(declared at linexx\CMSIS\CM3\CoreSupport\core_cm3.h)
報錯不約而同的指向了core_cm3.h這個文件。
百度了一下才知道:core_cm3.h文件太老了,與新版本的IAR6.5不兼容。
在IAR官網(wǎng)也找到了一篇描述相關(guān)問題的文章:
Problem
There is an issue with older versions of CMSIS and IAREmbedded Workbench for ARM (EWARM) version 6.20.1 and later. Thismay lead to build errors with CMSIS projects.
Theerrors are for example "Error[Pe147]" and "Error[Pe337]".Most ofthe errors comes from a CMSIS header file named core_cm3.h orsimilar.
緊接著也給出了具體辦法:
Solutions
Solution 1
Copya CMSIS based project from the present version, and use thatproject as the base to where you application is added.
Solution 2
Seethe release notes for the C/C++ Compiler (link to the right):
http://supp.iar.com/FilesPublic/UPDINFO/005832/arm/doc/infocenter/iccarm.ENU.html
Seethe chapter "A special note on CMSIS integration", specially thepart that starts with "However, ...".

Please note that excluding the CMSIS files from the exampleprojects, some functions required by the examples may disappear. Insuch a situation, just changing the include paths and excludingsome source files is not enough to fix the problem. If so,functions has to be moved from excluded files (likesystem_stm32f10x.c) to the source in the project in order to buildit.
Background
Thecompiler that comes with EWARM 6.20.1 and later has got support formore intrinsics than previous versions, which leads to anincompatibility issue with CMSIS source code that is included inprojects.
Theessence of the adjustment suggested in the release notes is to"remove" the CMSIS source code included in the project and insteaduse the CMSIS source code that is installed in EWARM, in the"arm\CMSIS" directory. Turn on
CMSIS usage in"Project>Options...>GeneralOptions>LibraryConfiguration>Use CMSIS".
Note that some of the CMSISexample projects in EWARM 6.20.1were affectedby the problem discussed above. This has been corrected inlater versions.
查了一下,網(wǎng)上也有類似解決方案的:
1,把老的core_cm3.h去掉,刪除,或者改成core_cm3.h.old。
2,Project -> Options -> General Options -> LibraryConfiguration -> Use CMSIS,右下角的選項(xiàng)中選擇 use CMSIS。
然后默默把core_cm3.h改為了core_cm3.h.old,勾選useCMSIS
0errors,0warnings



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表