打印

VSF linux应用移植系列 -- libuvc(一)初步移植

[复制链接]
3716|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
vsfopen|  楼主 | 2022-6-21 11:07 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 vsfopen 于 2022-6-21 11:16 编辑

libuvc是基于libusb的USB UVC(USB Video Class)驱动,VSF系统具备完善的fd事件机制(libuvc需要),也支持相对完整的libusb库。所以移植libuvc相对而言,应该会比较简单。

VSF以及linux子系统,参考:https://bbs.21ic.com/icview-3233134-1-1.html

按照移植步骤的话,第一步是在linux下编译libuvc,使用自动生成的libuvc_config.h:
#ifndef LIBUVC_CONFIG_H
#define LIBUVC_CONFIG_H

#define LIBUVC_VERSION_MAJOR 0
#define LIBUVC_VERSION_MINOR 0
#define LIBUVC_VERSION_PATCH 6
#define LIBUVC_VERSION_STR "0.0.6"
#define LIBUVC_VERSION_INT                      \
  ((0 << 16) |             \
   (0 << 8) |              \
   (6))

/** [url=home.php?mod=space&uid=247401]@brief[/url] Test whether libuvc is new enough
* This macro evaluates true if and only if the current version is
* at least as new as the version specified.
*/
#define LIBUVC_VERSION_GTE(major, minor, patch)                         \
  (LIBUVC_VERSION_INT >= (((major) << 16) | ((minor) << 8) | (patch)))

/* #undef LIBUVC_HAS_JPEG */

#endif // !def(LIBUVC_CONFIG_H)

第二部,建立visual studio测试工程,从vsf.linux/project/vc拷贝一份到vc_libuvc。
在工程里,加入libuvc的源码:

加入包含路径:

其中,libuvc\raw是libuvc目录。libuvc\port是libuvc的移植目录,里面存放linux下编译libuvc时自动生成的libuvc_config.h(按照linux下编译libuvc生成的目录结构)。
宏配置,使能APP_USE_LIBUVC_DEMO:

libuvc的main入口修改:
linux fhs里,安装libuvc demo(在vsf_main.c中的vsf_linux_create_fhs函数):

这里就是绑定uvc可执行文件为uvc_main(之前的libuvc example的入口)。

第三部,编译
提示错误:
1. frame-mjpeg.c里,jpeglib.h头文件没找到。
不支持mjpeg,frame_mjpeg.c不参与编译。


2. 一些库函数冲突,看了一下,是因为包含了windows的头文件,在libuvc_config.h中加入如下内容:


第四部,资源优化
既然在windows上移植,暂时不需要优化,先跑通功能。

第五步,动态加载
暂不考虑,先跑通功能。

额外的异步,windows下的winusb驱动,需要定义具体设备ID,修改vsf_usr_cfg_win.h:


这里使用的UVC摄像头的PID/VID就是04F2/B130。
windows上,需要用zadig为这个摄像头安装winusb驱动。

摄像头接入PC后,编译运行:


这里的提示,就是UVC摄像头已经识别,使用了libusb的驱动。

运行demo(命令行输入uvc,按回车):



UVC识别OK,不过后面有运行错误,IO Error,libuvc开源的,所以可以简单调试一下。

调试发现,是如下位置出错:


上USB协议分析仪,截取报文:

看错误,是UVC摄像头的问题,几个UVC的标准请求没有响应。

等新的UVC摄像头,到了之后再测试。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

90

主题

325

帖子

8

粉丝