Linux内核调试手段

1、 nfs命令
在uboot中使用nfs命令将Ubuntu中的Linux镜像和设备树下载到DRAM中,然后直接运行。也就是网络调试,通过网络调试时Linux开发最常用的方法之一。

在量产的时候,半导体商一般提供一个烧写固话的软件,一般这个是产品发布固化程序用。在开发调试阶段可以nfs命令

2、在uboot挂载根文件系统root_nfs,下载更新板子的内核、zmage、设备树dtb文件

sudo apt-get install nfs-kernel-server # 安装 NFS服务器端

ifconfig eth0 up 启动网卡。
sudo ifconfig eth0 192.168.1.119 up (ifconfig 查看eth0 是否有ip 没有则手动设置ip)
这里有必要关闭下ubuntu的防火墙:
sudo ufw disable命令来关闭防火墙 ,测试完成后开启sudo ufw enable命令来开发防火墙
查看防火墙sudo ufw status命令查看当前防火墙状态

sudo gedit /etc/exports (修改NFS的配置文件,文件在主目录下的/etc/exports)
在文件末尾里面添加我们的根文件系统自定义名为目录root_nfs (这个文件名可以自定义)和定义访问权限。根文件系统的路径也是可以自定义的。只要在exports填写路径即可。

/home/用户名/root_fs *(rw,sync,no_root_squash)

修改NFS的配置文件,重启NFS 服务器sudo /etc/init.d/nfs-kernel-server restart

测试服务器是否能背挂载
sudo mount -t nfs 192.168.1.119:/home、用户名/root_fs /mnt (挂载自己)
192.168.1.119 ubuntu自己自身IP地址

通过终端板子设置
进入uboot设置板子ip 192.168.1.2 setenv ipaddr 192.168.1.2

在uboot下敲入以下命令,下载更新板子的内核、zmage、设备树dtb文件

=> ping 192.168.1.119 #ping ubuntu
Using ethernet@020b4000 device
host 192.168.1.119 is alive #alive说明通信成功
=>

=>     
=> setenv serverip 192.168.1.119  #/设置服务器的 IP 地址,这里指的是 Ubuntu 主机 IP
=> setenv ipaddr 192.168.1.2  #设置开发板的 IP 地址。
=> setenv nfsroot /home/用户名/fs_rootfs  #设置 nfs 文件系统所在目录。
=> run netboot  #设置完成后,运行网络启动系统命令
=>     

3、根文件系统root_nfs挂载在某个目录下,更新传输板子文件系统的文件

在内核运行起来后,更新传输板子文件系统的文件

将ubuntu/home/用户名/root_fs的root_fs挂载在mnt目录下。如果板子没有mnt目录需要手动创建mkdir mnt
或者传输文件比如hello.c到test目录下
[root@imx6ull:~]# mkdir mnt
[root@imx6ull:~]# mount -t nfs -o nolock,vers=3 192.168.1.199:/home/用户名/root_fs /mnt
[root@imx6ull:~]# cp /mnt/hello.c ./test

注意:确认板子和ubuntu是否是同一个网段,板子和ubuntu要设置成在一个网段才能通信。
不是用ifconfig 网卡名 ip up 进行设置比如

ifconfig eth0 192.168.1.119 up

4、板子使用ubuntu里面根文件系统root_nfs

直接去挂载NFS:
重启开发板进入u-boot命令行。
输入 setenv bootargs noinitrd root=/dev/nfs nfsroot=192.168.1.119:/home/用户名/root_fs ip=192.168.1.119:192.168.1.2:192.168.1.1:255.255.255.0::eth0:off init=/linuxrc console=ttySAC0
saveenv 保存 reboot重启。

ok NFS启动完成。

猜你喜欢

转载自blog.csdn.net/u014783785/article/details/107784595
今日推荐