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