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

Migration of code : libc problem.


I’am new to openSTM32 AC6... (and I am trying to import some source from my projects... compiled with a previous version of arm-none-eabi-gcc and an “home made” eclipse package very similar to openSTM32)

(First, I met a problem with the FPU configuration... I had to recompile my libraries in “soft” mode. But this looks solved.)

When I launch my program, I get a strange software execution when calling setvbuf (or others functions fromp libc)...
The disassembly listing shows me this BAD code (it is evident that this assembler listing is not right code... but maybe datas or a code for an other architecture ?)

0804a6bc: stmia r1!, {r5, r6}
0804a6be: b.n 0x804a200 // Of course, this is absurd!
0804a6c0: mvns r0, r7
0804a6c2: stmdb sp!, {sp, lr}
0804a6c6: b.n 0x804a202
0804a6c8: movs r0, r0
0804a6ca: b.n 0x804ad7a
0804a6cc: ands r0, r0
0804a6ce: b.n 0x804aa12
0804a6d0: strb r1, r0, #0
0804a6d2: b.n 0x804aa16
0804a6d4: str r0, sp, #8
0804a6d6: b.n 0x804aa1a

Same problem for other functions of libc (puts, printf...)
I guess there is a problem in my project configuration or in the linker script...

Any idea?

I found this bug...
It seems the flag fpv4-sp-d16 was defined... and must not be defined in my project.

I am now on a new problem...

the generated file : “objects.list” contains some absolute path (windows form... M:/.........)
the compilation seems to be ok, but the code fall into WWDOG IRQ (without any reason)... some functions appears to be missed?

Manually : (in CMD.exe)

This works :
arm-none-eabi-gcc -T”“../QS/stm32f4xx_flash.ld”” -nostartfiles -L”../stm32f4xx” -Wl,-Map,Strategie.map -mcpu=cortex-m4 -mthumb -g3 -gdwarf-2 -o “my.elf” ./my_object1.o ./my_object2.o and all the objects ...

This does not work :
arm-none-eabi-gcc -g3 -gdwarf-2 -mcpu=cortex-m4 -mthumb -nostartfiles -L”../stm32f4xx” -T”../QS/stm32f4xx_flash.ld” -Wl,-Map=output.map -lm -o “my.elf” @”objects.list” -lstm32f4xx

objects.list contain the same list, but some objects are in this format :

My previous version of eclipse do not use this objects.list to build this linker command...