如何使用jlink+gdb在stm32上除錯fans-rt
阿新 • • 發佈:2019-01-02
【相關軟體】
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