SDK: Hi3516CV500_SDK_V2.0.1.0

一、编译内核

使用Hi3516DV300的默认内核配置即可,不用进行修改,可通过menuconfig查看一下关键选项

$ cp arch/arm/configs/hi3516dv300_smp_defconfig .config
$ make ARCH=arm CROSS_COMPILE=arm-himix200-linux- uImage

二、编译模块

$ make ARCH=arm CROSS_COMPILE=arm-himix200-linux- modules

把libcomposite.ko和usb_f_uvc.ko拷贝到目标板上

三、编译uvc_app

进入uvc_app目录,make生成可执行文件,并拷贝到目标板上

sample/uvc_app$ make

四、测试

1、修改目标板/etc/profile,增加环境变量

export VID="0x12d1"
export PID="0x4321"
export MANUFACTURER="Huawei"
export PRODUCT="HiCamera"
export SERIALNUMBER="12345678"
export CamControl1=0xa
export CamControl2=0x0
export CamControl3=0x0
export ProcControl1=0x4f
export ProcControl2=0x14
export YUV="360p"
export MJPEG="360p 720p 1080p"
export H264="360p 720p 1080p "

2、加载模块

# insmod libcomposite.ko
# insmod usb_f_uvc.ko 

3、把SDK提供的ConfigUVC.sh拷贝的目标板并运行

ConfigUVC.sh脚本:

