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當前指向的地址
1 mem 30000000 8 /*從30000000地址讀取8位數據*/ 2 3 J-Link>mem 30000000 4 /*用於測試內存是否完成初始化*/ 4 5 30000000 = 01 DA A0 E3 6 7 從低位到高位讀 8 9 J-Link>w4 30000000 0x12345678 /*在0x30000000寫16位數據*/ 10 11 J-Link>mem 30000000 4 12 13 30000000 = 78 56 34 12
本次調試所用到的命令:
1 h halt 2 g go 3 s Single step the target chip 4 mem Read memory. Syntax: mem <Addr>, <NumBytes> (hex) 5 w1 Write 8-bit items. Syntax: w1 <Addr>, <Data> (hex) 6 w2 Write 16-bit items. Syntax: w2 <Addr>, <Data> (hex) 7 w4 Write 32-bit items. Syntax: w4 <Addr>, <Data> (hex) 8 q Quit 9 qc Close JLink connection and quit 10 r Reset target (RESET) 11 Regs Display contents of registers 12 wreg Write register. Syntax: wreg <RegName>, <Value> 13 SetBP Set breakpoint. Syntax: SetBP <addr> [A/T] [S/H] 14 SetWP Set Watchpoint. Syntax: <Addr> [R/W] [<Data> [<D-Mask>] [A-Mask]] 15 ClrBP Clear breakpoint. Syntax: ClrBP <BP_Handle> 16 ClrWP Clear watchpoint. Syntax: ClrWP <WP_Handle> 17 loadbin Load binary file into target memory. 18 Syntax: loadbin <filename>, <addr> 19 SetPC Set the PC to specified value. Syntax: SetPC <Addr> 20 ---- JTAG ------------ 21 Config Set number of IR/DR bits before ARM device. 22 Syntax: Config <IRpre>, <DRpre> 23 speed Set JTAG speed. Syntax: speed <freq>|auto|adaptive, e.g. speed 2000, 24 i Read JTAG Id (Host CPU) 25 26 Jlink 命令調試-斷點/條件斷點 27 28 普通斷點: 29 30 通常使用的普通斷點的添加方法:SetBP <addr> [A/T] [S/H] 31 條件斷點: 32 33 watch point, 可以視為一種條件斷點。 34 設置變量變為指定值時觸發的斷點: 35 setWP <addr> [<accesstype>] [<size>] [<data> [<data mask> [<addr mask>]]] 36 for example: 當變量m_marsh_test變為0xDEADBEEF時觸發 37 通過map文件得到m_marsh_test的變量地址為0x20004f58; 38 setWP 0x20004f58 W S32 0xDEADBEEF 0 0
調試要對匯編語言有充分的理解,.dis的反匯編文件作為調試中的重要參考文件。