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的反汇编文件作为调试中的重要参考文件。