Chinaunix首页 | 论坛 | 博客
  • 博客访问: 739413
  • 博文数量: 124
  • 博客积分: 3156
  • 博客等级: 中校
  • 技术积分: 1584
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-02 10:29
文章分类

全部博文(124)

文章存档

2012年(3)

2011年(2)

2010年(61)

2009年(34)

2008年(24)

我的朋友

分类:

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 变量名   显示变量的值;

阅读(2629) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:gun工具链介绍(转)

给主人留下些什么吧!~~