荔枝派Zero(全志V3S)驱动开发之USB摄像头


前言

上一篇博客实现了在ubuntu打开usb摄像头,也确认了 usb 摄像头支持 UVC,这节我们将 usb 驱动移植到荔枝派开发板上,并实现拍照的功能以及做 mjpeg-streamer 视频流服务器测试。


一、内核配置 UVC

1、进入 linux 源码目录,执行

make menuconfig

2、Device Drivers -> USB support 按照下图进行配置
输出识别的每个usb设备的基本信息,比如idVendor、idProduct、制造商、产品、和序列号等
在这里插入图片描述
3、Device Drivers -> Multimedia support,按照下图进行配置
在这里插入图片描述
在这里插入图片描述
4、Device Drivers --> Multimedia support --> Media USB Adapters
在这里插入图片描述

二、编译内核并烧录到 SD 卡

1、编译内核

make -j16
make  -j16 modules #编译模块
make -j16 modules_install INSTALL_MOD_PATH=out #安装模块
make dtbs #编译设备树

2、烧录到 SD 卡
把 zImage, sun8i-v3s-licheepi-zero-dock.dtb 拷贝到 sd 卡的 kernel 分区

find ./ -name zImage
cp ./arch/arm/boot/zImage /media/Gnep/KERNEL/
find ./ -name  sun8i-v3s-licheepi-zero-dock.dtb
cp ./arch/arm/boot/dts/sun8i-v3s-licheepi-zero-dock.dtb /media/Gnep/KERNEL/

在这里插入图片描述

三、上电测试

1、插上 usb 摄像头,查看打印信息
在这里插入图片描述
2、lsusb 可以看到摄像头 PID:VID,在 dev 下可见 video0 设备
在这里插入图片描述
3、fswebcam 抓取摄像头图片,抓取一帧图片

fswebcam -d /dev/video0 --no-banner -r 320x240 capture0.jpg
fswebcam -d /dev/video0 --no-banner -r 320x240 capture1.jpg

在这里插入图片描述
4、我手头没有 LCD 屏幕,先把 SD 拔下来在 ubuntu 上看一下图片效果
在这里插入图片描述
一张拍的是门,一张是电脑显示器,效果还不错。

四、mjpeg-streamer 视频流服务器测试

1、jpeg 库的移植

这里可以参考我前面的博客 荔枝派Zero(全志V3S)驱动开发之RGB LCD屏幕显示jpg图片,只看第一步即可,这里面有讲述到具体的步骤,就不再重复描述了。
在这里插入图片描述
在指定的目录下会生成包括 bin、include、lib、share,标红的这两个文件夹是 mjpg_streamer 需要的。
在这里插入图片描述

2、移植 mjpeg-streamer

①、前置软件

sudo apt-get update
sudo apt-get install g++ libjpeg8-dev imagemagick libv4l-dev cmake git

②、下载 mjpg-streamer 源码

<1>、点击此处:MJPG-streamer
<2>、点击 Code,如下图所示:
在这里插入图片描述
<3>、进去后,点右上的 “Download Snapshot” 下载最新版的 mjpg-streamer-code-182,因为旧版编译时会出现缺少一个头文件的错误
在这里插入图片描述
目录 mjpg-streamer-code-182 里内容如下:
doc/ 、mjpg-streamer/、udp_client/、mjpeg-client/、mjpg-streamer-experimental/、uvc-streamer/
在这里插入图片描述

  • mjpg-streamer:目录下提供了的执行程序和各个输入输出设备组件,支持输入有 control、file、gspcav(早期摄像头)、testpicture、uvc(现在主流摄像头),正式发布的版本。我们采用这个版本。
  • mjpg-streamer-experimental:目录下提供实验性版本的组件,支持输入有 control、file、http、ptp2、testpicture、uvc(现在主流摄像头)。对 yuv 的摄像头兼容性不行。若要兼容 yuv 摄像头,需要需改较多的地方。
  • uvc-streamer:目录下提供了 uvc-streamer 的可执行目录。
  • udp_client:udp 输出的客户端。
  • mjpeg-client:分别有 linux 和 windows 的客户端。

③、修改 mjpg-streamer 源码

cd mjpg-streamer-code-r182/mjpg-streamer
vim ./plugins/input_uvc/Makefile

在这里插入图片描述

 14#CFLAGS += -O1 -DLINUX -D_GNU_SOURCE -Wall -shared -fPIC
 15 CFLAGS += -O1 -DLINUX -D_GNU_SOURCE -Wall -shared -fPIC -I /home/Gnep/licheepi_zero/tools/include

