Loading...
 

Zephyr project on STM32

   Zephyr Workbench, a VSCode extension to manage Zephyr on STM32.
It enables users to easily create, develop, and debug Zephyr applications.
Main features:
  • Install host dependencies.
  • Import toolchain and SDK.
  • Create, configure, build and manage apps.
  • Debug STM32.
You can directly download it from the VSCode marketplace
For more details, visit the Zephyr Workbench

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.