electronics/stm32
Memory Utilization
text
is what ends up in flash (only). data
is initialized variables: need to be storad in flash, then end up in RAM. bss
is uninitialized data: nothing in flash, but does consume RAM.
The -x --format=sysv
flags to arm-none-eabi-size
can be helpful.
Debugging
Access all registers:
(gdb) x/x 0xE000ED14
0xe000ed14: Cannot access memory at address 0xe000ed14
(gdb)
0xe000ed18: Cannot access memory at address 0xe000ed18
(gdb) show mem inaccessible-by-default
Unknown memory addresses will be treated as inaccessible.
(gdb) set mem inaccessible-by-default off
(gdb) x/x 0xE000ED14
0xe000ed14: 0x00000200
Uploading via SWD
upload_blackmagic.sh
:
#!/bin/bash
arm-none-eabi-gdb build/stm32f401cc_project.elf < load_blackmagic.gdb
sleep 1.0
load_blackmagic.gdb
:
target extended-remote /dev/ttyACM0
monitor swdp_scan
attach 1
load
quit
References
Keil Application Note 209: Using Cortex-M3 and Cortex-M4 Fault Exceptions
ARM Cortex-M3 HardFault Status Register Documentation
“STM32/ARM Cortex-M3 HOWTO: Development under Ubuntu (Debian)” (fun-tech.se)