BDI2000和GDB联合调试mips
BDI2000和GDB联合调试mips程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛0@"^'z0X'U
'?8j(r/V2X6x2H%~;t.Wtech.techweb.com.cn调试程序是必不可少的,在嵌入式开发中,因为开发的程序在目标板而不在本地主机上运行,所以调试手段也有很大差异,主要用到的工具:BDI2000和GDB. BDI2000有A和C两个版本,在接口上稍有差异,在国内多用C版本。对于不同架构的处理器,BDI的固件是不一样的(所谓固件就是BDI的操作系统).针对adm5120板子的固件是:b20r4kgd.107。 'l%}2l;k7A0P"w2b)s0M
8d*}*k"g.C1d%l0^
使用之前准备好需要的文件: 6M0y%p!J7z7l$x)w
l *.cfg 目标板的配置文件,是关于目标板和主机的IP信息等配置,需要必要的改动;我们这款板子是adm5120.cfg;
&H8` @7S%h*s3L!pTechWeb-技术社区l *.def 不用改,是板子处理器的寄存器、内存信息;这里是reg4kc.def; 配置步骤如下:
4[1v6H:a!ktech.techweb.com.cn9S)g:q)_:J9{!X9Z0u$x9?
-t5[%R'v8X/S+]tech.techweb.com.cn 7@*P6c'v2x(J6k
1、连线 TechWeb-技术社区-u"d$`'u/`/[
第一次使用BDI2000要先用串口接到主机上,按照说明书接好Jtag线,BDI2000是通过这根线控制目标板的。用网线连接BDI,主机可以telnet上。要先开BDI再开目标板(配置时只接上电源和串口线即可); 1])H0d/Y#u,P:A-N
2、配置BDI3q2d"P:p2B)k*Y
解压bdisetup。zip文件,直接make生成 bdisetup配置工具。 ,L'\5p5V*C2X8Q
用bdisetup(相当于minicom)连接BDI,通过串口更改其IP和配置;程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛2^ p7D7j7[-i:a p5N
./bdisetup -c -i192.168.81.45 -h192.168.81.137 -m255.255.255.0 -g192.168.81.1 -fadm5120.cfg tech.techweb.com.cn2K5R8W#S'd!Q7i*g
(注:adm5120.cfg和reg4kc.def应放在TFTP服务器的根目录下)
1s7t,P*k"d,R"c查看刚才的配置:TechWeb-技术社区2@ d!g2p!F"O%?%Y6r
./bdisetup -v程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛2Q,^ b1z7_/^4?
显示如下:tech.techweb.com.cn+d F:N.C.P
BDI Type : BDI2000 Rev.C (SN: 94356926)TechWeb-技术社区"I8M(M.z3]1o
Loader : V1.05
2P-_&X)B)\-QFirmware : V1.07 bdiGDB for MIPS32,c+[0v1R,Q(M%~
Logic : V1.00 MIPS32/MIPS64
:\6{;h2\4U3nTechWeb-技术社区MAC : 00-0c-01-94-35-69"s;r-U(J#W6u2Q4H
IP Addr : 192.168.81.45
+U1d+n%Y5G3t.}:p&mSubnet : 255.255.255.0程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛2@0p/[0U)c%e0|
Gateway : 192.168.81.1'H.])?7r(\!e:j
Host IP : 192.168.81.137
5l+r1h3A+]-oConfig : adm5120.cfg-g5}4s!_;?
当BDI2000在配置模式时MODE LED会不停地闪烁,且此时tenlet和调试连接会失败。因此,须用下方式退出配置模式。TechWeb-技术社区"A'V,Z)|4A*y
a. ./bdisetup -v -s
*G1c%]%|(kb. 直接断电再过5s再上电。
0]$m5e1O&^5J8N;t7G程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛
+T:C'i8L$v6y3、把adm5120.cfg和reg4kc.def考到tftproot下,这样当telnet上BDI2000时,它会自动到这个目录下找这两个文件对BDI进行配置; 程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛'V5]8N#p,[,I,V1g
tech.techweb.com.cn/p V+e(~8D%\$O9T
4、telnet 4Z5x/M8J/C0G.{(B8Q0U-p
telnet BDI2000的IP 然后就可以对目标板操作了;一些命令如下:
&M8^,q&N9G9z%S.s$]6s.i!V程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛BDI>go 执行程序;
4`/|6K)V6}.l4B'l*U'lTechWeb-技术社区BDI>halt 停止;
4f3z+q M%X3F)D/b6oBDI>load 0xa0300000 zImage 下载内核镜像文件;
)^&i1^4R5[.H#L$c$E4g"Gtech.techweb.com.cnBDI>rd pc 看pc寄存器的值;
7N/v'@2C8J n9STechWeb-技术社区BDI>ti 单步执行; tech.techweb.com.cn+E+r$V:Z*A%t
BDI>info 看信息;
2]8c.u6E8o)m;e$c.y:L-t'H3U-B
]8_/@7s0Z'Q(h&?.O程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛
:O"E#A,Z"x3s-e)l
-M5q8U2J.@)E2J0`1j程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛"L7k6G$m%o:p
GDB安装使用
%w:U j'H&{2M
3U!m P k x%@4f n.z8n0Ctech.techweb.com.cn源码是gdb-6.4.tar.gz tech.techweb.com.cn*n'K9_0C%q*f.W0~
1、安装 "|5~/x5G5r4d
./configure –target=mipsel-linux –prefix=/usr/local/bin 生成makefile文件; tech.techweb.com.cn*`/D9e)x'r6S&[![
Make tech.techweb.com.cn"Q&h+s5S%m,K.M%t"E
Make install
1h1K+o3S+I4?0Y程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛生成两个工具,mipsel-linux-gdb和mipsel-linux-run; TechWeb-技术社区1L9S8~,U1C.x4e-c
4C/^ s(F,W*L2M程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛2、调试
.D$g%h*k D7G-y;z!v&OTechWeb-技术社区源码用-g标志生成带有调试信息的可执行程序。调试的时候是先把带有调试信息的可执行程序传到开发板上,用BDI2000起动起来,然后,在源码目录下用如下命令进入调试状态: ;m+T!B5P4I#p0y.J%W
Arm-limux-gdb test 调试test TechWeb-技术社区+z*@9f#E(y j/k
然后设置目标:
)i3f*O+n!f!D程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛 (GDB)Target remote (bdi)ip:2001 2B7]'Z&w0f w.f
单单这样GDB是没有办法自己启动开发板上的程序的,必须用BDI2000启动,用ti命令单步执行一步即可,下面还有些常用命令: 程序开发,操作系统,服务器,源码下载,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛/m;^4Z3h"F7q(V$O3~
(GDB)tb start_kernel 设置临时断点;
'D*N4j7U8|$i(o"V (GDB)cont 继续执行到断点; %z)j2r,{)};p3c%b
(GDB)list 列出执行的语句上下文; TechWeb-技术社区&{*m9|(K.S8C;u(i5k
(GDB)print 变量名 显示变量的值;
|