do the tools supprt ARM7 and ARM9 architectures

Asked by DavidR

Hi,
the readme shows a number of Cortex R/M cores. I was wondering if the tools are
really limited to the Cortex, or if also the older ARM7 and ARM9 architectures could
be used using these tools.
thx, David

Question information

Language:
English Edit question
Status:
Solved
For:
GNU Arm Embedded Toolchain Edit question
Assignee:
No assignee Edit question
Solved by:
DavidR
Solved:
Last query:
Last reply:
Revision history for this message
Terry Guo (terry.guo) said :
#1

This tool chain can generate code for very old cores like -mcpu=arm7. But the default Multilib assume the target is with -mcpu=arm7tdmi. So the cores newer than arm7tdmi can be well supported. The cores older than that can't get suitable Multilib to be linked with.

Revision history for this message
DavidR (monger-39) said :
#2

Hi Terry,

arm7tdmi is good; it is one of the cores I have.
Is there a list of supported targets? Or an option to the compiler to show them?
Or : does the compiler + libs also support arm926ej ?
thx, David

Revision history for this message
Terry Guo (terry.guo) said :
#3

Hi David,

The command "arm-none-eabi-gcc --target-help" can give a list of arch and core that GCC can accept. I am not sure it is the right list but it could be a reference.

The command "arm-none-eabi-gcc --print-multi-lib" will give you a list of what kind of multilib we provide. As Cortex-M/R are first priority of this tool chain, so they get dedicated Multilib. All other targets will have to use the default Multilib which is built with gcc default arch (-mcpu=arm7tdmi).

For arm926ej, I think its arch is armv5tej, not a Cortex-M/R core. So no dedicated libs for it, the tool chain will link default libs for it. It works but not optimal.

BR,
Terry

Revision history for this message
DavidR (monger-39) said :
#4

Hi Terry,
means I will need to give it a try I guess to what extent 'not optimal' is still usable
for (some of) my projects.

thx for the help.
gr, David

Revision history for this message
DavidR (monger-39) said :
#5

case closed

Revision history for this message
grissiom (chaos.proton) said :
#6

Hi all,

As for the release gcc-arm-none-eabi-4_7-2013q1-20130313, is it still possible to compile and link ARM9 code? The output of '--print-multi-lib' is:

arm-none-eabi-gcc --print-multi-lib
.;
thumb;@mthumb
fpu;@mfloat-abi=hard
armv6-m;@mthumb@march=armv6s-m
armv7-m;@mthumb@march=armv7-m
armv7e-m;@mthumb@march=armv7e-m
armv7-ar/thumb;@mthumb@march=armv7
armv7e-m/softfp;@mthumb@march=armv7e-m@mfloat-abi=softfp@mfpu=fpv4-sp-d16
armv7e-m/fpu;@mthumb@march=armv7e-m@mfloat-abi=hard@mfpu=fpv4-sp-d16
armv7-ar/thumb/softfp;@mthumb@march=armv7@mfloat-abi=softfp@mfpu=vfpv3-d16
armv7-ar/thumb/fpu;@mthumb@march=armv7@mfloat-abi=hard@mfpu=vfpv3-d16

It seems there is no arm7tdmi multilib available.

BTW, does the last two lines say that there is only thumb lib for armv7-ar, and no arm libs?

Revision history for this message
Terry Guo (terry.guo) said :
#7

I think this tool chain still can work for ARM9 code.

The arm7tdmi and ARM9 will link the first one for arm mode and the second multilib "thumb;@mthumb" for thumb mode.

It's on purpose that we reuse thumb mode multilib for even arm mode app when target is like cortex-a7. This can achieve better code size without too much performance loss. The interwork feature enables us to do so.

Revision history for this message
Faisal Shah (faisalshah) said :
#8

It's been nearly 7 years since the original question. I need to generate some code for armv4T (ARM7TDMI) . Can anyone confirm if this (still?) works with this toolchain?

Revision history for this message
Faisal Shah (faisalshah) said :
#9

I also need to generate the output for a big endian processor. I am willing to recompile from sources if needed - any pointers on what I would have to change? I found a patch submitted for ARM-V7R big endian, but I'm pretty sure the t-rmprofile is not the file that needs to be modified. I think t-arm-elf needs to be modified, along with some other compile time configuration flags. Help :).

I have an old version of GCC which works:
$ arm-elf-gcc --print-multi-lib
.;
thumb;@mthumb
be;@mbig-endian
fpu;@mhard-float
interwork;@mthumb-interwork
nofmult;@mcpu=arm7
fpu/interwork;@mhard-float@mthumb-interwork
fpu/nofmult;@mhard-float@mcpu=arm7
be/fpu;@mbig-endian@mhard-float
be/interwork;@mbig-endian@mthumb-interwork
be/nofmult;@mbig-endian@mcpu=arm7
be/fpu/interwork;@mbig-endian@mhard-float@mthumb-interwork
be/fpu/nofmult;@mbig-endian@mhard-float@mcpu=arm7
thumb/be;@mthumb@mbig-endian
thumb/interwork;@mthumb@mthumb-interwork
thumb/be/interwork;@mthumb@mbig-endian@mthumb-interwork

The new version of Arm Embedded is as such:
$ arm-none-eabi-gcc --print-multi-lib
.;
thumb;@mthumb
hard;@mfloat-abi=hard
thumb/v6-m;@mthumb@march=armv6s-m
thumb/v7-m;@mthumb@march=armv7-m
thumb/v7e-m;@mthumb@march=armv7e-m
thumb/v7-ar;@mthumb@march=armv7
thumb/v8-m.base;@mthumb@march=armv8-m.base
thumb/v8-m.main;@mthumb@march=armv8-m.main
thumb/v7e-m/fpv4-sp/softfp;@mthumb@march=armv7e-m@mfpu=fpv4-sp-d16@mfloat-abi=softfp
thumb/v7e-m/fpv4-sp/hard;@mthumb@march=armv7e-m@mfpu=fpv4-sp-d16@mfloat-abi=hard
thumb/v7e-m/fpv5/softfp;@mthumb@march=armv7e-m@mfpu=fpv5-d16@mfloat-abi=softfp
thumb/v7e-m/fpv5/hard;@mthumb@march=armv7e-m@mfpu=fpv5-d16@mfloat-abi=hard
thumb/v7-ar/fpv3/softfp;@mthumb@march=armv7@mfpu=vfpv3-d16@mfloat-abi=softfp
thumb/v7-ar/fpv3/hard;@mthumb@march=armv7@mfpu=vfpv3-d16@mfloat-abi=hard
thumb/v8-m.main/fpv5-sp/softfp;@mthumb@march=armv8-m.main@mfpu=fpv5-sp-d16@mfloat-abi=softfp
thumb/v8-m.main/fpv5-sp/hard;@mthumb@march=armv8-m.main@mfpu=fpv5-sp-d16@mfloat-abi=hard
thumb/v8-m.main/fpv5/softfp;@mthumb@march=armv8-m.main@mfpu=fpv5-d16@mfloat-abi=softfp
thumb/v8-m.main/fpv5/hard;@mthumb@march=armv8-m.main@mfpu=fpv5-d16@mfloat-abi=hard