由于IAR工作台中的GNU ARM工具链使用而导致的错误

时间:2015-07-30 07:44:44

标签: iar freertos stm32f4discovery gnu-arm

我最近开始使用STM32F4Discovery板进行编程,并使用IAR工作台作为IDE。我应该在Eclipse中使用已经开发的程序作为我项目的一部分。当我将其导入IAR Workbench时,我收到以下错误和警告: Error[Pe020]: identifier "_impure_ptr" is undefined Warning[Pe223]: function "_REENT_INIT_PTR" declared implicitly Warning[Pe223]: function "_reclaim_reent" declared implicitly C

我已经意识到_impure_ptr_REENT_INIT_PTR_reclaim_reent是GNU ARM工具链中存在的reent.h文件的一部分。这被用作使用FreeRTOS功能的一部分。使用Eclipse,这不是问题,但在使用IAR工作台时,是否还有其他类似于IAR Workbench reent.h的文件,我应该包含哪些文件?

我知道这是一个天真的问题,但我是嵌入式编程的初学者,并且仍处于设置此项目的初始阶段。

1 个答案:

答案 0 :(得分:1)

这些是NewLib定义,而不是GNU ARM工具链定义。据推测,Eclipse应用程序正在使用GCC库,其中包括NewLib(无论如何都不能为小型嵌入式系统创建) - 而IAR项目正在使用IAR自己的(并且更适合小型嵌入式系统)库。

可以将FreeRTOS配置为使用某些NewLib重入功能,但这不是默认配置。如果这些隐式和未定义的定义来自FreeRTOS代码本身,那么在FreeRTOSConfig.h中确保configUSE_NEWLIB_REENT设置为0.