[fpc-devel] arm embedded

Jeppe Johansen jepjoh2 at kom.aau.dk
Mon Apr 19 15:06:23 CEST 2010

stm32f103 is a thumb2 only device, and you cannot generate a rtl for 
both <=armv5 and thumb2. You need to modify the makefile to generate 
either a thumb2 rtl or a arm rtl. You can do that by removing the arm 
core units from CPU_UNITS and overriding the FPC_OPT to include -Cpcortexm3

You don't set the instruction set. You have to override it if you 
compile for a specific chip, when you call the compiler, otherwise it'll 
simply default to armv5, no matter what the compiler(rtl) was built for

A short guide, which you probably already knew:

To include a new arm chip, you have to edit compiler/arm/cpuinfo.pas:
-Add an identifier in tcontrollertype
-Add a related name in controllertypestr
-Add a unit name string in controllerunitstr

-Create a unit in rtl/embedded/arm/ with startup code like the other files

-Create a linkerscript in compiler/systems/t_embed.pas which matches the 
memory map of the target device

Geoffrey Barton skrev:
> Two related questions (FPC 2.5.1):-
> 1    In the rtl/embedded/arm directory are three target processor 
> files. The one for stm32f103 does not get compiled into the 
> units/arm-embedded/rtl directory. I added it to the CPU_UNITS line in 
> the makefile.fpc in the embedded directory before building ppcrossarm, 
> but this does not fix it.
> 2    Which files have to be edited to add a new ARM chip variant? I 
> can see the types in cpuinfo.pas and t_embed.pas, and the register 
> definitions+startup code as above, but it is not clear to me where to 
> set the correct instruction set, eg. cortexm3 rather than armv4.
> Geoffrey
> _______________________________________________
> fpc-devel maillist  -  fpc-devel at lists.freepascal.org
> http://lists.freepascal.org/mailman/listinfo/fpc-devel

More information about the fpc-devel mailing list