前言
参考过的文章如下:
https://blog.csdn.net/zhenglie110/article/details/89360312
https://blog.csdn.net/zhenglie110/article/details/89360423
https://blog.csdn.net/zhenglie110/article/details/89361644
http://bbs.ebaina.com/thread-37986-1-1.html
但是上面这些文章里面也不全对,而且每个人需求都不太一样,因此下面我会重头再解释一遍
内核的修改
配置menuconfig增加驱动
我目前的配置就上面这些,而且是将驱动编译进了内核, 上有人把 打开了,经过我的测试打开这个选项将会导致USB2.0的接口无法识别设备,具体原因不清楚
驱动的修改
将USB摄像头插入板子上,观察打印信息
上面已经 告了VID 和 PID,因此不需要在windows里面费那么大劲去找VID和PID
修改文件
在 的末尾模仿之前的加上自己的USB设备信息,如果不加的话,设备插入时调用probe将会按默认的id_table来加载驱动,也就是这个uvc_ids末尾说的
注意一下这个driver_info的赋值,可以用来限制帧率,的值是512,这个设置好像是跟带宽有关系,没有深入了解,如果设的过小,将导致无法出图。而且USB2.0的带宽上限也只有480Mbit/s,连一个摄像头都够呛了。
sample_uvc
直接上sample代码了,原本SDK是没有uvc例子的,这个是我自己实现的,代码上传到附件,包括以下几个文件:
- sample_comm.h
- sample_comm_sys.c
- sample_comm_vdec.c
- sample_comm_vo.c
- sample_comm_vpss.c
- sample_uvc.c
下载地址:https://download.csdn.net/download/whitefish520/13216318
有一处错误,上传后才发现:tv_fmt.fmt.pix.height = uvcParam.u32inputHeight;
以下只粘贴了sample_uvc.c在这里,因为其它的内容基本上都是SDK里面原本就提供的,基本上没有改动,sample_uvc.c是这几天以来的心血,从0开始写的,关于程序中一些设置的解释,放在下一个章节,如果程序看的不太懂,先看后文的解读。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!