注意

这是最新开发分支配套的文档,可能包含已发布版本中尚未提供的功能。如果您要查看特定版本的文档,请使用左侧的下拉菜单并选择所需要的版本。

K230 Linux 作为 UVC摄像头指南#

概述#

本文介绍 uvc-gadget demo 的使用方法,包括如何将 K230 Linux 设备配置为 UVC Gadget(USB 摄像头),以及在电脑上通过 USB 查看实时视频流。

功能演示#

硬件连接#

+---------+         +---------+
|  K230   |---USB---|  PC     |
|  Linux  |         | (宿主机)|
+---------+         +---------+
    |
    | UART
    |
+---------+
|  PC     |
| (串口调试)|
+---------+

K230 端启动 uvc-gadget#

在 K230 Linux 命令行执行如下命令启动 uvc-gadget:

# 启动 uvc-gadget 服务
/root/app/uvc-gadget/uvc-gadget.sh start

# 或直接运行 uvc-gadget 程序
uvc-gadget -v /dev/video1

提示:使用 v4l2-ctl --list-devices 命令确认摄像头设备,一般为 /dev/video1

PC 端查看视频#

  1. 在 PC 上打开视频软件(如 PotPlayer、OBS、Cheese 等)

  2. 选择 K230 对应的摄像头设备

  3. 设置视频格式为 MJPEG 1080p

  4. 打开摄像头即可查看视频流

PC端设置示意图 PC端设置示意图

打开摄像头 视频预览

说明:视频流延迟约大概为 220ms。


实现讲解#

配置说明#

需要在 Buildroot 配置中启用 BR2_PACKAGE_UVC_GADGET

# buildroot-overlay/package/uvc-gadget/Config.in
config BR2_PACKAGE_UVC_GADGET
    bool "uvc-gadget"
    select BR2_PACKAGE_LIBV4L

如果未找到 uvc-gadget 程序,请确认已使能上述配置。


uvc-gadget.sh 脚本说明#

脚本位置buildroot-overlay/package/uvc-gadget/uvc-gadget.sh

该脚本用于在嵌入式 Linux 系统中将设备配置为 USB 摄像头设备。

主要功能#

函数

功能

create_frame()

创建视频帧配置,支持三种格式(uncompressed/YUYV、MJPEG)和三种分辨率(360p、720p、1080p)

start_uvc_gadget()

启动 UVC 设备,加载内核模块、挂载 configfs、创建 USB Gadget 配置

stop_uvc_gadget()

停止 UVC 设备,终止进程、解绑 UDC、卸载内核模块

使用方式#

./uvc-gadget.sh start    # 启动 UVC 设备
./uvc-gadget.sh stop     # 停止 UVC 设备
./uvc-gadget.sh restart  # 重启 UVC 设备

核心配置#

  • USB ID:Vendor ID: 0x29f1, Product ID: 0x0104

  • 供应商信息:Canaan

  • USB 控制器91500000.usb


uvc-gadget 程序说明#

K230 的 uvc-gadget 基于 uvc-gadget 开源项目,增加了 K230 VPU 硬件编码支持。

代码位置buildroot-overlay/package/uvc-gadget/

数据流#

Camera (V4L2) → FFmpeg → VPU Encoder → Packet Queue → UVC Streamer → USB Host
  1. 摄像头捕获:通过 libavformat 从 V4L2 设备读取原始帧

  2. 硬件编码:使用 mjpeg_v4l2m2m 编码器进行 VPU 加速编码

  3. Packet 队列:编码后的数据存入循环队列(默认大小 2-4)

  4. UVC 传输:从队列取出数据写入 UVC sink buffer

线程模型#

线程

职责

主线程

处理 UVC events loop,响应 sink buffer dequeue 事件

VPU 线程

持续捕获摄像头数据并送入编码器

线程间通过 mutex + condition variable 同步。


参考资料#

评论列表
条评论
登录