TMS320DM8168下GDB远程调试环境的搭建
[复制链接]
DM8168下GDB调试环境的搭建
(GDB的安装与配置与调试)
1、修改虚拟机ubuntu上面的环境变量(添加下面两行)
#vi /etc/bash.bashrc
export PATH="$PATH:/usr/local/arm-gdb/bin" #arm-gdb调试平台
export PATH="$PATH:/opt/DVRRDK_03.00.00.00/ti_tools/cgt_a8/arm-2009q1/bin/" #dm8168交叉编译平台
2、源码下载
下载地址:http://ftp.gnu.org/gnu/gdb/
选择版本:gdb-7.5.tar.gz(下载)
#tar jxvf gdb-7.5.tar.gz
#cd gdb-7.5
#./configure --target=arm-none-linux-gnueabi --prefix=/usr/local/arm-gdb –v
(--target配置gdb的目标平台,--prefix配置安装路径,当然其他路径也可以,须在环境变量中声明,启动arm-linux-gdb需要,可更改/etc/profile或~/.bash_profile或~ /.bashrc,添加export PATH=$PATH:/usr/local/arm-gdb/bin,这样可以找到路径)
3、修改程序
如果不修改会在调试出现“Remote 'g' packet reply is too long ”这个错误。
在/gdb-7.5/gdb/remote.c
if (buf_len > 2 * rsa->sizeof_g_packet)
error (_(“Remote ‘g’ packet reply is too long: %s”), rs->buf);
在修改为:
if (buf_len > 2 * rsa->sizeof_g_packet)
{
rsa->sizeof_g_packet = buf_len ;
for (i = 0; i < gdbarch_num_regs (gdbarch); i++)
{
if (rsa->regs.pnum == -1)
continue;
if (rsa->regs.offset >= rsa->sizeof_g_packet)
rsa->regs.in_g_packet = 0;
else
rsa->regs.in_g_packet = 1;
}
}
4、编译
#make
#make install
(生成arm-linux-gdb,并存入/usr/local/arm-gdb /bin/,查询确认下)
进入gdb/gdbserver目录:
cd gdb-7.5/gdb/gdbserver
[root@DDing gdbserver]# 必须在gdbserver目录下运行配置命令,此时才能用相对路径
./configure --target=arm-none-linux-gnueabi --host=arm-linux
(--target=arm-none-linux-gnueabi表示目标平台,--host表示主机端运行的是arm-linux-gdb,不需要配置—prefix,因为gdbserver不在主机端安装运行)
#make CC=/opt/DVRRDK_03.00.00.00/ti_tools/cgt_a8/arm-2009q1/bin/arm-none-linux-gnueabi-gcc
(这一步要指定你自己的arm-none-linux-gnueabi的绝对位置,我试过相对的不行,提示make: arm-linux-gcc: Command not found,可好多人都用的相对路径,即直接赋值arm-linux-gcc,可采取make时传递参数,也可以直接修改gdbserver目录下的 Makefile文件中的环境变量CC)
5、调试
在开发板上面运行下面命令
./gdbserver 192.168.1.89:7893 test_8168
gdbserver为虚拟器中gdb-7.5/gdb/gdbserver生成的文件,192.168.1.89为虚拟机的IP地址,7893为端口号,test_8168为带-g编译的二进制程序
在虚拟机上运行
#arm-none-linux-gnueabi-gdb test_8168
启动后再连接开发板
target remote 192.168.1.77:7893
其中192.168.1.77为开发板IP地址,7893为端口号。
就可以开始进行调试了。
|