STM32F103
如何使用N900透過ST-LINK V2除錯程式(OpenOCD + GDB)
連接圖
main.S
.thumb .syntax unified .section .text .org 0x0 .word 0x20005000 .word _start .align 2 .thumb_func _start: mov r0, #0 mov r1, #0 ldr r0, =0x11223344 ldr r1, =0x55667788 halt: b halt .end
Makefile
all: as -g -mcpu=cortex-m3 -mthumb -mthumb-interwork -o main.o main.S ld -T main.ld -o main.elf main.o objcopy -O binary main.elf main.bin debug: sudo openocd -f /usr/local/share/openocd/scripts/interface/stlink-v2.cfg -f /usr/local/share/openocd/scripts/target/stm32f1x.cfg -c "program main.elf halt 0x8000000" clean: rm -rf main.o main.elf main.bin
因為需透過openocd燒錄程式,而舊版openocd並沒有ST-LINK V2的配置檔,因此,司徒建議自己手動編譯openocd(目前是0.10.0),步驟如下:
$ cd $ git clone git://repo.or.cz/openocd.git $ cd openocd $ ./bootstrap $ ./configure $ make $ sudo make install
編譯
連接ST-LINK V2到N900和STM32F103開發板
燒錄程式並進入Debug模式
$ make debug
使用GDB載入要Debug的程式
$ gdb main.elf
連接到OpenOCD
(gdb) target remote localhost:3333
設定要顯示的Register
(gdb) display /x $r0 (gdb) display /x $r1
單步
(gdb) si mov r0, #0
單步
(gdb) si mov r1, #0
單步
(gdb) si ldr r0, =0x11223344
單步
(gdb) si ldr r1, =0x55667788
單步
(gdb) si b halt