#!/bin/shmount -t configfs none /sys/kernel/config/
cd /sys/kernel/config/usb_gadget/
mkdir camera
cd camera
echo $VID > idVendor
echo $PID > idProduct
mkdir strings/0x409
echo $MANUFACTURER > strings/0x409/manufacturer
echo $PRODUCT > strings/0x409/product
echo $SERIALNUMBER > strings/0x409/serialnumbermkdir functions/uvc.usb0
cd functions/uvc.usb0
mkdir control/header/h/
echo "0x0110" > control/header/h/bcdUVC
echo "48000000" > control/header/h/dwClockFrequency
ln -s control/header/h/ control/class/fs/
ln -s control/header/h/ control/class/ss/cat <<EOF> control/terminal/camera/default/bmControls
$CamControl1
$CamControl2
$CamControl3
EOFcat <<EOF> control/processing/default/bmControls
$ProcControl1
$ProcControl2
EOF#YUV
mkdir streaming/uncompressed/u/
for i in $YUV
doif [ $i = 360p ];thenmkdir streaming/uncompressed/u/360p/                                     echo "333333" > streaming/uncompressed/u/360p/dwFrameInterval           echo "333333" > streaming/uncompressed/u/360p/dwDefaultFrameInterval           echo "55296000" > streaming/uncompressed/u/360p/dwMaxBitRate            echo "460800" > streaming/uncompressed/u/360p/dwMaxVideoFrameBufferSize  echo "55296000" > streaming/uncompressed/u/360p/dwMinBitRate     echo "360" > streaming/uncompressed/u/360p/wHeight                       echo "640" > streaming/uncompressed/u/360p/wWidthelif [ $i = 720p ];thenmkdir streaming/uncompressed/u/720p/                                     echo "333333" > streaming/uncompressed/u/720p/dwFrameInterval           echo "333333" > streaming/uncompressed/u/720p/dwDefaultFrameInterval   echo "29491200" > streaming/uncompressed/u/720p/dwMaxBitRate             echo "1843200" > streaming/uncompressed/u/720p/dwMaxVideoFrameBufferSizeecho "29491200" > streaming/uncompressed/u/720p/dwMinBitRate             echo "720" > streaming/uncompressed/u/720p/wHeight               echo "1280" > streaming/uncompressed/u/720p/wWidthelif [ $i = 1080p ];thenmkdir streaming/uncompressed/u/1080p/                                    echo "333333" > streaming/uncompressed/u/1080p/dwFrameInterval           echo "333333" > streaming/uncompressed/u/1080p/dwDefaultFrameIntervalecho "29491200" > streaming/uncompressed/u/1080p/dwMaxBitRate            echo "4147200" > streaming/uncompressed/u/1080p/dwMaxVideoFrameBufferSizeecho "29491200" > streaming/uncompressed/u/1080p/dwMinBitRate          echo "1080" > streaming/uncompressed/u/1080p/wHeight              echo "1920" > streaming/uncompressed/u/1080p/wWidthelseecho "YUV $i is invalid!"fi
done#MJPEG
mkdir streaming/mjpeg/m/
for i in $MJPEG
doif [ $i = 360p ];thenmkdir streaming/mjpeg/m/360p/                                            echo "333333" > streaming/mjpeg/m/360p/dwFrameInterval                  echo "333333" > streaming/mjpeg/m/360p/dwDefaultFrameIntervalecho "10240000" > streaming/mjpeg/m/360p/dwMaxBitRate                   echo "460800" > streaming/mjpeg/m/360p/dwMaxVideoFrameBufferSize        echo "10240000" > streaming/mjpeg/m/360p/dwMinBitRate                   echo "360" > streaming/mjpeg/m/360p/wHeight                       echo "640" > streaming/mjpeg/m/360p/wWidth elif [ $i = 720p ];thenmkdir streaming/mjpeg/m/720p/                                       echo "333333" > streaming/mjpeg/m/720p/dwFrameInterval                   echo "333333" > streaming/mjpeg/m/720p/dwDefaultFrameIntervalecho "20480000" > streaming/mjpeg/m/720p/dwMaxBitRate                    echo "1843200" > streaming/mjpeg/m/720p/dwMaxVideoFrameBufferSize        echo "20480000" > streaming/mjpeg/m/720p/dwMinBitRate                    echo "720" > streaming/mjpeg/m/720p/wHeight                              echo "1280" > streaming/mjpeg/m/720p/wWidth elif [ $i = 1080p ];thenmkdir streaming/mjpeg/m/1080p/                                    echo "333333" > streaming/mjpeg/m/1080p/dwFrameInterval             echo "333333" > streaming/mjpeg/m/1080p/dwDefaultFrameIntervalecho "40960000" > streaming/mjpeg/m/1080p/dwMaxBitRate            echo "4147200" > streaming/mjpeg/m/1080p/dwMaxVideoFrameBufferSize       echo "40960000" > streaming/mjpeg/m/1080p/dwMinBitRate                   echo "1080" > streaming/mjpeg/m/1080p/wHeight                            echo "1920" > streaming/mjpeg/m/1080p/wWidth elif [ $i = 2160p ];thenmkdir streaming/mjpeg/m/2160p/                                     echo "333333" > streaming/mjpeg/m/2160p/dwFrameInterval            echo "333333" > streaming/mjpeg/m/2160p/dwDefaultFrameIntervalecho "61440000" > streaming/mjpeg/m/2160p/dwMaxBitRate             echo "16588800" > streaming/mjpeg/m/2160p/dwMaxVideoFrameBufferSizeecho "61440000" > streaming/mjpeg/m/2160p/dwMinBitRate          echo "2160" > streaming/mjpeg/m/2160p/wHeight                   echo "3840" > streaming/mjpeg/m/2160p/wWidthelseecho "MJPEG $i is invalid!"fi
done#FRAMEBASED
mkdir streaming/framebased/fb/
for i in $H264
doif [ $i = 360p ];thenmkdir streaming/framebased/fb/360p/                                      echo "333333" > streaming/framebased/fb/360p/dwFrameInterval     echo "333333" > streaming/framebased/fb/360p/dwDefaultFrameIntervalecho "8192000" > streaming/framebased/fb/360p/dwMaxBitRate               echo "8192000" > streaming/framebased/fb/360p/dwMinBitRate               echo "360" > streaming/framebased/fb/360p/wHeight                        echo "640" > streaming/framebased/fb/360p/wWidthelif [ $i = 720p ];thenmkdir streaming/framebased/fb/720p/                                      echo "333333" > streaming/framebased/fb/720p/dwFrameInterval             echo "333333" > streaming/framebased/fb/720p/dwDefaultFrameIntervalecho "10240000" > streaming/framebased/fb/720p/dwMaxBitRate            echo "10240000" > streaming/framebased/fb/720p/dwMinBitRate       echo "720" > streaming/framebased/fb/720p/wHeight                 echo "1280" > streaming/framebased/fb/720p/wWidth  elif [ $i = 1080p ];thenmkdir streaming/framebased/fb/1080p/                                echo "333333" > streaming/framebased/fb/1080p/dwFrameInterval            echo "333333" > streaming/framebased/fb/1080p/dwDefaultFrameIntervalecho "15360000" > streaming/framebased/fb/1080p/dwMaxBitRate            echo "15360000" > streaming/framebased/fb/1080p/dwMinBitRate            echo "1080" > streaming/framebased/fb/1080p/wHeight                     echo "1920" > streaming/framebased/fb/1080p/wWidthelif [ $i = 2160p ];thenmkdir streaming/framebased/fb/2160p/                               echo "333333" > streaming/framebased/fb/2160p/dwFrameInterval      echo "333333" > streaming/framebased/fb/2160p/dwDefaultFrameIntervalecho "30720000" > streaming/framebased/fb/2160p/dwMaxBitRate       echo "30720000" > streaming/framebased/fb/2160p/dwMinBitRate            echo "2160" > streaming/framebased/fb/2160p/wHeight                     echo "3840" > streaming/framebased/fb/2160p/wWidthelseecho "H264 $i is invalid!"fi
done
mkdir streaming/header/h/
ln -s streaming/uncompressed/u/ streaming/header/h/
ln -s streaming/mjpeg/m/ streaming/header/h/
ln -s streaming/framebased/fb/ streaming/header/h/                  ln -s streaming/header/h/ streaming/class/fs/
ln -s streaming/header/h/ streaming/class/hs/
ln -s streaming/header/h/ streaming/class/ss/                            #-Create and setup configuration
cd ../../
mkdir configs/c.1/
echo 500 > configs/c.1/MaxPower
echo 0xc0 > configs/c.1/bmAttributes
mkdir configs/c.1/strings/0x409/
echo "Config 1" > configs/c.1/strings/0x409/configuration
ln -s functions/uvc.usb0/ configs/c.1/
ls /sys/class/udc > UDC
echo "0x01" > bDeviceProtocol
echo "0x02" > bDeviceSubClass
echo "0xEF" > bDeviceClass

