1)
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
2)
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@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel
_______________________________________________
fpc-devel maillist - fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel