Error[Pe147]: declaration is incompatible with "__nounwind __interwork __sof






IAR 
tips and tricks



Home Page
STM32 home page



-
CMSIS build problems with IAR Embedded Workbench ver. 6.30.6

If you try to use the STM32 Library examples with IAR 6.30.6 you get a loot of errors.
Below there is the solution.

The customer's file: 
...\Libraries\CMSIS\CM3\CoreSupport\core_cm3.h 
is a very old version of CMSIS (V1.30 from 2009) with no adaptations for IAR Embedded Workbench for ARM.

It is not possible to use this old header file with EWARM 6.30.6.
Included and integrated in IAR Embedded Workbench for ARM 6.30.6 is "core_cm3.h" version V2.11 from 2011.
See the directory: 
<EWARM>\arm\CMSIS\Include\core_cm3.h

To take advantage of this new, improved CMSIS library, just select: 
Project -> Options -> General Options -> Library Configuration -> Use CMSIS


The fix for this project as described by Technical Note 75890:
http://supp.iar.com/Support/?note=75890
is to:

A. Rename the outdated CMSIS file "...\Libraries\CMSIS\CM3\CoreSupport\core_cm3.h" to "core_cm3.h.old" (for example)



B. Enable CMSIS:  Project -> Options -> General Options -> Library Configuration -> Use CMSIS




Index




-
CMSIS build problems with IAR Embedded Workbench ver. 6.20

If you use IAR release 6.20 and STM Library 3.5 you probably have a lot of errors (see below).

...........
...........
Error[Og006]: Syntax error in inline assembly: "Error[446]: The selected cpu/core does not support this status register" C:\TraningSTM-Castelletto-F200-052011\Copia\Examples\LABS\Libraries\CMSIS\CM3\CoreSupport\core_cm3.c 268  

Error[Og006]: Syntax error in inline assembly: "Error[438]: This instruction is not available in the selected cpu/core" C:\TraningSTM-Castelletto-F200-052011\Copia\Examples\LABS\Libraries\CMSIS\CM3\CoreSupport\core_cm3.c 324  
Error[Pe147]: declaration is incompatible with "__thumb __softfp unsigned long __REV16(unsigned long)" (declared at line 173 of "C:\Program Files\IAR  C:\TraningSTM-Castelletto-F200-052011\Copia\Examples\LABS\Libraries\CMSIS\CM3\CoreSupport\core_cm3.h 1124  
Systems\Embedded Workbench 6.0 Kickstart_2\arm\inc\c\intrinsics.h")  
Error[Pe147]: declaration is incompatible with "__thumb __softfp unsigned long __RBIT(unsigned long)" (declared at line 174 of "C:\Program Files\IAR  C:\TraningSTM-Castelletto-F200-052011\Copia\Examples\LABS\Libraries\CMSIS\CM3\CoreSupport\core_cm3.h 1134  
Systems\Embedded Workbench 6.0 Kickstart_2\arm\inc\c\intrinsics.h")  
Error[Pe147]: declaration is incompatible with "__thumb __softfp unsigned long __REV16(unsigned long)" (declared at line 173 of "C:\Program Files\IAR  C:\TraningSTM-Castelletto-F200-052011\Copia\Examples\LABS\Libraries\CMSIS\CM3\CoreSupport\core_cm3.h 1124  
Systems\Embedded Workbench 6.0 Kickstart_2\arm\inc\c\intrinsics.h")  
Error[Pe147]: declaration is incompatible with "__thumb __softfp unsigned long __REV16(unsigned long)" (declared at line 173 of "C:\Program Files\IAR  C:\TraningSTM-Castelletto-F200-052011\Copia\Examples\LABS\Libraries\CMSIS\CM3\CoreSupport\core_cm3.h 1124  
Systems\Embedded Workbench 6.0 Kickstart_2\arm\inc\c\intrinsics.h")  
Error[Pe147]: declaration is incompatible with "__thumb __softfp unsigned long __STREXH(unsigned short, unsigned short *)" (declared at line 182 of "C:\ C:\TraningSTM-Castelletto-F200-052011\Copia\Examples\LABS\Libraries\CMSIS\CM3\CoreSupport\core_cm3.h 1186  
Program Files\IAR Systems\Embedded Workbench 6.0 Kickstart_2\arm\inc\c\intrinsics.h") 
...........
...........

This is caused to the fact that IAR now incorporate CMSIS files that are also inside the STM Library.
This problem is known and the IAR solution is here (html page) or here (pdf).

My solution is: commenting the line 93 in the file core_cm3.c, see below.
 



It is not an elegant solution but it work.
 








Absolute Placement


Absolute placement (EWARM v.5.x and 6.x) (in C source) is here (html page) or here (pdf)
Absolute placement (EWARM 5.x & 6.x) (in assembler source) is here (html page) or here (pdf)
 






Constructing a bootloader with IAR Embedded Workbench and the STM32F207ZG-SK


As software becomes more and more complex, the potential for defects to exist in shipped code increases exponentially. 
It is therefore becoming quite common for design specifications to call for the ability to dynamically update a device’s firmware in the field. 
This is done commonly via a bootloader. In this article, we will discuss some of the issues involved with developing a bootloader and show you how to set one up with the Embedded Workbench on the STM32F207ZG-SK board.
Click here to reading all.
Click here to get the example.
 





 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值