Error debido al uso de la cadena de herramientas GNU ARM en el entorno de trabajo IAR

0

Recientemente comencé a programar con el tablero de descubrimiento STM32F4 y estoy usando el entorno de trabajo IAR como IDE. Se supone que debo usar un programa ya desarrollado en Eclipse como parte de mi proyecto. Cuando importé esto en IAR Workbench, recibo los siguientes errores y advertencias: Error[Pe020]: identifier "_impure_ptr" is undefined Warning[Pe223]: function "_REENT_INIT_PTR" declared implicitly Warning[Pe223]: function "_reclaim_reent" declared implicitly C

Me he dado cuenta de que _impure_ptr , _REENT_INIT_PTR , _reclaim_reent son parte del archivo reent.h que están presentes en la cadena de herramientas GNU ARM. Esto se está utilizando como parte de la utilización de la funcionalidad FreeRTOS. Con Eclipse, esto no es un problema, pero al usar IAR Workbench, ¿hay algún otro archivo similar al reent.h para IAR Workbench que debo incluir?

Sé que es una pregunta ingenua, pero soy un principiante en la programación integrada y aún estoy en las etapas iniciales de configuración de este proyecto.

    
pregunta smyslov

2 respuestas

1

La variable global _impure_ptr es parte de newlib libc que usa GNU ARM Toolchain. IAR utiliza, por lo que puedo decir, su propia implementación de la biblioteca C estándar llamada CLIB.

La biblioteca estándar de C generalmente contiene todas / la mayoría de las funciones definidas en el estándar C. En lo que respecta a estas funciones (printf, strlen ...), las dos bibliotecas deberían ser bastante compatibles. En otras áreas estas bibliotecas tienden a diferir. Newlib utiliza la variable _impure_ptr para admitir subprocesos múltiples y contiene todas las variables globales utilizadas por ese hilo (por ejemplo, errno).

FreeRTOS ha incorporado soporte para la reentrada de newlib (aunque no es oficialmente compatible con los desarrolladores). Si esto está activado, FreeRTOS conserva una copia de este contexto de reentrada para cada tarea y reemplaza la variable global en el cambio de contexto. Puedes deshabilitar esto en tu FreeRTOSConfig.h, configurando configUSE_NEWLIB_REENTRANT en 0. Pero asegúrate de que el IAR libc sea reentrante, de lo contrario podrías tener problemas más adelante.

    
respondido por el erebos
0

Está utilizando el compilador de IAR en el IDE de Embedded Workbench. Eso es diferente del compilador gcc para el que se desarrolló la aplicación.

Si solo desea compilar y ejecutar la aplicación en su pizarra, le sugiero que use un entorno Eclipse. Busque "depuración del eclipse de stm32f4discovery" en Google y lea el tutorial que otros han recopilado.

    
respondido por el basileu

Lea otras preguntas en las etiquetas