¿Cómo hacer uso de la extensión de tipos de punto fijo GCC en ARM Cortex-M?

Estoy usando un ARM Cortex-M3 y un Cortex-M4. Quiero hacer uso de GCC extensión de tipo de punto fijo. Estoy usando el cadena de herramientas del brazo de invocación. La siguiente línea de código

_Fract f = 0.1;

arroja el siguiente error de compilación:

error: fixed-point types not supported for this target

¿GCC realmente no es compatible con los tipos de punto fijo para Cortex-M3/M4, o me estoy perdiendo algo aquí?

preguntado el 12 de junio de 12 a las 22:06

Sospecho que su GCC se acaba de construir sin soporte para punto fijo, probablemente para desinflar un poco la cadena de herramientas. Podrías intentar construir tu propio GCC... -

@R.., oye, ni siquiera conocía a GCC tenido una extensión de punto fijo. Dulce. Las cosas cambiaron desde 1995. -

@RI probó una cadena de herramientas diferente, gnuarm para un ARM7TDMI. compilé gcc4.4.2 de fuentes para esta cadena de herramientas. Sigo teniendo el mismo error de compilación. -

Gracias a todos por sus sugerencias, realmente me ayudaron a encontrar una respuesta definitiva a mi pregunta. -

2 Respuestas

Solo para que conste, responderé mi propia pregunta.

TL; DR: la extensión de tipos de punto fijo es compatible con la arquitectura ARM Cortex-M/R en el integrado rama de gcc (versión 4.6 y posteriores). Se encuentra una cadena de herramientas basada en esa rama gcc aquí.

Respuesta larga:

En el momento de redactar este cadena de herramientas del brazo de invocación descargas por defecto linaro-gcc-4.5-2011.02 (o alternativamente gcc-4.5.2). Lo hace no tener activado por defecto el tipos de punto fijo extensión. Intenté agregar el parámetro --enable-fixed-point a configure, pero obtuve el error de compilación descrito por this error. Intenté usar una versión más reciente de (linaro-)gcc, pero el cadena de herramientas del brazo de invocación tuvo problemas para aplicar su propio parche gcc provisto a esta versión más nueva. También probé usando el dev rama de esta cadena de herramientas (que usa linaro-gcc-4.6-2011.10) sin éxito. Parece que, en este momento, la extensión de punto fijo no es compatible con ARM Cortex-M/R ni con linaro-gcc ni con el principal rama de gcc.

Luego probé el cadena de herramientas integrada en el brazo gcc, que se basa en el integrado rama de gcc. pude compilar mi tipos de punto fijo programa de muestra sin problemas, para objetivos ARM Cortex-M3 y Cortex-M4. El soporte para esta extensión para Cortex-M/R se agregó a fines de 2011, como se puede ver en este hilo.

Respondido el 17 de junio de 12 a las 09:06

Según Wiki de GCC, puede habilitar las extensiones de punto fijo pasando --enable-fixed-point como un parámetro para GCC mientras lo configura.

Además, de acuerdo con un comentario en este gcc error y este uno.

El soporte de punto fijo solo se admite actualmente para el objetivo MIPS.

Respondido el 14 de junio de 12 a las 19:06

¿Se supone que se debe pasar esta opción al compilar GCC o al compilar su aplicación? Acabo de probar esto con gcc versión 4.6.1 (Sourcery CodeBench Lite 2011.09-69), y obtuve arm-none-eabi-gcc.exe: error: unrecognized option '--enable-fixed-point' - kevin vermeer

Definitivamente necesita hacer esto mientras hace ./configure GCC, es decir, compila GCC. No estoy seguro de si también es necesario al compilar su aplicación, pero creo que sí. Consulte también los enlaces en mi respuesta editada. - Akhil

Realmente no puedo confirmar que ese fuera el problema, ya que no pude compilar gcc (el que usa la cadena de herramientas de brazo de invocación) usando ese --enable-fixed-point. Parece ser posible usar la extensión de tipos de punto fijo en ARM Cortex-Mx usando esta cadena de herramientas - user1069152

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.