1. 程式人生 > >如何使用jlink+gdb在stm32上除錯fans-rt

如何使用jlink+gdb在stm32上除錯fans-rt

【相關軟體】

windows xp

MinGW

arm-none-eabi-gcc

arm-none-eabi-gdb

JLink_V490 驅動 

【操作步驟】

1.執行JLink.exe


2.執行JLinkGDBServer.exe 選擇 USB/STM32F103C8(根據你的MCU型號選擇)/JTAG/1000KHZ


3.執行 MinGW shell,並在 shell 中執行 arm-none-eabi-gdb

  在 gdb 中執行以下命令:

  file stm32-mini.elf                               開啟檔案

  target remote localhost:2331           連線到GDB SERVER

  load                                                  裝入檔案

  b CORE_Starting                              設定斷點

  c                                                        開始執行程式碼到斷點處


【注意事項】

1.JLINK 不能只執行GDB SERVER,會導致MCU初始化外部晶振卡死。

2.gcc 編譯引數需要增加 -ggdb3 

3.ld 連線不要加引數 -s 【修正,之前有誤】

【GDB常用除錯命令】

bt              列印呼叫棧資訊
i r             列印暫存器資訊
c               (繼續)執行程式碼到下一斷點處
si              單條指令執行
ni              按指令執行到下一個斷點
b linenumber    在原始檔某行設定斷點,例如 b 5
b function      在函式入口處設定斷點,例如 b PendSV_Handler
b *address      在指定記憶體地址處設定斷點,例如 b *0x08005a1c
b               不帶引數,表示在下一條指令設定斷點,在呼叫某函式前使用該
                命令可以使函式執行返回後立即中斷
i b             檢視斷點資訊
d id            刪除斷點(根據i b檢視到的ID號刪除),例如 d 3 刪除3號斷點


display /5i $pc 檢視從PC開始的5條指令
x /5i $pc       檢視從PC開始的5條指令
x /4xw address  檢視記憶體資訊,以16進位制32位列印 address 處的記憶體資訊
                4表示列印次數,x表示16進位制,w表示雙字

disassemble     檢視彙編程式碼
disassemble /m  檢視彙編程式碼和原始碼
disassemble /r  檢視16進位制機器碼
l               檢視原始碼
l function      檢視某函式原始碼,例如 l CORE_Starting
l linenumber    從當前檔案某行開始檢視原始碼,例如 l 1231