问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

树莓派 4B 摄像头原理、驱动及 Yocto 项目集成详解

创作时间:
作者:
@小白创作中心

树莓派 4B 摄像头原理、驱动及 Yocto 项目集成详解

引用
CSDN
1.
https://m.blog.csdn.net/Interview_TC/article/details/145810656

树莓派4B配备了专用的MIPI CSI-2接口,支持连接官方的Raspberry Pi Camera Module以及第三方CSI兼容摄像头模块。本文将全面介绍树莓派摄像头的工作原理、底层驱动、关键技术点,并结合Yocto项目讲解如何在自定义Linux镜像中正确集成和使用摄像头。

1. 引言

树莓派4B配备了专用的MIPI CSI-2接口,可用于连接官方的Raspberry Pi Camera Module以及第三方CSI兼容摄像头模块。本博文将全面介绍树莓派摄像头的工作原理、底层驱动、关键技术点,并结合Yocto项目讲解如何在自定义Linux镜像中正确集成和使用摄像头。

2. 树莓派4B摄像头硬件架构

树莓派4B摄像头系统主要由以下组件构成:

  • MIPI CSI-2接口:树莓派4B提供一个15-pin FPC连接器,用于连接官方摄像头模块。

  • 摄像头模组:如Raspberry Pi Camera Module V1/V2/HQ,它们采用Sony IMX系列传感器。

  • VideoCore IV GPU:树莓派的GPU负责图像处理,加速ISP(Image Signal Processing)。

  • Broadcom SoC:主处理器(如BCM2711)用于调度数据和运行图像处理应用。

  • I²C总线:用于摄像头和主控板之间的控制通信(设置曝光、增益等)。

  • MIPI DSI/CSI驱动:用于数据传输,传感器通过MIPI协议传输图像数据至主处理器。

3. 树莓派4B摄像头驱动架构

树莓派摄像头的驱动主要依赖于V4L2(Video4Linux2)和libcamera生态。

3.1 树莓派摄像头驱动堆栈

树莓派使用以下驱动模块支持摄像头:

  • bcm2835-v4l2(传统V4L2驱动)

  • vc-sm-cma(用户空间驱动)

  • libcamera(新一代摄像头管理框架)

传统V4L2驱动(bcm2835-v4l2)

该驱动基于V4L2框架,可通过/dev/video0设备访问摄像头。

加载驱动:

sudo modprobe bcm2835-v4l2  

查看设备:

ls /dev/video*  

使用v4l2-ctl命令测试摄像头:

v4l2-ctl --list-formats-ext  

libcamera生态

libcamera是树莓派推荐的摄像头驱动框架,提供更好的ISP支持。

安装libcamera并测试:

sudo apt install libcamera-apps  
libcamera-hello  

3.2 树莓派4B摄像头设备树(Device Tree)

在config.txt启用摄像头支持:

dtoverlay=vc4-kms-v3d  
dtoverlay=imx219  

查看设备树信息:

cat /proc/device-tree/soc/csi@7e800000/status  

4. 在Yocto项目中集成树莓派摄像头

4.1 添加meta-raspberrypi层

在bblayers.conf添加:

BBLAYERS += "${TOPDIR}/../meta-raspberrypi"  

4.2 配置摄像头支持

在local.conf中启用V4L2和libcamera:

IMAGE_INSTALL:append = " v4l-utils libcamera libcamera-apps"  
DISTRO_FEATURES:append = " v4l2"  

4.3 编译Yocto镜像

bitbake core-image-minimal  

5. 在Yocto系统上测试摄像头

5.1 运行v4l2-ctl测试

v4l2-ctl --device /dev/video0 --stream-mmap --stream-count=100  

5.2 运行libcamera测试

libcamera-hello  

6. PACKAGECONFIG详解

PACKAGECONFIG允许灵活配置Yocto组件。例如,在v4l-utils里可以使用:

PACKAGECONFIG ??= ""  
PACKAGECONFIG[qv4l2] = ",-Dqv4l2=disabled"  
PACKAGECONFIG[qvidcap] = ",-Dqvidcap=disabled"  
PACKAGECONFIG[v4l2-tracer] = ",-Dv4l2-tracer=disabled,json-c"  

解释:

  • qv4l2是V4L2图形调试工具,默认被禁用。

  • qvidcap是视频捕获工具,默认被禁用。

  • v4l2-tracer是V4L2 API调试工具,默认被禁用。

如果想启用qv4l2,可以在local.conf添加:

PACKAGECONFIG:append = " qv4l2"  

然后重新构建:

bitbake v4l-utils  

7. 结论

本教程详细介绍了树莓派4B摄像头的硬件、驱动架构、设备树、Yocto集成方式,并提供了完整的测试流程。你可以根据实际需求,选择V4L2或libcamera方案,在Yocto项目中构建支持摄像头的Linux镜像,并高效管理摄像头应用。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号