Error[Pe147]: declaration is incompatible with "__nounwind __interwork __softfp unsigned long __get_
来源:互联网 发布:我的世界手机版女仆js 编辑:程序博客网 时间:2024/04/30 12:00
原文地址:http://www.emcu.it/ARM_Compiler/IAR/IAR_tips_and_tricks.html
IAR
tips and tricks
tips and tricks
Home Page
STM32 home page
- CMSIS build problems with IAR Embedded Workbench ver. 6.30.6
- CMSIS build problems with IAR Embedded Workbench ver. 6.20
- How to use EWARM 6.2x with projects built with EWARM 6.1 and previous versions.
- TN0830 Technical note is here.
- Absolute placement (EWARM v.5.x and 6.x) (in C source and in assembler source)
- Constructing a bootloader with IAR Embedded Workbench and the STM32F207ZG-SK
-
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
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.
...........
...........
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.
Index
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)
Absolute placement (EWARM 5.x & 6.x) (in assembler source) is here (html page) or here (pdf)
Index
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.
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.
Index
- Error[Pe147]: declaration is incompatible with "__nounwind __interwork __softfp unsigned long __get_
- 解决Error[Pe147]: declaration is incompatible with "__nounwind __interwork __softfp unsigned long __ge
- IAR Error[Pe147]: declaration is incompatible with '__interwork __softfp unsigned long __get_PSP(vo
- Error[Pe147]: declaration is incompatible with "__nounwind __interwork __sof
- 解决 declaration is incompatible with "__interwork __softfp unsigned long __get_PSP(void)" 报错
- Error[Pe147]: declaration is incompatible with "错误问题
- IAR 编译提示__nounwind __interwork __softfp unsigned long 错误的解决办法
- IAR Error[Pe159]: declaration is incompatible with previous "Delay_11"
- linux error:declaration is incompatible with overloaded function "index"
- Binary translation is incompatible with long mode on this platform
- C编译问题: declaration is incompatible with previous "FuncName" (declared at line XXX)
- caffe cudnn出现错误: declaration is incompatible with "const char *cudnnGetErrorString(cudnnStatus_t)"
- MySQL Error this is incompatible with sql_mode=only_full_group_by
- keil出现错误declaration is incompatible
- 排除问题提示“Software virtualization is incompatible with long mode on this platform,...”
- 排除问题提示“Software virtualization is incompatible with long mode on this platform
- 排除问题提示“Software virtualization is incompatible with long mode on this platform,...”
- VMware 出现Binary translation is incompatible with long mode on this platform
- do { }while(0)的妙用
- linux系统下,使用dd命令制作U盘安装系统教程
- GDB 多线程调试
- YUV主要采样格式理解
- Codeforces #205前三题
- Error[Pe147]: declaration is incompatible with "__nounwind __interwork __softfp unsigned long __get_
- hive学习笔记
- MPEG系列与H.26x系列标准
- (C语言)队列的链式实现(数据结构十一)
- MyEclipse不编译问题的解决
- 排序算法
- Hive集成Mysql作为元数据
- Android系统Recovery工作原理之使用update.zip升级过程分析
- 视频编解码学习之四:视频处理及编码标准