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


返回上一頁