开发板进行NFS挂载--Apple的学习笔记
  2Nv1H5BMjysw 2023年11月02日 34 0

一,前言

我们有些时候需要多次调试开发板文件系统内的某个应用程序,这就需要多次进行编译拷贝等操作,所以我们在前期进行调试时可以直接让开发板使用 ubuntu 的 nfs 目录下文件系统来进行远程调试,用以提高调试效率,加快研发速度,所以我还是要搭建下nfs环境。

二,开发板系统中挂载ubuntu文件夹

前提:开发板的ip地址为192.168.7.2,ubuntu的usb虚拟以太网的ip地址是192.168.7.1。

1,usb虚拟网卡我直接连接到虚拟机中,PC和开发板系统中进行nfs mount,先确认能ping通。然后输入命令

mount -t nfs -o nolock,vers=3 192.168.7.1:/work/img/rootfs /mnt/net

报错“mount: wrong fs type, bad option, bad superblock on...“说明没有装nfs,所以没有找到文件sbin/mount.nfs。此时可以通过buildroot交叉编译一个nfs,但是我暂时无buildroot所以系统中的nfs交互文件功能我先不用了,之后用挂载来开发驱动是最方便的了。

2,本次最主要的是需要boot支持nfs挂载系统。

a. 前置条件 由于还在uboot中,所以需要连接网线了。usb线只能起到供电作用,无法虚拟一个网卡了。 设置PC的网卡对应的设备ip地址为192.168.0.110,网关是192.168.0.1。 sd卡先进行分区版本的,否则烧录的bb black官网无法saveenv。FAT32需要设置为启动盘,否则按s2也无法通过sd卡启动,可以参考上一篇《cfdisk给sd卡分区--Apple的学习笔记》

b. uboot中能互相ping通 先按s2通过sd卡启动,然后uboot启动过程中按PC的空格,就会停留在uboot中。 开发板设置ip地址

setenv ipaddr 192.168.0.111
setenv gatewayip 192.168.0.1
setenv netmask 255.255.255.0
setenv serverip 192.168.0.110

可以ping通windows PC和开发板,但是无法ping ubuntu的,因为我用了NAT连接虚拟机ubuntu。

=> ping 192.168.0.110
link up on port 0, speed 100, full duplex
Using ethernet@4a100000 device
host 192.168.0.110 is alive

c. 通过win10的tftp64来加载zImage和dtb,先用手工来验证 先在win10中的G:\img64\kernel文件夹下放入zImage和dtb。然后选择此路径和网卡(连接开发板的网口的网卡)

开发板进行NFS挂载--Apple的学习笔记_nfs挂载

主要下载命令如下,bootz是启动zImage的命令

tftp 0x82000000 zImage
tftp 0x88000000 am335x-boneblack.dtb
bootz 0x82000000 - 0x88000000

实际串口效果如下

=> tftp 0x82000000 zImage
link up on port 0, speed 100, full duplex
Using ethernet@4a100000 device
TFTP from server 192.168.0.110; our IP address is 192.168.0.111
Filename 'zImage'.
Load address: 0x82000000
Loading: #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #############
         1.8 MiB/s
done
Bytes transferred = 5912816 (5a38f0 hex)
=> tftp 0x88000000 am335x-boneblack.dtb
link up on port 0, speed 100, full duplex
Using ethernet@4a100000 device
TFTP from server 192.168.0.110; our IP address is 192.168.0.111
Filename 'am335x-boneblack.dtb'.
Load address: 0x88000000
Loading: ####
         1.9 MiB/s
done
Bytes transferred = 58300 (e3bc hex)
=> bootz 0x82000000 - 0x88000000
## Flattened Device Tree blob at 88000000
   Booting using the fdt blob at 0x88000000
   Loading Device Tree to 8ffee000, end 8ffff3bb ... OK

Starting kernel ...

[    0.000000] Booting Linux on physical CPU 0x0
[    0.000000] Linux version 5.4.61 (root@applecaiHP) (gcc version 8.4.0 (Buildroot 2020.05.2)) #20 SMP Thu Oct 8 10:36:35 CST 2020

3,nfs挂载应该是和之前类似,只不过我是虚拟机,要挂载虚拟机中的内容,需要通过port断开,因为开发板无法ping同NAT连接的虚拟机的。

=> setenv serverip 192.168.0.100 //设置服务器的 IP 地址,这里指的是 Windows IP  
=> setenv ipaddr 192.168.0.110 //设置开发板的 IP 地址。  
=> setenv nfsroot /work/img/rootfs //设置 nfs 文件系统所在目录。  
=> setenv netargs 'setenv bootargs console=${console},${baudrate} root=/dev/nfs ip=dhcp nfsroot=${serverip}:${nfsroot},v3,tcp,port=2049,mountport=9999'  
=> run netboot //设置完成后,运行网络启动系统命令

但是uboot的nfs挂载命令我还没有尝试, 因为硬件eth0又出现了ping不通的情况,我已经把win10的防火墙关闭了,依然如此。不确定是否网卡坏了或者驱动问题,但是这是我之前一直用的uboot,难道真的是硬件坏了?

U-Boot 2020.10-rc4 (Sep 21 2020 - 20:46:35 +0800)

CPU  : AM335X-GP rev 2.1
Model: TI AM335x BeagleBone Black
Apple's DRAM:  512 MiB
Apple's MMC:   OMAP SD/MMC: 0, OMAP SD/MMC: 1
Loading Environment from FAT... OK
Apple's Net:   Could not get PHY for ethernet@4a100000: addr 0
eth2: ethernet@4a100000, eth3: usb_ether
Press SPACE to abort autoboot in 2 seconds
=> ping 192.168.0.110
using musb-hdrc, OUT ep1out IN ep1in STATUS ep2in
MAC de:ad:be:ef:00:01
HOST MAC de:ad:be:ef:00:00
RNDIS ready
musb-hdrc: peripheral reset irq lost!
high speed config #2: 2 mA, Ethernet Gadget, using RNDIS
The remote end did not respond in time.ping failed; host 192.168.0.110 is not alive
=>

三,小结

本来不想再去研究uboot了,之前都移植过,而且cortexA8是armv7a的内核,比较老了,再去研究启动流程也没什么意思,没想到遇到问题了,这是好事,否则我也学不到东东,那么就之后复习下uboot,然后进行问题排查和解决。


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

2Nv1H5BMjysw