本文主要是介绍Camx架构-Camera kernel Driver debugging,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
目录
V4L2 framework
camera drivers
CRM 功能性
CRM log analysis
使能CRM log:
camera启动期间列举子设备:
userspace 连接或者取消已获得的device handles(UMD 等效于CSLLink/CSLUnlink)
userspace open request (UMD等效于CSLOpenRequest)
在SOF期间,request manager的操作:
如何将UMD sequence ID映射到kernel requestID
例如:CRM 申请ISP的request1和request2
UMD submit request
UMD submit request for realtime pipeline,并稍后在IFE/ISP中获取buf_done.
UMD submit request for offlinePreview pipeline,并稍后在ICP中获取buf_done.
SOF freeze log
V4L2 framework
camera request manager(CRM)遵循 V4L2 设备体系:
- 需要为userspace创建一个media node,以枚举所有被注册过的子设备(subdevices or entities);
- 创建一个video node 用来管理session和requests;
- 创建一个bridge entities,这个子设备是被注册在media device node;
- 将realtime modeules之间不同的request settings同步。
V4L2的 subdevices
SENSOR, IFE, ICP, LRME, JPEG, FD, CPAS, CSIPHY, ACTUATOR, CCI, FLASH,EEPROM, and OIS drivers are created after device bootup
以下这句log就表示CSL成功调用V4L2的子设备接口控制:
camxcslhwinternal.cpp:2786 CSLHwInternalDefaultIoctl() Ioctl succeeded for device /dev/v4l-subdev1 (Type:CSLHwIFE, FD:12, Index:0)
设备分类:
根据hw的功能,camera相关设备可以分为realtime和nonrealtime两种。所有管理内存到内存的硬件devices被称为non realtime devices;所有进行实时streams数据驱动被成为realtime devices。
KMD driver体系
1.V4L2子设备node:如图所示camera kernel drivers用V4L2子设备接口支持UMD/CSL来建立session并与hw建立通信,这为KMD提供了single point IO control entry。
2,camera node interface:为被UMD获取的每一个设备提供node session context和state machine的pool;session node与UMD node具有一一对应的映射关心。CAMX CSL 可以从session manager
获得设备session context。
3,Camera node/context state machine
4,V4L2 bridge initialization sequence
camera drivers
CRM以前称为bridge derive,所有的V4L2子设备都被注册到bridge driver(根据camera devices)。
子设备注册具体内容:
1.V4L2子设备被注册到bridge drive
这篇关于Camx架构-Camera kernel Driver debugging的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!