SW4STM32 and SW4Linux fully supports the STM32MP1 asymmetric multicore Cortex/A7+M4 MPUs

   With System Workbench for Linux, Embedded Linux on the STM32MP1 family of MPUs from ST was never as simple to build and maintain, even for newcomers in the Linux world. And, if you install System Workbench for Linux in System Workbench for STM32 you can seamlessly develop and debug asymmetric applications running partly on Linux, partly on the Cortex-M4.
You can get more information from the ac6-tools website and download (registration required) various documents highlighting:

System Workbench for STM32

Is the -mslow-flash-data working for Cortex M0 or M0+? We need to use PCROP code.


one of our customer wants to useSystem Workbecnh to produce code compliant with PCROP on L0 device whcih embeds the Cortex M0.

For this he uses the -mslow-flash-data on CM3. This is not working on M0+.

the GCC doc says: This option is only supported when compiling for ARMv7 M-profile and off by default.


Is there a way how to do that?




Hi Jiri,

Regretfully, this is a GCC problem, nothing that System Workbench for TM32 can correct by itself. I don’t know why this is only supported on v7-M, but th eM0/M0+ cores are v6M compliant, not v7-M, and thus may miss some features that are needed for -mslow-flash-data to work correctly...

If you really need this, you must probably go to either the GCC mailing list or, better, the Linaro forums or mailing lists as we just use the Linaro GCC bare-metal port.

Anyway, I’m afraid that -mslow-flash-data, even if it worked, would not solve your problem, as it just instruct the compiler to minimize flash data acces, not to suppress them completely, what sould be needed for PCROP. So if what you want it using PCROP, there is a simpler way to go: you must manually edit the link editor script file to place all read-only data (.rodata) and initialization values for initialized data in an area of the flash not protected against reading by the embeded code. Then you will get protection of the pure code contained in PCROP protected area and access to the litteral pools and initialized data initial values.

You may also look at using RDP instead of PCROP: th ecode will then be able to read the litteral pool, but only your code could be executed as the memory will be protected (it must be fully erased to be able to be reprogrammed, thus protecting your code).

Hope this helps,


Thank you for your replies!

BR, Jiri