本讲是Camera KMD ISP子系统专题的第29讲,我们讲解Camera KMD ISP子系统之CPAS模块功能介绍。
更多资源:
资源 | 描述 |
---|---|
在线课程 | 极客笔记在线课程 |
知识星球 | 星球名称:深入浅出Android Camera 星球ID: 17296815 |
极客笔记圈 |
CPAS是什么
CPAS: Camera Peripheral And System,主要负责Camera外围控制相关(带宽投票,硬件版本等等)的一个功能模块,会暴露一个V4L2子设备与用户空间进行通信。
CPAS驱动代码:代码所在目录: drivers/cam_cpas/(https://s.deepinout.com/camera-kernel.lnx.6.0.r5/xref/drivers/cam_cpas/)
- cam_cpas_hw_intf.h是开给Camera内部其他模块使用的接口
- cam_cpas_soc是Camera与SoC的交互逻辑
CPAS的功能
主要功能如下:
- ISP硬件版本的获取,可以做到一套代码兼容不同HW(/dev/v4l-subdev0)
-
各个IP模块的总开关
-
AHB总线带宽动态投票(省功耗)
-
AXI总线带宽动态投票(省功耗)
-
根据usecase不同动态进行QoS改变(省功耗)
用于camx兼容不同的camera family
CPAS驱动会从cpas_top或camss_top(dts决定)读取当前平台使用的哪个ISP Family,保存在platformVersion中。
各IP模块的总开关
Camera IP不管是TFE,OPE,IFE等等,在上电之前都需要调用cam_cpas_start
AHB总线带宽投票
AP访问CAM IP内部寄存器需要通过AHB总线。为了省功耗默认AHB CLK可能为0,一旦真的用到camera 时再投票打开AHB时钟。
AXI总线带宽投票
AXI就是数据总线,Camera会根据usecase,动态计算AXI带宽最小需求以节省带宽。
根据usecase不同动态进行QoS改变
QoS会控制访问AXI总线的优先级,当ISP出现Overflow问题时,如果BW拉满还是没有效果,就可以考虑下QoS的设置了,是否ISP Overflow是因为QoS设置导致抢不过其他模块导致。