S3C2440開發板啟動時候選擇NandFlash啟動,然後輸入如下命令:
r /*復位cpu*/
h /*暫停CPU*/
loadbin e:/les.bin 0 /*下載e目錄下的leds.bin到0地址*/
setpc 0 /*設定pc執行地址為下載程式碼的地址0*/
s /*單步除錯*/
regs /*檢視暫存器是否和預想的一樣*/
s /*繼續單步除錯*/
每執行一行s,會彈出一個PC=xxxx的地址,
這是還未執行的,PC當前指向的地址
mem /*從30000000地址讀取8位資料*/ J-Link>mem /*用於測試記憶體是否完成初始化*/ = DA A0 E3 從低位到高位讀 J-Link>w4 0x12345678 /*在0x30000000寫16位資料*/ J-Link>mem =
本次除錯所用到的命令:
h halt
g go
s Single step the target chip
mem Read memory. Syntax: mem <Addr>, <NumBytes> (hex)
w1 Write -bit items. Syntax: w1 <Addr>, <Data> (hex)
w2 Write -bit items. Syntax: w2 <Addr>, <Data> (hex)
w4 Write -bit items. Syntax: w4 <Addr>, <Data> (hex)
q Quit
qc Close JLink connection and quit
r Reset target (RESET)
Regs Display contents of registers
wreg Write register. Syntax: wreg <RegName>, <Value>
SetBP Set breakpoint. Syntax: SetBP <addr> [A/T] [S/H]
SetWP Set Watchpoint. Syntax: <Addr> [R/W] [<Data> [<D-Mask>] [A-Mask]]
ClrBP Clear breakpoint. Syntax: ClrBP <BP_Handle>
ClrWP Clear watchpoint. Syntax: ClrWP <WP_Handle>
loadbin Load binary file into target memory.
Syntax: loadbin <filename>, <addr>
SetPC Set the PC to specified value. Syntax: SetPC <Addr>
---- JTAG ------------
Config Set number of IR/DR bits before ARM device.
Syntax: Config <IRpre>, <DRpre>
speed Set JTAG speed. Syntax: speed <freq>|auto|adaptive, e.g. speed ,
i Read JTAG Id (Host CPU) Jlink 命令除錯-斷點/條件斷點 普通斷點: 通常使用的普通斷點的新增方法:SetBP <addr> [A/T] [S/H]
條件斷點: watch point, 可以視為一種條件斷點。
設定變數變為指定值時觸發的斷點:
setWP <addr> [<accesstype>] [<size>] [<data> [<data mask> [<addr mask>]]]
for example: 當變數m_marsh_test變為0xDEADBEEF時觸發
通過map檔案得到m_marsh_test的變數地址為0x20004f58;
setWP 0x20004f58 W S32 0xDEADBEEF
除錯要對組合語言有充分的理解,.dis的反彙編檔案作為除錯中的重要參考檔案。