[fpc-pascal] ARM CMSIS support

Jeppe Johansen jeppe at j-software.dk
Fri Jan 8 23:23:11 CET 2016

CMSIS is a lot of things. What exact part of it are you asking about here?

FPC's embedded target has a bunch of controller units that are pulled in 
depending on the -Wp argument. These define exactly what you see in the 
units in the rtl/embedded/arm directory. In most cases just the physical 
registers, the interrupt vectors(and sometimes the IRQ levels), and some 
startup code. The mapping between the files and the controller names can 
be seen in the huge table in compiler/arm/cpuinfo.pas.

There are no object or source files for other parts of CMSIS, so things 
like the CMSIS-DSP and all cortex-m intrinsics don't work right now.

The cortexm3 and cortexm4 units that you can include in your uses clause 
will model some of the missing functionality but very far from all.

Floating point support is very untested. Most of it should work, but 
there might be some bugs. You can enable it by compiling your RTL and 
application with -CfFPv4_S16. If you decide to test it please write on 
the bugtracker if you run into problems.

Best Regards,

On 01/08/2016 10:58 PM, Marc Santhoff wrote:
> Hi,
> looking at the embedded source code there has been done a lot of work.
> I'm interested in trying fpc on Cortex-M3 and M4, mostly from ST.
> While trying to get an overview of the sources I found the declarations
> are pulled into a processor specific file by external declarations. But
> where does it come from, does the linker pull in the cmsis object files
> or something?
> If so, how? There has to be a pointer to those files I couldn't find
> either.
> Second question is:
> Does the embedded target support hard floting point on STM32F4?
> TIA,
> Marc

More information about the fpc-pascal mailing list