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

Re: SW4STM32 or CubeMX to init STM32 device


Hi Elliott,

No there is a small difference, that may make the difference, at least regarding how you present these:
You should

  1. Create a new workspace (empty folder named, for example, myWS
  2. Generate CubeMX code in a subdirectory of this folder (that is in myWS\myPROJECT)
  3. Open System Workbench for STM32, using myWSas workspace
    • The project explorer will be empty
  4. Import the CubeMX-generated project:
    • File >> Import...
    • Browse (should automatically select myWS)
    • it should show just one project, named “myPROJECT Configuration”, automatically selected
    • Click “Finish”

Now you have a working project; however there is a small potential problem: Your project is called “myPROJECT Configuration”, and a name with a space in it is, at least, a burden (especially on Linux but also on Windows). So you should probably:

  1. Rename the generated files
    • Right click on project >> Properties
    • C/C++ Build >> Settings >> Build Artifact
    • Suppress ” Configuration” from the artifact name
    • OK
  2. Do not rename your project
    • Eclipse seems to break all linked resources pointing to project-relative paths when the project is renamed...

Then you should have a working project that can be compiled correctly. However, the CubeMX-generated project do not include a board description with debug connection information: kind of MCU, debug probe, debug link. You thus can’t debug as simply as usually.

One solution may be to create a debug configuration then select your debug script manually by

  • Debug As >> Debug Configurations...
  • Create a Ac6 STM32 Debugging configuration
  • Choose your project and executable (if needed)
  • Select the Debugger tab
  • If there is a NO SCRIPT FOUND red error message (most surely currently) select the “Use local script” redio button
  • Provide a debug script by one of three means:
    1. Browse to your System Workbench install directory, then plugins\fr.ac6.mcu.debug_1.1.0.201503121050\resources\openocd\scripts\board and look for the script for your board (you may find also some st-specific scripts in st_board)
      • This is usually the way to use for a standard ST board (eval, disco or nucleo)
    2. Manually search for a close board in the directory above then manually copy it to your project main directory, then browse to it and select it
      • This is usually a good way to go for a custom board that is very close to an ST board (often an EVAL board), including the same debug interface
    3. Get a custom board debug script created when creating a project using your custom board (may be a no-firmware project with an empty main program)
      • You just have to copy the System Workbench-generated debug script in your project and browse to it
      • This is usually convenient if you define your own board, create a custom board in a System Workbench-generated test project and want to reuse it in your CubeMX-generated project

Once your configuration is working, you can launch it by using the small “bug” button in the top toolbar (either click it directly or use the small arrow on its right to see the last valid debug configurations used).

It’s not perfect, and a bit less practical then for System Workbench-created projects, but it should work without too much problems.

Please let me know if it works (or if you have other problems).