分类:
2008-08-02 11:16:37
BDI2000和GDB联合调试mips
调试程序是必不可少的,在嵌入式开发中,因为开发的程序在目标板而不在本地主机上运行,所以调试手段也有很大差异,主要用到的工具:BDI2000和GDB. BDI2000有A和C两个版本,在接口上稍有差异,在国内多用C版本。对于不同架构的处理器,BDI的固件是不一样的(所谓固件就是BDI的操作系统).针对adm5120板子的固件是:b20r4kgd.107。
使用之前准备好需要的文件:
l *.cfg 目标板的配置文件,是关于目标板和主机的IP信息等配置,需要必要的改动;我们这款板子是adm5120.cfg;
l *.def 不用改,是板子处理器的寄存器、内存信息;这里是reg4kc.def; 配置步骤如下:
1、连线
第一次使用BDI2000要先用串口接到主机上,按照说明书接好Jtag线,BDI2000是通过这根线控制目标板的。用网线连接BDI,主机可以telnet上。要先开BDI再开目标板(配置时只接上电源和串口线即可);
2、配置BDI
解压bdisetup。zip文件,直接make生成 bdisetup配置工具。
用bdisetup(相当于minicom)连接BDI,通过串口更改其IP和配置;
./bdisetup -c -i192.168.81.45 -h192.168.81.137 -m255.255.255.0 -g192.168.81.1 -fadm5120.cfg
(注:adm5120.cfg和reg4kc.def应放在TFTP服务器的根目录下)
查看刚才的配置:
./bdisetup -v
显示如下:
BDI Type : BDI2000 Rev.C (SN: 94356926)
Loader : V1.05
Firmware : V1.07 bdiGDB for MIPS32
Logic : V1.00 MIPS32/MIPS64
MAC : 00-0c-01-94-35-69
IP Addr : 192.168.81.45
Subnet : 255.255.255.0
Gateway : 192.168.81.1
Host IP : 192.168.81.137
Config : adm5120.cfg
当BDI2000在配置模式时MODE LED会不停地闪烁,且此时tenlet和调试连接会失败。因此,须用下方式退出配置模式。
a. ./bdisetup -v -s
b. 直接断电再过5s再上电。
3、把adm5120.cfg和reg4kc.def考到tftproot下,这样当telnet上BDI2000时,它会自动到这个目录下找这两个文件对BDI进行配置;
4、telnet
telnet BDI2000的IP 然后就可以对目标板操作了;一些命令如下:
BDI>go 执行程序;
BDI>halt 停止;
BDI>load 0xa0300000 zImage 下载内核镜像文件;
BDI>rd pc 看pc寄存器的值;
BDI>ti 单步执行;
BDI>info 看信息;
GDB安装使用
源码是gdb-6.4.tar.gz
1、安装
./configure –target=mipsel-linux –prefix=/usr/local/bin 生成makefile文件;
Make
Make install
生成两个工具,mipsel-linux-gdb和mipsel-linux-run;
2、调试
源码用-g标志生成带有调试信息的可执行程序。调试的时候是先把带有调试信息的可执行程序传到开发板上,用BDI2000起动起来,然后,在源码目录下用如下命令进入调试状态:
Arm-limux-gdb test 调试test
然后设置目标:
(GDB)Target remote (bdi)ip:2001
单单这样GDB是没有办法自己启动开发板上的程序的,必须用BDI2000启动,用ti命令单步执行一步即可,下面还有些常用命令:
(GDB)tb start_kernel 设置临时断点;
(GDB)cont 继续执行到断点;
(GDB)list 列出执行的语句上下文;
(GDB)print 变量名 显示变量的值;