ubuntu下arm-linux-gdb+JLinkGDBServer调试TQ2440

之前一直是Jlink烧写到Nand Flash中,但因为遇到问题,所以想要用一下D版Jlink的调试功能。

其实一开始还是满担心的,到底有没有调试功能啊,不过最终还是证明社会主义好!

网上有用insight和Eclipse调试的。insight,太丑(其实是因为我懒),Eclipse在我的VM ubuntu里打开,巨慢无比。

而且某种角度来说Eclipse也是用arm-linux-gdb(一下简称gdb),而且设置还据麻烦。所以干脆好好研究一下gdb调试


首先安装gdb(省略)

安装Jlink(省略)

一个中断打开JLinkGDBServer

另一个打开gdb

gdb arm-linux-gdb file.efl
……
target remote localhost:2331	// 连接板子
b _start
load							//烧写进去了	
c

问题来了,板子无法运行下去。


感谢lanser,他提供了解决办法。

原来gdb把程序复制到0x30000000(makefile里写着)同时把pc也设置到了这个位置。

当然这里的0x0处的程序并不是file的2进制表示,程序开始后2440会自动把nand内的程序复制进来。

(gdb) i registers
r0             0xfff9ffff	4294574079
r1             0xffffbeff	4294950655
r2             0x56000014	1442840596
r3             0x56000014	1442840596
r4             0xffffefff	4294963199
r5             0xedffbfbf	3992960959
r6             0xfefeffff	4278124543
r7             0xd6fdffff	3606970367
r8             0xfdffffef	4261412847
r9             0xffffffff	4294967295
r10            0xfffffdfe	4294966782
r11            0xffc	4092
r12            0xfffbfffb	4294705147
sp             0xff0	0xff0
lr             0x8	8
pc             0x30000000	0x30000000 <_start>
cpsr           0x200000d3	536871123
(gdb) x/16xw 0
0x0:	0xe3a0da01	0xeb000005	0xeafffffe	0xe52db004
0x10:	0xe28db000	0xe28bd000	0xe8bd0800	0xe12fff1e
0x20:	0xe52db004	0xe28db000	0xe24dd00c	0xe3a02456
0x30:	0xe2822010	0xe3a03456	0xe2833010	0xe5933000


我们只需要设置pc寄存器指向0处即可

set $pc=0
记下来continue 就可以了。


参考:http://my.oschina.net/u/1246604/blog/191991



你可能感兴趣的:(嵌入式)