运行时会出现如下错误,暂时忽略

运行成功后在/dev下会出现video0设备

4、加载SDK模块

5、把USB线连接到电脑,运行uvc_app

运行成功后在电脑端可查看到摄像头设备

6、使用plotplayer打开摄像头

打开选项,选择视频格式为1080P

打开摄像头

目标板调试信息输出如下

Hi3516DV300的UVC功能测试相关推荐

  1. 52-20210322华为海思Hi3516DV300的linux系统编译(eMMC模式)1

    52-20210322华为海思Hi3516DV300的linux系统编译(eMMC模式) 2021/3/22 18:00 请严重注意: 本文所使用的的SDK是:Hi3516CV500R001C02SP ...

  2. 51-20210316华为海思Hi3516DV300的linux系统编译1(SPI模式)

    51-20210316华为海思Hi3516DV300的linux系统编译 2021/3/16 10:42 https://xueqiu.com/7970718062/159110439 官井想开挖掘机 ...

  3. robot简单功能测试脚本设计(例子)

    以学生管理系统的添加一个学生信息为例子 页面对象:editbox(姓名),button(添加) 数据要求: 1 姓名不能为空 2 姓名不能重复 程序结构 1 点button,弹出对话框"姓名 ...

  4. App功能测试的注意点

    好几个月没有写博客记录学习心得了,这次回老家深夜闲来无事写一篇记录下这段时间的面试心得,这次面试过程很多面试官都问APP的有关测试,下面我就自己的认识和工作中的经验来谈谈自己对APP测试的认识: 1. ...

  5. 16 系统测试之功能测试

    功能测试 前言 功能测试 总结 前言 系统测试一般要使系统软件运行于真实的硬件环境中,其更倾向于软硬件结合的测试.在本专题中主要介绍系统测试中的功能测试和性能测试.其他测试类型在本专题中咱不展开讲,会 ...

  6. Android 双目 单usb,【android9.0】无法打开usb uvc camera

    背景:android9.0系统的开发板,接入双目摄像头,仅能打开其中一路摄像头,另一路打不开 关键log: 从串口打印看,usb驱动有正确识别到usb hub以及两路usb camera设备 [ 45 ...

  7. Jmeter工具的使用——功能测试

    Jmeter工具的使用--功能测试 一.Jmeter的简介 二.用jmeter实现抓包 三.jmeter的功能测试 (1)以学员登录接口为例: (2)以新增用户为例: 一.Jmeter的简介 Jmet ...

  8. windows下给定多个openNi的Uri,匹配与uri对应的Uvc RGB设备

    1.问题描述: 在瀚维医疗项目中,客户给定两台deeyea(OpenNi+Uvc)设备,在windows平台下分别固定在不同的usb端口上,同时给定了两个设备的uri,默认给定的第一个设备的uri为左 ...

  9. 动态获取奥比UVC设备索引号的方法

    问题:获取UVC流的方式有多种,openCV或者DShow,WMF等. 而通过openCV的方式比较常用,但是采用opencv接口获取UVC流时,采用的索引号的方式.在连接了多个不同UVC设备时,系统 ...

最新文章

  1. 【基于深度学习的脑电图识别】数据集篇:脑电信号自动判读的大数据
  2. 科学记数法数字转换/保留数值小数点位数(数字格式化)
  3. 台式计算机属于,pc机属于什么型计算机
  4. 征战蓝桥 —— 2016年第七届 —— C/C++A组第10题——最大比例
  5. 将php源码修改成存在注入的源码,天融信关于ucms系统存在代码注入漏洞的分析...
  6. java五星好评点评器_亲,麻烦给个五星好评!—RatingBar
  7. 求求你,别再用wait和notify了!
  8. 压缩的问题-----WriteUp
  9. C# 打开指定文件夹下的excel
  10. celery expires 让celery任务具有时效性
  11. [BZOJ1594] [Usaco2008 Jan]猜数游戏(二分 + 并查集)
  12. php过滤iframe,php过滤XSS攻击的函数
  13. 通用的权限管理系统的设计
  14. 寻找IT行业中的引爆点
  15. 五、服务总线 - Bus
  16. H3C模拟器如何连接SecureCRT8.7
  17. 让ros机器人行走、建图、路径规划、定位和导航
  18. hcip难不难?华为认证考试难不难?
  19. 直播报名|美团技术沙龙:美团算法实践——搜索、广告、推荐专场
  20. onlyoffice-开源在线文档编辑软件

热门文章

  1. 微信小程序和APP的区别
  2. 【数据结构】set重载 < 运算符
  3. UBUNTU显卡显示不能用
  4. 四个国产软件大推荐!功能强大到无法无天,建议收藏!
  5. 北京观赏银杏时间(10月下旬-11月中旬)
  6. 字节流(InputStream和OutputStream),字节流读写文件,字节流的缓冲区,字节缓冲流
  7. Docker部署SQL Server 2019 Always On集群
  8. 权威解读 GitHub、Apache 疑云:主流开源软件究竟是否会被闭源?
  9. GitHub断供危机来了!权威解读程序员应对指南
  10. 基于SSM框架的学生老师考试管理系统