0

我最近开始使用 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是存在于 GNU ARM 工具链中_reclaim_reent的文件的一部分。reent.h这被用作使用 FreeRTOS 功能的一部分。使用 Eclipse,这不是问题,但是在使用 IAR 工作台时,是否还有其他类似于reent.h我应该包含的 IAR 工作台的文件?

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

4

1 回答 1

1

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

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

于 2015-07-30T15:55:38.643 回答