mt7628-openwrt的eclipse远程调试开发环境搭建

刚开始学习这方面,因为是新手,对于Makefile的编写很头痛,所以想使用eclipse来开发,省去了自己写这个文件的过程。参考https://blog.csdn.net/x13163303344/article/details/72848808和https://blog.csdn.net/haifengid/article/details/51778114两位的经验,整理了自己的安装过程。

1.按说明安装eclipse c/c++

完成并重新启动Eclipse,我安装的Indigo版本,用的vmware是12,ubuntu 12 .04.

Create a new project: Menu → File → New C++ Project ( resp. Cproject).

创建新工程:Menu → File → New C++ Project ( resp. Cproject).

注意上面的选项!

然后next才会现要的界面

注意下上面箭头为位置"-"

我的编译器位置,自己按照的openwrt的位置,自己填写好,下面这个是我的

/staging_dir/toolchain-mipsel_24kec+dsp_gcc-4.8-linaro_uClibc-0.9.33.2

然后next最后finish

完毕,写代码编译,就会什么运行文件了,放到openwrt设备上就可以运行了
 

2. 编译目标板文件

安装openssh-sftp-server和 gdbserver,在make menuconfig中的 development和network->ssh中,勾选相应的选项,如下图示,然后 make V=s,再从中复制出相应的ipk文件到目标板,opkg install安装即可。

3.Remote Target Setup 远程目标设置

程序编译成功后,必须安装到目标设备上去运行。

Eclipse中有一个很好的功能:Menu → Window → Show View → Remote

创建一个新的连接在两个系统(PC和目标设备)之间:

选择Linux

 

输入目标设备IP地址,主机名,并在下一个页面中选择 .ssh files。

 

选择processes.shell.linux

选择ssh.shells

完成了!但是这里一定要注意虚拟机和目标机是否在同一网段内,如果不是,要在vmware中修改网络设置,

输入用户名和密码,即目标机系统中的用户名和密码,然后就可以向目标设备中拖拽文件,甚至还能控制目标设备上的进程,我使用的是这种方法,很方便。

 

另一种方法,可以在eclipse中选择ssh终端,使用这个终端上传并在目标设备中运行HelloOpenWrt二进制文件。

4.Remote gdb Debugger Setup远程gdb调试设置

eclipse 需要先安装gdb调试工具,方法如下:

help-->install new software --> search -->GDB,安装包文件

 

为了在目标设备中实现远程调试,我们需要对调试设置进行配置,点击debug as按钮选择“Debug Configurations”。

新建一个C/C++Remote Application Debug Configuration

在Main选项卡中的C/C++ Application中输入本地文件路径,切记一定要是绝对路径

在Connection中选在前面设置的远程连接(可参考第二章远程目标设置)

别忘了定义正确的远程文件的绝对路径。

现在就可以点击Debugger设置主机的gdb文件了。

5.目标特定主机的gdb

关于目标设备的gdb,不能使用/usr/bin/gdb(Ubuntu中提供的那样),必须使用我们通过交叉编译工具链创建的gdb。除了gdb以外, tool command prefix的地址也依赖于特定的目标系统设置和再次评估。

我用的是,

/home/lei/openwrt_CC_mt76xx_zhuotk_source/staging_dir/toolchain-mipsel_24kec+dsp_gcc-4.8-linaro_uClibc-0.9.33.2/bin/mipsel-openwrt-linux-gdb;还可以使用building文件夹下的,/build_dir/toolchain-mipsel_24kec+dsp_gcc-4.8-linaro_uClibc-0.9.33.2/gdb-linaro-7.6-2013.05/gdb/gdb,两个都可以实现功能 ,不过感觉前一个经常出错连不上,后一个好一点。

可以进行调试,但是出现了,Remote 'g' packet reply is too long错误。

在网上找了下大家的解决办法,参考了https://blog.csdn.net/manfeel/article/details/38755693的方法,

修改gdb/remote.c文件,我修改了两个地方的remote.c文件,到底是哪一个起作用不确定,也不想再重新试了,哪位有兴趣可以试下,一个是在/build_dir/toolchain-mipsel_24kec+dsp_gcc-4.8-linaro_uClibc-0.9.33.2/gdb-linaro-7.6-2013.05/gdb中,另外一个是在build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/gdb-7.8/gdb中,把remote.c文件的这个地方修改如下。

static void process_g_packet (struct regcache *regcache)函数,,屏蔽对buf_len的判断。

 然后我是切换到build_dir/toolchain-mipsel_24kec+dsp_gcc-4.8-linaro_uClibc-0.9.33.2/gdb-linaro-7.6-2013.05/gdb目录下,执行make和make install,这一步很重要,不执行的话还是进行不下去。

然后远程debug就可以用了,如下图示

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值