本文是针对自己的V3s开发板进行适配主要有SPI_LCD屏幕,IIC_OLED,IIC_陀螺仪,RGB屏幕适配,麦克风,音频,USB摄像头,板载wifi,以太网,opencv和Qt的适配。主要是参考网络上的文章,如有侵权联系删除。
串口传输工具lrz移植
6.荔枝派 zero(全志V3S)-RZ/SZ移植,简化文件传输_v3s 文件共享-CSDN博客
#配置 注意指定的交叉编译工具链,不然各种库版本不一样
CC=/opt/gcc-linaro-6.3.1-2017.02-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc CFLAGS=-O2 ./configure
#直接编译
make
SPI_LCD屏幕适配
嵌入式Linux–荔枝派Zero–V3s–ST7789v_全志v3s 开启st7789v驱动-CSDN博客
【无坑直接完成】
适配ST7735基于5.10内核修改
测试:
cat dev/urandom > /dev/fb0
cat dev/zero > /dev/fb0
开机显示小企鹅
修改内核
Linux:修改u-boot、kernel logo显示及开机进度条_boot logo和kernel log所用的图片资源在那个目录下-CSDN博客
LCD终端显示
嵌入式Linux | 使Linux的启动信息显示到LCD上面&设置LCD屏幕为终端控制台_嵌入式把终端输入到显示器上-CSDN博客
u-boot命令之环境变量操作命令_如何在uboot命令行修改环境变量的值-CSDN博客
原始:
setenv bootargs 'console=ttyS0,115200 panic=5 rootwait root=/dev/mmcblk0p2 earlyprintk rw vt.global_cursor_default=0'
saveenv
验证
printenv
LCD和串口同时
setenv bootargs 'console=tty0 console=ttyS0,115200 panic=5 rootwait root=/dev/mmcblk0p2 earlyprintk rw vt.global_cursor_default=0'
saveenv
console=tty0 console=ttyS0【顺序有要求】
为了键盘能输入
修改/etc/inittab文件
vi /etc/inittab
#在 console::respawn:/sbin/getty -L console 0 vt100 # GENERIC_SERIAL 下添加一行
tty0::askfirst:-/bin/sh
RGB屏幕适配
1、按照官方教程把u-boot更新为指定的屏幕的配置
开机能见到小企鹅说明成功
2、设备树要参考荔枝派主线内核的来,特别是要检查有没有sun8i-v3s.dti 的pintrl结点有没有rgb666的,panel结点一定要有和分辨率有关,参考主线内核来改就是了。
【参考】
mplayer播放视频测试
mplayer -vo fbdev2 -vf scale=480:272 Badapple.mp4
如果自己画的线序红色和蓝色交换了需要更改
//在sun4i_tcon0_mode_set_rgb下
#define SUN4I_TCON0_CTL_SWAP_RB_ENABLE BIT(23)
regmap_update_bits(tcon->regs, SUN4I_TCON0_CTL_REG,
SUN4I_TCON0_CTL_SWAP_RB_ENABLE,
SUN4I_TCON0_CTL_SWAP_RB_ENABLE);
v3s RGB 颜色不对 / 全志 SOC / WhyCan Forum(哇酷开发者社区)
触摸屏适配
Ns2009适配
1、使用荔枝派主线内核的Ns2009.c加到新的内核里面
2、在以下文件中加入与Ns2009有关的配置
drivers/input/touchscreen/Makefile
drivers/input/touchscreen/Kconfig
3、make menuconfig 选择对应的就行了
移植tslib
创建文件夹
/home/book/tools/tslib/
#配置临时变量
export ARCH=arm
export CROSS_COMPILE=arm-linux-gnueabihf-
export PATH=$PATH:/opt/gcc-linaro-6.3.1-2017.02-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/bin/
#配置config指定输出目录
./configure --host=arm-linux-gnueabihf --prefix=/home/book/tools/tslib/
在指定交叉编译工具链中确定头文件和库文件的系统目录
echo 'main(){}'|/opt/gcc-linaro-6.3.1-2017.02-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc -E -v -
任意的include和lib都行,选里面包含东西多的比较好后面生成的lib 和include 放到下面两个目录
include
/opt/gcc-linaro-6.3.1-2017.02-x86_64_arm-linux-gnueabihf/bin/../arm-linux-gnueabihf/libc/usr/include
lib
/opt/gcc-linaro-6.3.1-2017.02-x86_64_arm-linux-gnueabihf/bin/../arm-linux-gnueabihf/libc/lib/
编译
make
make instal
生成的lib和include放到交叉编译工具链目录
sudo cp include/* -rf /opt/gcc-linaro-6.3.1-2017.02-x86_64_arm-linux-gnueabihf/bin/../arm-linux-gnueabihf/libc/usr/include
sudo cp lib/* -rfd /opt/gcc-linaro-6.3.1-2017.02-x86_64_arm-linux-gnueabihf/bin/../arm-linux-gnueabihf/libc/lib
生成的lib,bin,etc放到开发板对应目录
cp lib/*so* -d /usr/lib
cp bin/* /usr/bin
cp etc/ts.conf -d /etc
开发板配置环境变量(永久生效的自己百度)
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0
export TSLIB_TSDEVICE=/dev/input/event1
export TSLIB_CONFFILE=/etc/ts.conf
export TSLIB_PLUGINDIR=/usr/lib/ts
音视频
配置声卡
查看相关的.dti文件是否存在
#放在 /内的soc
dma: dma-controller@01c02000 {
compatible = "allwinner,sun8i-v3s-dma";
reg = <0x01c02000 0x1000>;
interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&ccu CLK_BUS_DMA>;
resets = <&ccu RST_BUS_DMA>;
#dma-cells = <1>;
};
codec: codec@01c22c00 {
#sound-dai-cells = <0>;
compatible = "allwinner,sun8i-v3s-codec";
reg = <0x01c22c00 0x400>;
interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&ccu CLK_BUS_CODEC>, <&ccu CLK_AC_DIG>;
clock-names = "apb", "codec";
resets = <&ccu RST_BUS_CODEC>;
dmas = <&dma 15>, <&dma 15>;
dma-names = "rx", "tx";
allwinner,codec-analog-controls = <&codec_analog>;
status = "disabled";
};
codec_analog: codec-analog@01c23000 {
compatible = "allwinner,sun8i-v3s-codec-analog";
reg = <0x01c23000 0x4>;
};
#放在 /外面
&codec {
allwinner,audio-routing =
"Headphone", "HP",
"Headphone", "HPCOM",
"MIC1", "Mic",
"Mic", "HBIAS";
status = "okay";
};
全志V3S嵌入式驱动开发 - 驱动开发合集 | 全志在线开发者论坛 (aw-ol.com)
荔枝派Zero(全志V3S)开启mplayer,播放音视频-阿里云开发者社区 (aliyun.com)
注意关闭静音
amixer -c 0 sset 'Headphone',0 100% unmute
aplay SunmerFantasy.wav #wav有效
开机自启动打开音频
Linux开发板开机自启应用方法汇总_linux开发板开机启动-CSDN博客
麦克风测试
amixer -c 0 cset numid=12 2 使能mic1
arecord -D hw:0,0 -d 3 -f S16_LE -r 16000 tmp.wav 录音测试
arecord -f cd -d 10 record.wav
aplay record.wav
USB适配
内核配置好menuconfig后更改设备树就行
V3S插入USB设备没有反应 / 全志 SOC / WhyCan Forum(哇酷开发者社区)
USB摄像头适配
荔枝派Zero(全志V3S)驱动开发之USB摄像头_荔枝派 zero 开发-CSDN博客
安装fswebcam
rv1106开发板buildroot下使用v4l2和fswebcam进行USB摄像头测试 - 国产芯片交流 - 电子工程世界-论坛 (eeworld.com.cn)
按键适配
荔枝派zero适配内核驱动:按键输入设备(LRADC)_荔枝派zero原理图-CSDN博客
陀螺仪适配
Linux 驱动 IIC_MPU6050_linux mpu6050-CSDN博客
#查看iic0设备是否存在,是否有驱动uu表示有驱动 数字表示没有驱动
i2cdetect -y 0
i2cdump -y 0 0x68
[2. I2C子系统–mpu6050驱动实验 — 野火]嵌入式Linux驱动开发实战指南——基于i.MX6ULL系列 文档 (embedfire.com)
事实上参考野火的教程稍微改一下就能够完成mpu6050的驱动了,不过还是读取源数据没有使用mpu6050的DMP库融合出具体的角度,感兴趣的话可以实现一下。
Qt适配
荔枝派Zero(全志V3S)运行Qt5程序_v3s qt-CSDN博客
测试
./analogclock -platform linuxfb
opencv配置
分享一下编译好的opencv库 / 全志 SOC / WhyCan Forum(哇酷开发者社区)
1-8.ubuntu环境opencv和人脸算法库测试_哔哩哔哩_bilibili
库编译arm
OpenCV移植到arm开发板 - 知乎 (zhihu.com)
#打包
tar -cvf opencv4_2.tar.gz ./*
#解压
tar -xvf opencv4_2.tar.gz
Linux 压缩、解压缩文件(invalid tar magic 报错)_tar: invalid tar magic-CSDN博客-
实际上压缩的话不如直接复制
lib文件放在usr/lib上就好了
使用开发板的buildroot的qmake 编译
~/work/V3s/Lichee-Pi/buildroot-2017.08/output/build/qt5base-5.6.2/bin/qmake FaceAttendance.pro
在开发板运行
./opencvSeetaface -platform linuxfb
网络适配
USB
Zero通过otg与PC共享网络 - Sipeed Wiki
切换TOG到slave
主线Linux用shell命令切换 OTG(分享)tiny200/licheepi nano|zero均可以使用 / 全志 SOC / WhyCan Forum(哇酷开发者社区)
#otg2host
echo host > /sys/devices/platform/soc/1c19000.usb/musb-hdrc.2.auto/mode
#otg2device
echo peripheral > /sys/devices/platform/soc/1c19000.usb/musb-hdrc.2.auto/mode
如果出现
-sh: can't create /sys/devices/platform/soc/1c19000.usb/musb-hdrc.2.auto/mode: nonexistent directory
就到相应目录下找文件对应名称
ssh方便文件传输
修改/etc/init.d/S40network
#!/bin/sh
#
# Start the network....
#
# Debian ifupdown needs the /run/network lock directory
mkdir -p /run/network
case "$1" in
start)
printf "Starting network: "
/sbin/ifup -a
/sbin/ifconfig usb0 up
/sbin/ifconfig usb0 192.168.2.100 netmask 255.255.255.0
[ $? = 0 ] && echo "OK" || echo "FAIL"
;;
stop)
printf "Stopping network: "
/sbin/ifdown -a
/sbin/ifconfig usb0 down
[ $? = 0 ] && echo "OK" || echo "FAIL"
;;
restart|reload)
"$0" stop
"$0" start
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
esac
exit $?
荔枝派Zero(全志V3S)开启 SSH 实现远程连接和文件传输-阿里云开发者社区 (aliyun.com)
1.切换从机模式
echo peripheral > /sys/devices/platform/soc/1c19000.usb/musb-hdrc.2.auto/mode
2.插入USB线配置好ip
192.168.2.1
255.255.255.0
3.开启SSH
ssh root@192.168.2.100
传输文件
sftp://192.168.2.100
4.关闭ssh(输入exit)关闭sftp(右键umount即可)
5.otg2host
echo host > /sys/devices/platform/soc/1c19000.usb/musb-hdrc.2.auto/mode
更新根文件系统后作妖
ssh登录远程主机报错:Someone could be eavesdropping on you right now (man-in-the-middle attack)!-CSDN博客
WIFI
全志V3S 入门 RTL8723BS 连接wifi_v3s wifi-CSDN博客
报错解决
【内核配置问题】
wifi r8723bs安装错误的问题 / 全志 SOC / WhyCan Forum(哇酷开发者社区)
【设备树问题】
晕哥,帮我看一下,为什么不支持Wlan0? / 全志 SOC / WhyCan Forum(哇酷开发者社区)
【硬件问题】
RTL8723BS出现问题,请大佬们帮忙看看 / 全志 SOC / WhyCan Forum(哇酷开发者社区)
【固件问题】
以太网网口适配
全网最详细,保证能用的Licheepi Zero Ethernet适配指南_licheep zero 使能网口-CSDN博客
ifconfig eth0 up
ifconfig eth0 192.168.5.9 netmask 255.255.255.0
ping 192.168.5.11