Перейти к содержанию
    

не компилится под IAR 6.21

Установил последний IAR 6.21. Перестало все компилироваться. Даже стандартные примеры из StdPeriph_Lib

пишет:

Error[Pe147]: declaration is incompatible with "__interwork __softfp unsigned long __get_PSP(void)" (declared at line 52 of "E:\PRODJECT\Embedded Workbench 6.0\arm\ E:\My Document\STM32F207\stm32vldiscovery_package\Libraries\CMSIS\CM3\CoreSupport\core_cm3.h 1084 
inc\c\intrinsics.h") 
Error[Pe147]: declaration is incompatible with "__interwork __softfp void __set_PSP(unsigned long)" (declared at line 53 of "E:\PRODJECT\Embedded Workbench 6.0\arm\ E:\My Document\STM32F207\stm32vldiscovery_package\Libraries\CMSIS\CM3\CoreSupport\core_cm3.h 1094 
inc\c\intrinsics.h") 
Error[Pe147]: declaration is incompatible with "__interwork __softfp unsigned long __get_MSP(void)" (declared at line 50 of "E:\PRODJECT\Embedded Workbench 6.0\arm\ E:\My Document\STM32F207\stm32vldiscovery_package\Libraries\CMSIS\CM3\CoreSupport\core_cm3.h 1104 
inc\c\intrinsics.h") 
Error[Pe147]: declaration is incompatible with "__interwork __softfp void __set_MSP(unsigned long)" (declared at line 51 of "E:\PRODJECT\Embedded Workbench 6.0\arm\ E:\My Document\STM32F207\stm32vldiscovery_package\Libraries\CMSIS\CM3\CoreSupport\core_cm3.h 1114 
inc\c\intrinsics.h") 
Error[Pe147]: declaration is incompatible with "__interwork __softfp unsigned long __REV16(unsigned long)" (declared at line 173 of "E:\PRODJECT\Embedded Workbench  E:\My Document\STM32F207\stm32vldiscovery_package\Libraries\CMSIS\CM3\CoreSupport\core_cm3.h 1124 
6.0\arm\inc\c\intrinsics.h") 
Error[Pe147]: declaration is incompatible with "__interwork __softfp unsigned long __RBIT(unsigned long)" (declared at line 174 of "E:\PRODJECT\Embedded Workbench 6.0\ E:\My Document\STM32F207\stm32vldiscovery_package\Libraries\CMSIS\CM3\CoreSupport\core_cm3.h 1134 
arm\inc\c\intrinsics.h") 
Error[Pe147]: declaration is incompatible with "__interwork __softfp unsigned long __STREXB(unsigned char, unsigned char *)" (declared at line 181 of "E:\PRODJECT\ E:\My Document\STM32F207\stm32vldiscovery_package\Libraries\CMSIS\CM3\CoreSupport\core_cm3.h 1175 
Embedded Workbench 6.0\arm\inc\c\intrinsics.h") 
Error[Pe147]: declaration is incompatible with "__interwork __softfp unsigned long __STREXH(unsigned short, unsigned short *)" (declared at line 182 of "E:\PRODJECT\ E:\My Document\STM32F207\stm32vldiscovery_package\Libraries\CMSIS\CM3\CoreSupport\core_cm3.h 1186 
Embedded Workbench 6.0\arm\inc\c\intrinsics.h") 
Error while running C/C++ Compiler 
startup_stm32f10x_md_vl.s 
stm32f10x_flash.c  
.................................. ну и остальное в таком же духе что то ему CMSISкие файлы не нравятся

 

облазил всю справку но нигде не нашел эту ошибку "Error[Pe147]: declaration is incompatible with"

может надо что-то в настройках проекта поменять?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Слишком мало информации, "перестало всё компилется" из этого ничего не понятно. Под какой процессор проект и компилился ли он раньше в другой среде?

Судя по названию путей - это демопример для STM32VLDiscovery. Тут у вас банально не совпадение типов, там в описании ошибки написано в каком файле впервые встречается такая декларация. Приведите типы в обеих файлах к одинаковому виду и будет вам счастие.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

раньше юзал IAR for ARM v. 6.10 32K Kickstart Edition все нормально было, плата дискавери но еще F207 через неё прошиваю

типы и вправду не совпадают в файле core_cm3.h объявление:

extern uint32_t __get_PSP(void);

extern void __set_PSP(uint32_t topOfProcStack);

extern uint32_t __get_MSP(void);

extern void __set_MSP(uint32_t topOfMainStack);

extern uint32_t __REV16(uint16_t value);......................

а в файле Embedded Workbench 6.0\arm\inc\c\intrinsics.h

__intrinsic unsigned long __get_PSR( void );
__intrinsic unsigned long __get_IPSR( void );
__intrinsic unsigned long __get_MSP( void );
__intrinsic void          __set_MSP( unsigned long );
__intrinsic unsigned long __get_PSP( void );
__intrinsic void          __set_PSP( unsigned long );
__intrinsic unsigned long __get_PRIMASK( void );
__intrinsic void          __set_PRIMASK( unsigned long );
__intrinsic unsigned long __get_CONTROL( void );
__intrinsic void          __set_CONTROL( unsigned long );

в иаре есть встроенные примеры StdPeriph_Lib. открыл их все компилируется но файл core_cm3.h у них совсем другой, отличается что идет в комплекте с StdPeriph_Lib

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Хреновый это какой-то IAR, откачюсь обратно на 6.10

На другой машине такая же история, так что хорошо подумайте прежде чем его ставить 6.21

Изменено пользователем MK2

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Хреновый это какой-то IAR, откачюсь обратно на 6.10

На другой машине такая же история, так что хорошо подумайте прежде чем его ставить 6.21

Возможно, что последняя версия 6.21.4 окажется лучше - в ней исправляли какие-то ошибки версии 6.21.1.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это действительно различия в интринсиках. Я в своё время не поленился, исправил uint32_t на unsigned long, всё скомпилилось, но не заработало :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Столкнулся с такой же проблемой.

 

Release note for IAR ARM 6.21

 

A special note on CMSIS integration:

 

If your application source code include CMSIS header files explicitly, then you should not check the Use CMSIS check-box Project>Options...>General Options>Library Configuration>Use CMSIS. Some of the Cortex-M application examples includes CMSIS source files explicitly, do not check the said check-box in these projects.

 

Нужно:

  • Установить Project>Options...>General Options>Library Configuration>Use CMSIS
  • Удалить из проекти и из его папки файлы core_cm3.c и core_cm3.h.

 

Во вложении рабочий проект для STM32-Discovery под IAR ARM 6.21

STM32.zip

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Установил последний IAR 6.21. Перестало все компилироваться. Даже стандартные примеры из StdPeriph_Lib

Тоже было такое: Error[Pe147]: declaration is incompatible with "__interwork __softfp unsigned long __get_PSP(void)"

устранил:

клик

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо большое жалко только уже снес ИАР, пришлось потом даже 6.10 потом удалить, его походу 6.2 подкосил((. А ведь ставил в настройках Use , только файлы CMSIS не додумался удалить))

Жалко IAR думал поюзать поставляемы с ним стеки, но как-то уже на кейловские RL-ARM прижились )

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...