i.mx6ull 驱动开发环境搭建(wsl 版)


注:该方案在本机环境下搭建成功,只是验证了一种可行性,很可能不具有通用性,只是记录一下自己得设置过程。
本机环境:

  • win10 wsl Ubuntu 18.04
  • wifi 环境 + 一根网线(无路由器)
  • 原厂系统(需 uboot 支持网络)的基础上通过网络启动 pc 上准备好的内核和文件系统

1. 设置桥接

设置桥接
这里可能出问题,网络不能识别,我的情况是需要在未连接开发板的情况下设置桥接,然后连接开发板,如果 WLAN 断掉,尝试点击 wifi 图标重新连接,最终效果如上图。

2. 进入 uboot ,尝试 ping 通 pc

由于开发板本身没有 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通pc
注意,如果 ping 不通,可以尝试将防火墙关闭。

3. 在 ubuntu 下搭建 TFTP 服务器并开启

首先安装 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

4. 设置 bootcmd 和 bootargs ,使得通过 tftp 加载内核和设备树

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 的各种参数。

5. 搭建 nfs 服务,挂载文件系统(失败)

参照这篇文章 ,是可以搭建出 nfs 服务的(家庭版),企业版,专业版自带有 nfs 服务,但也需要手动开启。
这里失败原因是:使用 busybox 生成的文件系统,其中文件有大量的软链接,在windows下这些文件格式都是不支持的,所以虽然挂载成功,但是共享到板子上并不能执行:
挂载失败
这里注意,如果出现 uboot 中,nfs 不正常,尝试在 henaWin 中设置 nfs 版本为 V2 。

6. 采用 OTG 烧写系统,在板子上搭建 FTP 服务进行板子和 pc 之间的文件传输

原来打算用 tftp 加载内核和设备树,通过 nfs 挂载文件系统,通过上面的尝试,证明行不通,转而采用正点原子教程(【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.3.pdf)附录中提供的方法,在板子上搭建 FTP 服务,通过 FIleZilla 软件,实现板子和 pc 之间文件的传输。

扫描二维码关注公众号,回复: 11004504 查看本文章

步骤:

  1. 使用 mfgtool 工具将板子官方的完整系统烧写进板子,用网线连接笔记本,设置好网络,保证板子和 pc 能互相 ping 通。
  2. 在 wsl 中编译好 vsftpd 和 vsftpd.conf 这两个文件,用 U 盘传给板子
  3. 在板子上进行后续各种修改和配置的操作,以开发手册为准

注:过程中遇到下面的错误,按照百度到的结果设置仍然不对,最后发现是由于 passwd 文件设置错误
报错
这里红框前面部分从 wsl 中拷贝过来也是需要修改的,不能光注意红框部分。
改错

小结

通过以上步骤,虽然没有能够使用 nfs 挂载文件系统,但也能够在 wsl 环境下,实现板子和 pc 之间方便的文件传输,而且不需要路由器,只要有 wifi 环境就够,还是比较简单好用的。

发布了7 篇原创文章 · 获赞 1 · 访问量 445

猜你喜欢

转载自blog.csdn.net/m0_46318517/article/details/105582349