7.2. Amlogic C3 图像信号处理 (C3ISP) 驱动程序¶
7.2.1. 简介¶
本文档介绍了位于 drivers/media/platform/amlogic/c3/isp 下的 Amlogic C3ISP 驱动程序。
该驱动程序的当前版本支持 Amlogic C308L 处理器上的 C3ISP。
该驱动程序实现了 V4L2、媒体控制器和 V4L2 子设备接口。支持内核中使用 V4L2 子设备接口的摄像头传感器。
该驱动程序已在 AW419-C308L-Socket 平台上进行过测试。
7.2.2. Amlogic C3 ISP¶
C308L 处理器上发现的且驱动程序支持的摄像头硬件包括:
1 个 MIPI-CSI-2 模块:处理 MIPI CSI-2 接收器的物理层,并接收来自连接的摄像头传感器的数据。
1 个 MIPI-ADAPTER 模块:组织 MIPI 数据以满足 ISP 输入要求并将 MIPI 数据发送到 ISP。
1 个 ISP(图像信号处理)模块:包含图像处理硬件块的流水线。 ISP 流水线的末端包含三个调整大小器,每个调整大小器都连接到 DMA 接口,该接口将输出数据写入内存。
下面介绍了 C3 ISP 的高级功能视图。
+----------+ +-------+
| Resizer |--->| WRMIF |
+---------+ +------------+ +--------------+ +-------+ |----------+ +-------+
| Sensor |--->| MIPI CSI-2 |--->| MIPI ADAPTER |--->| ISP |---|----------+ +-------+
+---------+ +------------+ +--------------+ +-------+ | Resizer |--->| WRMIF |
+----------+ +-------+
|----------+ +-------+
| Resizer |--->| WRMIF |
+----------+ +-------+
7.2.3. 驱动程序架构和设计¶
为了对模块之间的硬件链接进行建模,并公开一个干净、逻辑和可用的接口,驱动程序注册了以下 V4L2 子设备:
1 个 c3-mipi-csi2 子设备 - MIPI CSI-2 接收器
1 个 c3-mipi-adapter 子设备 - MIPI 适配器
1 个 c3-isp-core 子设备 - ISP 核心
3 个 c3-isp-resizer 子设备 - ISP 调整大小器
c3-isp-core 子设备链接到 2 个视频设备节点,用于统计数据捕获和参数编程
c3-isp-stats 捕获视频设备节点用于统计数据捕获
c3-isp-params 输出视频设备用于参数编程
每个 c3-isp-resizer 子设备都链接到一个捕获视频设备节点,从中捕获帧
c3-isp-resizer0 链接到 c3-isp-cap0 捕获视频设备
c3-isp-resizer1 链接到 c3-isp-cap1 捕获视频设备
c3-isp-resizer2 链接到 c3-isp-cap2 捕获视频设备
媒体控制器流水线图如下所示(连接了 IMX290 摄像头传感器):
媒体流水线拓扑¶
7.2.4. 实现¶
ISP 硬件的运行时配置在 c3-isp-params 视频设备节点上执行,使用 V4L2_META_FMT_C3ISP_PARAMS 作为数据格式。缓冲区结构由 c3_isp_params_cfg
定义。
统计数据是从 c3-isp-stats 视频设备节点捕获的,使用 V4L2_META_FMT_C3ISP_STATS 数据格式。
最终图片大小和格式使用 V4L2 视频捕获接口在 c3-isp-cap[0, 2] 视频设备节点上配置。
Amlogic C3 ISP 由 libcamera 支持,具有专用的流水线处理程序和算法,可执行运行时图像校正和增强。