荔枝派Zero Ubuntu WIFI OV2640摄像头折腾笔记

挺好玩的。

很久之前就看中了全志V3S的这一款内置DDR的CPU, 这玩意极大地降低了自己制作Linux硬件的难度, 无需再考虑什么高频电路, 阻抗匹配, 差分等长。
之前我更想玩全志X3, 四核Cortex A7, 128M DDR。但是没有找到靠谱的开发板(有些太贵还不开源核心板电路图, 谁给的自信)。

全志V3S是一个单核Cortex A7的SOC, 普通LQFP128封装, 有手就能焊。
买回来之后, 发现这货官网半残, 官方镜像约等于没有, 刷入官方镜像, WIFI 摄像头都不能用。
于是就进他们官方QQ群开始了折腾。

使能WIFI

官方的wifi模块是rtl8723bs, SDIO。
但是坑爹的是官方并没有提供(能用的)驱动。
查了一圈, 找了一圈, 终于找到官方镜像Linux4.10内核能用的驱动。
点击下载rtl8723.ko

并且官方的系统的设备数并没有开启该SDIO, 需要手动更换boot分区(读卡器插Windows即可识别)下的 sun8i-v3s-licheepi-zero.dtb 即可。

点击下载sun8i-v3s-licheepi-zero.dtb

小科普 这个 rtl8723.ko 是以内核模块形式的驱动。并且.ko文件需要和内核版本所对应, 否则无法使用。
并且截止2021-03-21, 最新的Linux内核5.12并不能以非内核模块驱动。不过问题不大, 反正能用。

下载, 传到V3S的系统里,
复制 rtl8723bs_nic.bin/lib/firmware/rtlwifi/
点击下载rtl8723bs_nic.bin

1
insmod rtl8723.ko

然后

1
ifconfig -a

检测是否出现 wlan0 设备
如果出现,

1
ifconfig wlan0 up

即可。

小科普 insmod只能单次开机有效, 每次开机需要重新insmod
ifconfig同理

使能摄像头

请参考:
https://blog.csdn.net/Jun626/article/details/112969436
我刚看到这篇文章后去荔枝派官方的Kernel开源地址下寻找Linux5.10版本, 发现没有找到。
https://github.com/Lichee-Pi/linux
于是大胆猜测, 直接使用主线Linux也能使用。
https://github.com/torvalds/linux
于是我就用了最新的Linux Kernel重复了一遍上述步骤, 成功。
/dev下成功出现video0

切换系统为Ubuntu

我最初从Github上找到了这个项目
https://github.com/David-Croose/licheepi_ubuntu
发现他只有一个打包了一个linux系统的压缩包和一个解压脚本(以及qemu功能的脚本)。并没有全套的Kernel, Uboot, 设备树等。
于是我猜测Linux系统和Kernel, Uboot, 设备树等是解耦合的(应该是叫根文件系统吧)。可以直接替换。
然后soc的引脚定义功能定义等由设备树规定。
Uboot负责引导soc启动内核,
部分重要驱动由Linux内核提供,
非重要驱动可以到系统内安装,
根文件系统通过内核API, 内核调用完成剩下功能。

然后先测试了一下官方的4.10版本内核, 成功开机。
于是又测试了自己编译的5.10主线内核, 也能成功开机并识别摄像头, wifi等。
并且实测Ubuntu16.04比官方所占用的内存要小。

当然我也尝试了去Ubuntu官网下载最新的20.04根文件系统, 但是尝试了无法开机, 应该是编译配置的问题, 不支持这一款soc。

发现整个流程挺简单的, 但是后面的坑也挺多的。
等打完比赛考完研再试试自己做全志H3之类的板子吧。