|
今天升級了一下IAR,發現之前編譯通過的程序報了很多類似的錯誤: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官網也找到了一篇描述相關問題的文章:
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.
查了一下,網上也有類似解決方案的:
1,把老的core_cm3.h去掉,刪除,或者改成core_cm3.h.old。
2,Project -> Options -> General Options -> LibraryConfiguration -> Use CMSIS,右下角的選項中選擇 use CMSIS。
然后默默把core_cm3.h改為了core_cm3.h.old,勾選useCMSIS
0errors,0warnings
|
|