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 two short videos (registration required) highlighting:

System Workbench for STM32

STM32F4 DMA Interrupt big latency :(



If optimizing your code cause a problem, probably this come from your code missing synchronization; the GCC compiler is optimizing your code quite aggresively, so when programming parallel devices like DMA you should be careful on two points:

  1. check that all registers and DMA descriptors are correctly declared as volatile
  2. check that, if there is ordering problems (like two writes that must occur in a definite order with one being to standard memory) you placed memory barriers between them (using the CMSIS __MSB() intrinsic

The LED code most probably do not have these kind of problems as this uses a simple register-based interface; however the DMA controller running in parallel with the CPU, you must be absolutly sure, when you validate the transfert, that all other information was correctly available to the DMA controller.

Hope this helps,

Bernard (Ac6)