我最近开始使用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
的文件,我应该包含哪些文件?
我知道这是一个天真的问题,但我是嵌入式编程的初学者,并且仍处于设置此项目的初始阶段。
答案 0 :(得分:1)
这些是NewLib定义,而不是GNU ARM工具链定义。据推测,Eclipse应用程序正在使用GCC库,其中包括NewLib(无论如何都不能为小型嵌入式系统创建) - 而IAR项目正在使用IAR自己的(并且更适合小型嵌入式系统)库。
可以将FreeRTOS配置为使用某些NewLib重入功能,但这不是默认配置。如果这些隐式和未定义的定义来自FreeRTOS代码本身,那么在FreeRTOSConfig.h中确保configUSE_NEWLIB_REENT设置为0.