在这里插入图片描述

 34#$(CC) $(CFLAGS) -o $@ input_uvc.c v4l2uvc.lo jpeg_utils.lo dynctrl.lo $(LFLAGS)
 35     $(CC) $(CFLAGS) -L /home/Gnep/licheepi_zero/tools/lib -o $@ input_uvc.c v4l2uvc.lo jpeg_utils.lo dynctrl.lo $(LFLAGS)

在这里插入图片描述

④、编译 mjpg-streamer 源码

make CC=arm-linux-gnueabihf-gcc

编译生成 *.so 文件和可执行文件 mjpg_streamer
在这里插入图片描述

3、搬移文件到 nfs 目录

将前面编译生成文件,还有 start.sh 、/www/ 搬移到 nfs 根目录中

sudo mount -t nfs 192.168.25.25:/nfsroot /mnt -o nolock # 挂载 nfs
sudo mkdir /mnt/mjpg-streamer
sudo cp -rf *.so /mnt/mjpg-streamer/
sudo cp -rf mjpg_streamer /mnt/mjpg-streamer/
sudo cp -rf start.sh www/ /mnt/mjpg-streamer/
sudo mkdir /mnt/mjpg-streamer/lib
sudo cp -rf ../../tools/lib/* /mnt/mjpg-streamer/lib/

挂载 nfs 效果:
在这里插入图片描述
把前面编译生成文件,还有 start.sh ./www/ 搬移到 nfs 根目录中
在这里插入图片描述
此时 nfs 中 mjpg-streamer 目录下存在这些文件:
在这里插入图片描述

4、开发板测试

①、挂载 nfs

mount -t nfs 192.168.25.25:/nfsroot /mnt -o nolock

在这里插入图片描述
②、把 nfs 目录下的 mjpg-streamer/ 拷贝到当前目录(/root 目录下)

cp -rf /mnt/mjpg-streamer/ ./
ls

在这里插入图片描述
③、设置环境变量

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/root/mjpg-streamer/lib

在这里插入图片描述
④、开启 web 服务器

./mjpg_streamer -i "input_uvc.so -d /dev/video0 -r 320x240 -f 30 -yuv" -o "out
put_http.so -w /root/mjpg-streamer/www"

注:
-i 输入协议选择,这里是 uvc 摄像头
-o 输出选择,这里是输出为 http 协议
-f 帧率的设置,这里是1秒30帧
-d 输入设备的选择,这里是摄像头0
-w 这里是 web
-y 表示输入格式为 YUV,如果不加 -y 表示 mjpg 输入
-r 表示图片尺寸640x480
input_uvc.so:UVC输入组件
output_http.so:网页输出组件

⑤、浏览器地址栏输入 单板ip:端口号 可以看到摄像头捕捉的图片
192.168.25.20:8080
在这里插入图片描述
上面的页面是刷新一次网页才会更新一次,我们可以在网页地址栏输入http://192.168.25.20:8080/?action=stream 这样就可以实时更新显示视频了
在这里插入图片描述


我的qq:2442391036,欢迎交流!


  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
荔枝Zero是一款基于Allwinner H2+芯片的开发板,它支持串口通信。要使用串口功能,你需要安装相应的串口驱动程序。以下是安装串口驱动的步骤: 1. 首先,连接荔枝Zero到电脑上。你可以使用Micro USB线缆将其连接到电脑的USB接口。 2. 打开终端或命令提示符窗口,并执行以下命令以确定荔枝Zero在电脑上的串口设备名称: ``` ls /dev/tty* ``` 在输出中查找类似于"/dev/ttyUSB0"或"/dev/ttyACM0"的设备名称。这是荔枝Zero的串口设备名称。 3. 安装串口通信工具minicom。在终端或命令提示符窗口中执行以下命令: ``` sudo apt-get update sudo apt-get install minicom ``` 4. 打开minicom配置文件。在终端或命令提示符窗口中执行以下命令: ``` sudo minicom -s ``` 5. 在minicom配置界面中,选择"Serial port setup",然后按回车键。 6. 在串口设备设置中,将串口设备名称设置为上一步中找到的荔枝Zero的串口设备名称。例如,如果设备名称为"/dev/ttyUSB0",则在该选项中输入"/dev/ttyUSB0"。 7. 设置波特率为115200,数据位为8位,停止位为1位,校验位为无。 8. 保存并退出minicom配置界面。 9. 现在,你可以使用minicom来进行串口通信了。在终端或命令提示符窗口中执行以下命令: ``` sudo minicom ``` 这将打开minicom界面,并将你连接到荔枝Zero的串口。 以上是在荔枝Zero上安装串口驱动并进行串口通信的步骤。如果你有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

须尽欢~~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值