这里可能出问题,网络不能识别,我的情况是需要在未连接开发板的情况下设置桥接,然后连接开发板,如果 WLAN 断掉,尝试点击 wifi 图标重新连接,最终效果如上图。
由于开发板本身没有 IP 地址,需要在 uboot 中进行设置,由于家里 wifi 都是私网,网段一般默认都是 192.168.1.x,网关 192.168.1.1 ,可以根据情况类似下面进行设置:
setenv ipaddr 192.168.1.50 # 开发板 ip 地址,需要和 pc 在一个网段下,且不能和其他设备冲突
setenv ethaddr 00:04:9f:04:d2:35 # MAC 地址,如果网段下有多个开发板,需要保证每个都不一样
setenv gatewayip 192.168.1.1 # 网关
setenv netmask 255.255.255.0 # 子网掩码
setenv serverip 192.168.1.8 # pc 的 ip 地址,在 windows 命令行用 ifconfig 查看
saveenv # 保存设置
上面是我的配置,设置好后,在 uboot 中用 print
命令可以查看这些配置,同时 ping 通主机的结果如下:
注意,如果 ping 不通,可以尝试将防火墙关闭。
首先安装 tftp-hpa,tftpd-hpa 和 xinetd;
然后创建在 pc 下创建一个 tftp 文件夹,将内核镜像和设备树放进去(确保有执行权限);
添加配置文件(路径:/etc/xinetd.d/tftp
)如下:
server tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
sserver_args = -s /mnt/f/Ubuntu/tftp # 自定义文件夹
disable = no
per_source = 11
cps = 100 2
flags = IPv4
}
开启 tftp 服务:sudo service tftpd-hpa start
修改/etc/default/tftpd-hpa
文件内容如下:
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/mnt/f/Ubuntu/tftp" # 自定义文件夹
TFTP_ADDRESS=":69"
TFTP_OPTIONS="-l -c -s"
重启 tftp 服务 sudo service tftpd-hpa restart
。
setenv bootargs 'console=ttymxc0,115200 root=/dev/nfs rwx nfsroot=192.168.1.8:/rootfs ip=192.168.1.50:192.168.1.8:192.168.1.1:255.255.255.0::eth0:off'
setenv bootcmd 'tftp 80800000 zImage; tftp 83000000 topeet_emmc_4_3.dtb; bootz
80800000 - 83000000'
saveenv
名称根据情况修改,这里报错 Bad Linux ARM zImage magic!
显示是内核出问题,但也可能是设备树出问题。
注:重新烧写系统后需要重新设置 uboot 的各种参数。
参照这篇文章 ,是可以搭建出 nfs 服务的(家庭版),企业版,专业版自带有 nfs 服务,但也需要手动开启。
这里失败原因是:使用 busybox 生成的文件系统,其中文件有大量的软链接,在windows下这些文件格式都是不支持的,所以虽然挂载成功,但是共享到板子上并不能执行:
这里注意,如果出现 uboot 中,nfs 不正常,尝试在 henaWin 中设置 nfs 版本为 V2 。
原来打算用 tftp 加载内核和设备树,通过 nfs 挂载文件系统,通过上面的尝试,证明行不通,转而采用正点原子教程(【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.3.pdf)附录中提供的方法,在板子上搭建 FTP 服务,通过 FIleZilla 软件,实现板子和 pc 之间文件的传输。
步骤:
注:过程中遇到下面的错误,按照百度到的结果设置仍然不对,最后发现是由于 passwd 文件设置错误
这里红框前面部分从 wsl 中拷贝过来也是需要修改的,不能光注意红框部分。
通过以上步骤,虽然没有能够使用 nfs 挂载文件系统,但也能够在 wsl 环境下,实现板子和 pc 之间方便的文件传输,而且不需要路由器,只要有 wifi 环境就够,还是比较简单好用的。