CSI-2 V4L2驱动程序编程

问题描述 投票:0回答:1

我有兴趣将相机驱动程序从一个 SOC(Pi) 移植到另一个 SOC(Jetson),它们都运行 Linux 风格并具有 CSI-2 接口。

我有驱动程序的源代码。我试图了解 CSI-2 接口相对于 V4L2 的工作原理。相机由 SOC 通过 I2C 线控制,源代码中提供了控制功能。我感到困惑的是,我是否需要编写一些东西来实际从相机中提取帧并直接控制 CSI 接口?或者都是由 CSI-2 接口标准化并由 V4L2 处理?

如果您想从相机访问原始数据,该怎么做?

linux raspberry-pi camera v4l2 nvidia-jetson
1个回答
0
投票

这是一个极其令人困惑的话题,而且记录也极其糟糕。看起来,从事 Android 手机开发的公司并不了解其工作原理。

到目前为止我想到的是:

+----+    +-----+
| CS |----| CSI |---> other subdevices
+----+    +-----+

其中 CS 是相机传感器驱动程序,CSI 是 SoC/MCU 特定的 MIPI-CSI2 传感器驱动程序,通常与图像信号处理器 (ISP) 一起处理。

这是 V4L2 魔法的第一圈。

除了 V4L2,还有媒体实体框架……它的作用之一实际上是将多媒体环境的元素以图形形式链接在一起。我不会详细说明,因为我仍然对此感到头疼。

但是,有端口、端点和焊盘。现在,我的理解是前两个是开放固件框架实体(设备树),最后一个是与MEF和V4L2相关的一块:子设备可以有pad!

每个垫可以是 sourcesink...或两者兼而有之。

看起来设备树中的端点代表焊盘。

+--------+     +-------------+
|    +---|     |---+     +---|
| CS | 0 |-----| 0 | CSI | 1 |---> other pad
|    +---|     |---+     +---|
+--------+     +-------------+

上图表示简单的相机,例如 imx219,其中一个源焊盘在逻辑上代表物理相机上的 CSI-2 发射器,链接到处理 SoC/MCU 上的某些驱动程序处理 CSI-2 接收器的接收焊盘。

每个块都由

/dev/v4l-subdevX
节点表示。

这是 V4L2 魔法的第二圈。

现在我有自己的问题,我找不到答案,但要回答你的一个问题:不,只要你有一个适用于 MIPI CSI-2 的工作驱动程序,你就不必实现拉帧你的芯片。

如果您想从相机访问原始数据,该怎么做?

我对此没有确切的答案,但如果您的子设备连接正确,您只需使用正确的库或应用程序(如 GStreamer)打开

/dev/videoX
,您就可以从相机中看到动态图片。

© www.soinside.com 2019 - 2024. All rights reserved.