嵌入式linux之nfs挂载及gdb调试环境的搭建

1开发板和虚拟机互ping

nfs即网络文件系统,要挂载nfs之前首先要让开发板和ubuntu可以相互ping通。一般在vmware上运行ubuntu,为了能够上网,启动时在网络适配器的选项中选择NAT模式,NAT模式的意思就是和主机共享网络,主机能上网则虚拟机也能上网主机不能上网虚拟机也不能上网。

启动ubuntu后,此时是能联网状态,需要先安装NFS相关的两个软件:
sudo apt-get install rpcbind
sudo apt-get install nfs-kernel-server

此后关闭虚拟机,启动前重新设置网络配置,在网络适配器的选项中把NAT模式改为桥接模式,不要勾选下方的复制物理网络状态,再在编译菜单中的虚拟网络编辑器中,把下拉框中的自动改成对应的有线网卡。
在这里插入图片描述启动后点击上方的,网络连接,选择编辑连接,改为手动设置IP地址
在这里插入图片描述
改完之后断开重连一下,输入命令ifconfig可以看到刚刚设置的IP
在这里插入图片描述要注意下次想要再联网时,开机时重新设置为NAT模式,并编辑网络把手动设置IP改为DHCP自动获取IP。

现在在开发板端设置IP,要和虚拟机设置在同一个网段,输入如下命令:
echo “ifconfig eth0 192.168.2.123” >> /etc/init.d/rcS
reboot
这时开发板就可以和虚拟机互ping了。

2 NFS挂载

之前已经安装NFS相关软件,现在输入以下命令打开配置文件:
sudo gedit /etc/exports
在文件里添加/work/linux/nfs_root *(rw,sync,no_root_squash)
这个/work/linux/nfs_root目录是我在虚拟机上挂载的目录,可以根据需要更改。接下来启动NFS服务器
sudo service rpcbind start
sudo /etc/init.d/nfs-kernel-server restart

然后在开发板端,cd到mnt目录下,新建一个nfs文件夹,挂载命令如下:
mount -t nfs -o intr,nolock,rsize=1024,wsize=1024 192.168.2.5:/work/linux/nfs_root /mnt/nfs
注意这里指定了传输速率,只使用mount -t nfs -o默认的是UDP连接,传输大文件时会出错。

可以在虚拟机侧通过showmount -a显示挂载信息。在开发板侧,进入nfs文件夹,输入ls命令,就可以看到/work/linux/nfs_root目录下的文件内容了。

3 gdb配置

在gcc-3.4.5-glibc-2.3.6目录里并没有gdb相关工具,所以需要自行下载安装,去官网下载gdb-7.8.tar.gz这个包,一定要这个版本,我试了gdb-8.0版本编译会出错。

解压后进入gdb-7.8的目录,新建文件夹arm-gdb,输入下列命令
./configure --target=arm-linux --prefix=/work/linux/gdb-7.8/arm-gdb
–prefix指定了编译生成的arm-linux-gdb存放目录,然后运行make,make install就可以在arm-gdb/bin目录下生成arm-linux-gdb

接着在gdb-7.8目录中,切换到gdb/gdbserver目录中,输入以下命令
./configure --target=arm-linux --host=arm-linux --prefix=/work/linux/nfs_root
这里–host要指定宿主机环境为arm,因为gdbserver是在开发板上运行的,然后输入
命令编译
make CC=/work/linux/gcc-3.4.5-glibc-2.3.6/bin/arm-linux-gcc
要指定交叉编译工具,最后make install,在/work/linux/nfs_root/bin目录下生成arm-linux-gdbserver,然后把这个文件拷贝到开发板的/usr文件夹。

在虚拟机端用交叉编译生成一个测试程序:
arm-linux-gcc -g -o testdebug hell.c
生成的testdebug拷到/work/linux/nfs_root目录下,然后在开发板侧的/mnt/nfs文件夹下运行以下命令开启调试监听
/usr/arm-linux-gdbserver 192.168.2.5:1234 ./testdebug

之后在虚拟机端的/work/linux/nfs_root文件夹下执行
…/gdb-7.8/arm-gdb/bin/arm-linux-gdb ./testdebug
开启远程调试,输入target remote 192.168.2.123:1234正式运行gdb,这里192.168.2.123是开发板的ip,1234是开发板运行gdbserver监听的端口。

最后在虚拟机侧可以在eclipse里设置arm-linux-gdb调试,关于这方面的资料有很多,这里就不再多说了。

猜你喜欢

转载自blog.csdn.net/pfysw/article/details/102736103