2. RK平台AF架构:ISP硬件加速器、统计信息获取与AIQ算法框架
在RK平台自动对焦调试中,理解底层硬件加速器、统计信息获取流程以及上层算法框架是进行精准调试的前提。本章将深入剖析RK ISP的AF硬件加速器工作原理、统计信息获取的数据通路,以及RK AIQ中AF算法的整体架构。
2.1 RK ISP的AF硬件加速器
RK ISP内部集成了专用的AF硬件加速器,用于实时计算图像清晰度评价函数,从而减轻CPU/GPU的负载。该加速器主要包含以下核心模块:
- 像素数据预处理单元:从ISP管线中截取指定ROI(Region of Interest)区域的RAW或RGB数据,进行必要的格式转换与降噪处理。
- 滤波器组:内置多种高通滤波器(如Sobel、Laplacian、Bayer域梯度滤波器),用于提取图像的高频分量。
- 统计累加器:对滤波后的像素值进行绝对值求和、平方和或最大值统计,生成多种清晰度指标。
- 配置寄存器组:用于设置ROI坐标、滤波器系数、统计模式等参数,由驱动层通过I2C或MMIO进行配置。
调试要点: AF硬件加速器的滤波器系数直接影响对比度计算的灵敏度。在调试初期,建议使用默认系数,待搜索步长调优后再根据场景微调滤波器带宽。
下图展示了AF硬件加速器在ISP管线中的位置及其内部数据流:
2.2 AF统计信息获取流程
AF统计信息的获取是一个从硬件到软件的分层传递过程,涉及ISP硬件、内核驱动以及AIQ算法库。完整的流程如下:
- 硬件层统计:AF硬件加速器在每个帧周期内完成ROI区域的滤波与累加计算,将结果写入ISP内部的统计缓冲区。
- 驱动层读取:RK ISP驱动(如
rkisp_af.c)在VSYNC中断服务函数中,通过DMA或直接寄存器读取方式,将硬件统计值搬运到内核内存。 - 用户态传递:驱动通过V4L2元数据队列或自定义IOCTL接口,将统计值上报到用户态的AIQ服务进程。
- AIQ预处理:AIQ中的AF算法模块对原始统计值进行归一化、滤波平滑、无效帧剔除等预处理操作。
关键指标: 统计信息获取的延迟通常控制在1~2帧以内。若超过3帧,会导致AF搜索滞后,产生明显的“拉风箱”现象。
下表总结了各层传递的数据格式与典型延迟:
| 层级 | 数据格式 | 典型延迟 | 接口方式 |
|---|---|---|---|
| 硬件层 | 32位累加值 / 16位最大值 | 1帧 (16.6ms @60fps) | 内部总线 |
| 驱动层 | struct rkisp_af_stat | 0.1~0.5ms | DMA / MMIO |
| 用户态AIQ | 浮点归一化数组 | 0.5~2ms | V4L2 / Netlink |
下图以时序图形式展示了统计信息从硬件到AIQ的完整获取流程:
2.3 RK AIQ中的AF算法框架
RK AIQ(AI Quality)是RK平台统一的图像质量算法库,其中AF模块采用分层可插拔的框架设计。整体框架分为以下三层:
- 策略层 (Strategy Layer):负责场景识别与对焦策略选择。根据环境亮度、运动检测、人脸检测等信息,决定使用对比度法、相位法还是混合模式。
- 算法层 (Algorithm Layer):实现具体的对焦算法,包括对比度评价函数计算、搜索步长生成、峰值检测、防抖逻辑等。
- 适配层 (Adapter Layer):封装硬件差异,提供统一的接口供上层调用,包括ROI配置、马达驱动、统计值获取等。
注意: 在RK3588/RK356X等不同芯片平台上,AF硬件加速器的寄存器布局和统计值格式可能存在差异。适配层负责屏蔽这些差异,确保算法层代码可复用。
下表对比了AF框架中各层的职责与关键接口:
| 层级 | 主要职责 | 关键接口/模块 | 平台相关性 |
|---|---|---|---|
| 策略层 | 场景识别、策略切换 | af_scene_detect, af_strategy_selector | 低 |
| 算法层 | 对比度计算、搜索步长、峰值检测 | af_contrast_calc, af_search_engine | 低 |
| 适配层 | 硬件寄存器配置、统计值解析 | af_hw_ops, af_stats_parser | 高 |
下图展示了RK AIQ中AF算法框架的模块组成与调用关系: