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

这篇具有很好参考价值的文章主要介绍了荔枝派Zero(全志V3S)驱动开发之USB摄像头。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

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


一、内核配置 UVC

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

make menuconfig

2、Device Drivers -> USB support 按照下图进行配置
输出识别的每个usb设备的基本信息,比如idVendor、idProduct、制造商、产品、和序列号等
荔枝派Zero(全志V3S)驱动开发之USB摄像头,荔枝派,荔枝派,驱动开发,usb摄像头
3、Device Drivers -> Multimedia support,按照下图进行配置
荔枝派Zero(全志V3S)驱动开发之USB摄像头,荔枝派,荔枝派,驱动开发,usb摄像头
荔枝派Zero(全志V3S)驱动开发之USB摄像头,荔枝派,荔枝派,驱动开发,usb摄像头
4、Device Drivers --> Multimedia support --> Media USB Adapters
荔枝派Zero(全志V3S)驱动开发之USB摄像头,荔枝派,荔枝派,驱动开发,usb摄像头

二、编译内核并烧录到 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/

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

三、上电测试

1、插上 usb 摄像头,查看打印信息
荔枝派Zero(全志V3S)驱动开发之USB摄像头,荔枝派,荔枝派,驱动开发,usb摄像头
2、lsusb 可以看到摄像头 PID:VID,在 dev 下可见 video0 设备
荔枝派Zero(全志V3S)驱动开发之USB摄像头,荔枝派,荔枝派,驱动开发,usb摄像头
3、fswebcam 抓取摄像头图片,抓取一帧图片

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

荔枝派Zero(全志V3S)驱动开发之USB摄像头,荔枝派,荔枝派,驱动开发,usb摄像头
4、我手头没有 LCD 屏幕,先把 SD 拔下来在 ubuntu 上看一下图片效果
荔枝派Zero(全志V3S)驱动开发之USB摄像头,荔枝派,荔枝派,驱动开发,usb摄像头
一张拍的是门,一张是电脑显示器,效果还不错。

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

1、jpeg 库的移植

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

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,如下图所示:
荔枝派Zero(全志V3S)驱动开发之USB摄像头,荔枝派,荔枝派,驱动开发,usb摄像头
<3>、进去后,点右上的 “Download Snapshot” 下载最新版的 mjpg-streamer-code-182,因为旧版编译时会出现缺少一个头文件的错误
荔枝派Zero(全志V3S)驱动开发之USB摄像头,荔枝派,荔枝派,驱动开发,usb摄像头
目录 mjpg-streamer-code-182 里内容如下:
doc/ 、mjpg-streamer/、udp_client/、mjpeg-client/、mjpg-streamer-experimental/、uvc-streamer/
荔枝派Zero(全志V3S)驱动开发之USB摄像头,荔枝派,荔枝派,驱动开发,usb摄像头

  • 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

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

 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

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

 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)

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

④、编译 mjpg-streamer 源码

make CC=arm-linux-gnueabihf-gcc

编译生成 *.so 文件和可执行文件 mjpg_streamer
荔枝派Zero(全志V3S)驱动开发之USB摄像头,荔枝派,荔枝派,驱动开发,usb摄像头

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 效果:
荔枝派Zero(全志V3S)驱动开发之USB摄像头,荔枝派,荔枝派,驱动开发,usb摄像头
把前面编译生成文件,还有 start.sh ./www/ 搬移到 nfs 根目录中
荔枝派Zero(全志V3S)驱动开发之USB摄像头,荔枝派,荔枝派,驱动开发,usb摄像头
此时 nfs 中 mjpg-streamer 目录下存在这些文件:
荔枝派Zero(全志V3S)驱动开发之USB摄像头,荔枝派,荔枝派,驱动开发,usb摄像头

4、开发板测试

①、挂载 nfs

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

荔枝派Zero(全志V3S)驱动开发之USB摄像头,荔枝派,荔枝派,驱动开发,usb摄像头
②、把 nfs 目录下的 mjpg-streamer/ 拷贝到当前目录(/root 目录下)

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

荔枝派Zero(全志V3S)驱动开发之USB摄像头,荔枝派,荔枝派,驱动开发,usb摄像头
③、设置环境变量

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

荔枝派Zero(全志V3S)驱动开发之USB摄像头,荔枝派,荔枝派,驱动开发,usb摄像头
④、开启 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
荔枝派Zero(全志V3S)驱动开发之USB摄像头,荔枝派,荔枝派,驱动开发,usb摄像头
上面的页面是刷新一次网页才会更新一次,我们可以在网页地址栏输入http://192.168.25.20:8080/?action=stream 这样就可以实时更新显示视频了
荔枝派Zero(全志V3S)驱动开发之USB摄像头,荔枝派,荔枝派,驱动开发,usb摄像头


我的qq:2442391036,欢迎交流!文章来源地址https://www.toymoban.com/news/detail-665006.html


到了这里,关于荔枝派Zero(全志V3S)驱动开发之USB摄像头的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 荔枝派Zero(全志V3S) tftp下载 kernel 和 nfs 挂载文件系统

    传输文件每次都插拔 SD 卡太麻烦了,还是使用网线传输文件比较快,借此机会讲述一下 通过 tftp下载 kernel 和 nfs 挂载文件系统 我使用的 uboot 是 2017.01 版本的,U-Boot 2017 已经支持了 sun8i-emac 的驱动,只需要在编译时选上并且修改 dts 就行。 ①、进入u-boot源码目录,执行 ②、

    2024年02月08日
    浏览(39)
  • 荔枝派Zero(全志V3S)烧录Uboot、Kernel及rootfs到SD卡并运行在板子上

    通过前面 Uboot编译及配置 我们获得了 u-boot-sunxi-with-spl.bin 通过前面 Kernel编译 我们获得了zImage镜像文件及sun8i-v3s-licheepi-zero-dock.dtb设备树文件 通过前面 rootfs编译我们获得了 rootfs.tar 文件系统 那么下面就将相关文件烧录到 SD 卡并运行在板子上看下效果 1、插上SD卡 2、查看分区

    2024年02月08日
    浏览(68)
  • 全志V3S嵌入式驱动开发(驱动开发准备)

    【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】         之前的文章都是教大家怎么搭建环境、看原理图、编译内核和根文件系统、做镜像,直到现在才进入驱动开发的主题。 毕竟整个专栏的目的,还是希望大家能够学会驱动外部硬件。

    2024年02月13日
    浏览(64)
  • 全志V3S嵌入式驱动开发(准备)

    【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】         要学好嵌入式,其实最好自己可以画板子、调试板子、写软件、调试软件这样来学习。简单的51单片机、stm32这样的mcu或许画起来不是很复杂,但是如果是运行linux系统的soc芯片,那么

    2024年02月12日
    浏览(43)
  • 全志V3S嵌入式驱动开发(wifi驱动)

    【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】         荔枝派上面除了支持v3s自带的有线网口,还带有一个支持sd协议的esp 8089 wifi模块。有了这个模块,v3s没有网线,也可以用它和外界联系了。但是,我们实际测试下来,效果并不算很理

    2024年02月10日
    浏览(47)
  • 全志V3S嵌入式驱动开发(多按键输入驱动)

    【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】         前面我们说过,荔枝派的开发板上面,有4个按键本身不是通过gpio连接到soc上面的。它是通过ad的方法,连接到主芯片的。这个时候,不同的按键被按下的时候,就会生成不同的电压或

    2024年02月07日
    浏览(48)
  • 全志V3S嵌入式驱动开发(触摸屏驱动)

    【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】         所谓的触摸屏,其实就是在普通的lcd屏幕之上,再加一层屏而已。这个屏是透明的,这样客户就可以看到下面lcd屏幕的内容,另外一方面,通过触摸信号,还可以实现人和机器的自然

    2024年02月08日
    浏览(38)
  • 全志V3S嵌入式驱动开发(开发环境再升级)

    【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】         前面我们陆陆续续开发了差不多有10个驱动,涉及到网口、串口、音频和视频等几个方面。但是整个开发的效率还是比较低的。每次开发调试的时候都很麻烦,譬如说,如果是驱动代码

    2024年02月08日
    浏览(57)
  • 【全志V3s】SPI NAND Flash 驱动开发

    芯片:W25N01GVZEIG datasheet上的描述: SLC工艺 2KB*65536页 10万次擦写次数 焊好以后用CH341A读了一下 上面这张图描述了soc启动的四个顺序,分别是usb启动、sd卡启动、spi norflash启动、spi nandflash启动四种方式。前面的测试中一直走的是sd卡启动,但是从成本和稳定性上说,spi nandfla

    2024年02月07日
    浏览(47)
  • 全志V3S嵌入式驱动开发(看原理图)

    【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】         对于嵌入式软件开发的同学来说,你可能不一定要会自己画原理图、做pcb板。但是,别人已经设计好的原理图,自己还是要看得懂、读的明白的。此外,原理图无非就是各种符号放在

    2024年02月06日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包