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

Printf via SWV doesn't print anything


>> That was really helpful. I soldered and make the change to the linker script and YES! it is working fine.
Good to hear that

>> Now I read a lot about semihosting. What is the difference between the ITM and semihosting. Could you point me in the right direction by explaining or giving me the links of resources?
Check these links : SemihostingQuestion, ITMQuestion

>> Is semihosting possible in System WorkBench? or Is there any available methodology presently available where we can see the output in openOCD terminal?
Yes, it is possible
In Debug configuration > Startup Tab , add this :

monitor arm semihosting enable

and in Project, Properties, C/C++ Build, Settings, MCU GCC Linker, Miscellaneous, Linker flags,

-specs=nosys.specs -specs=nano.specs -specs=rdimon.specs -lc -lrdimon

since you have used rdimon.specs, you don’t need to use syscalls.c
And finally in your code, you have only to call the initialize_monitor_handles in the begin of the main routine

#include <stdio.h>
#include <stdlib.h>
# ….

extern void initialise_monitor_handles(void);

int main(void) {

  printf("Hello !\n");


  puts("Check your openocd console.\n");
  printf("This works too\n");