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

[复制链接]
 楼主| 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:
  1. #ifndef LIBUVC_CONFIG_H
  2. #define LIBUVC_CONFIG_H

  3. #define LIBUVC_VERSION_MAJOR 0
  4. #define LIBUVC_VERSION_MINOR 0
  5. #define LIBUVC_VERSION_PATCH 6
  6. #define LIBUVC_VERSION_STR "0.0.6"
  7. #define LIBUVC_VERSION_INT                      \
  8.   ((0 << 16) |             \
  9.    (0 << 8) |              \
  10.    (6))

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

  17. /* #undef LIBUVC_HAS_JPEG */

  18. #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

粉丝
快速回复 在线客服 返回列表 返回顶部