ST예제 컴파일시 에러
Error[Pe147]: declaration is incompatible with "__interwork __softfp unsigned long __get_PSP(void)" (declared at line 52 of "C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.0\arm\inc\c\intrinsics.h")
C:\work\STM32_Lib\STM32_USB-FS-Device_Lib_V3.3.0\STM32_USB-FS-Device_Lib_V3.3.0\Libraries\CMSIS\CM3\CoreSupport\core_cm3.h 1084
EWARM 최근 버젼에서 에러가 나옵니다.
CMSIS관련 어셈블러쪽을 IAR에서는 내부적으로 따로 제공하는데 이 부분이 서로 충돌 합니다.
CMSIS 관련 자료는 다음 링크
http://www.arm.com/products/processors/cortex-m/cortex-microcontroller-software-interface-standard.php
해결 방법은
1. core_cm3.c/h 을 rename 하시고,
2. 컴파일러 옵션에서 아래와 같이 CMSIS 란에서 "Use CMSIS" 체크 박스 체크 해주시고,
3. 컴파일러에서 core_cm3.c 파일을 빼줍니다.
이게 좀 아리송 한게 체크 박스을 뒀다는건 외부 core_cm3.c/h도 사용 할 수 있게 한다는 건데...
뭘 하던간에 내부 "C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.0\arm\inc\c\intrinsics.h" 파일을
default로 물고 들어오니.... declaration is incompatible 에러가 나옵니다.
intrinsics.h을 안물고 들어가게 하는 옵션이 있을것 같은데...흑
위에 "Use CMSIS"을 체크 하면
IAR 컴파일러의 다음 Path을 참고 합니다.
C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.0\arm\CMSIS\Include
이 폴더 안에는 "core_cm3.h" 가 독립적으로 들어 있고요.
"core_cm3.h" 에서는
#include <intrinsics.h> /* IAR Intrinsics */
다시 이 파일은
C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.0\arm\inc\c
여기 들어가 있습니다.
'Technical Tips!!' 카테고리의 다른 글
STM32F4-Technical-Training.pdf (0) | 2013.10.30 |
---|---|
uCOS-III 을 STM32F407 Discovery board에 올려보자. (0) | 2013.10.30 |
MDK ARM Error: L6411E: No compatible library exists with a definition of startup symbol __main. (2) | 2013.10.17 |
SWD ST-LINK JTAG Interface 예고 (0) | 2013.03.14 |
STM32 JTAG ST-LINK GPIO_Remap_SWJ 동작 안 할때 (0) | 2013.03.14 |