This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Cross-compiling for Cortex-A9 with GCC

Arm offers 2 different GCC toolchains: one for Cortex-M/R devices and the other one for Cortex-A devices. However, in the Cortex-M/R toolchain documentation, it is specified that Cortex-A targets are accepted too, so this confuses me: why is there another toolchain for Cortex-A devices?

In my case, I am trying to build a baremetal application for a Cortex-A9 using a Makefile that invokes the GCC cross-compiler for arm. Should I use arm-none-eabi- or arm-eabi- tools? What's the difference?

Also, where can I find a template for a linker LD script for Cortex-A9 cores which I can then customize?

I have done this many times for Cortex-M devices, using arm-none-eabi-gcc, and using template linker scripts and startup files that I can then edit for my own needs. I can find many of these templates for Cortex-M devices, but none for Cortex-A cores. 

Parents Reply Children
  • Thanks Zheng. I read the document and it was helpful, however it does not explain the difference between the 2 tools: the Cortex-M/R toolchain (which can also compile for Cortex-A cores) and the Cortex-A toolchain for baremetal applications.

  • Hello dsanz006,

    the major difference is about the library, if you compile both of them targeting A9, the Cortex-M/R GCC compiler can not generate code without neon SIMD support, while Cortex-A compiler can

    Cortex-A library

    Cortex M/R library

    thanks

    zheng

  • Thanks Zheng. I tried both tools (arm-none-eabi-gcc and arm-eabi-gcc) and both work correclty for me (I am using a hard FPU). The only difference I could find between the 2 is that arm-eabi-gcc (cortex-a toolchain) seems to compile faster.