We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
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.
hello dsanz006,
you can take a look at this document https://developer.arm.com/tools-and-software/embedded/legacy-tools/ds-5-development-studio/resources/tutorials/building-bare-metal-applications-in-ds-5-using-gcc-compiler
thanks
zheng
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. 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.