Loading...
 

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


STM32H7 strcat bug

Hello.
I was wondering about a Hard Fault.
Stepping through I notice strcat() uses the string content as the address for the destination.
In the function there is an extra command
ldr r0, [[r3, #0]] (why?)
to load the content from the address, instead of using a simple
mov r0, r3

Bildschirmfoto 2018 02 11 Um 15.10.59

Thank you.

France

Hi,

There’s no bug in strcat; the line you don’t understand loads the first 4 bytes from PCC_VERSION (“2.08”) then stores them at the end of msgStr (r2 contains the length of msgStr, that is the number of bytes before the first zero-byte in msgStr).

Strcat is effectively a dangerous function for two reasons:

  1. You may overflow the destination buffer, as strcat can’t make any check
  2. If ever the destination string was not initialized, the initial strlen may yield a very big value and you will write somewhere where you don’t expect...


So I urge you to check your code, but I can ensure you the strcat code is correct...

Hope this helps,

Bernard (Ac6)

You are right. I read STR in the wrong way.
And I found the reason of the hard fault:
In MPU_Config there was a mistyped size of MPU_REGION_SIZE_512MB
instead of MPU_REGION_SIZE_512KB. The area where strcat() has to
copy the data to was protected.
I’m sorry for the inconvenience.