挺好玩的。
很久之前就看中了全志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只能单次开机有效, 每次开机需要重新insmodifconfig同理
使能摄像头
请参考:
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之类的板子吧。