Camera KMD ISP学习笔记(7)-CRM pipeline delay和V4L2 Event
仅用于个人学习,侵联删
Realtime pipeline或实时Pipeline,在这个Pipeilne上的硬件设备有一些特点:
- 实时,实时是指streamon后一直在出图,如下图的蓝色线(flash和actuator不会出图,但也是挂载到Realtime pipeline上面)
- 图像数据不是来自DDR
后面的处理节点从DDR获得数据,那就不是realtime pipeline了
Pipeline Delay
Device Delay(Sensor):
Pipeline delay 就是device delay
Pipeline delay 1的设备:isp/flash/actator
Pipeline delay 2的设备:sensor,也不完全,要根据sensor的datasheet来确定
假如在上图Frame 1的SOF修改了sensor的settings,实际生效的可能会在Frame 3,这样的话Sensor的Pipeilne delay就是2。
同理,Frame 2配置的参数要在Frame 4才生效,以此类推
CRM是UMD和KMD通信的桥梁:
KMD与UMD通过v4l2 event通信
一个是isp,一个sensor发送event,crm将其包装成一个crm事件
dqevent出来的时间
sensor主要是error事件,isp一般是SOF事件,也有可能是error事件,比如sof freeze,报给session
SOF事件给到pipeline,pipeline管理很多node,有的node需要sof信息,比如sensor node,sensor node需要根据SOF时间计算shutter time,报给android metadata。看各个node节点的用法
CRM v4l2 event类型:
#define V4L_EVENT_CAM_REQ_MGR_SOF 0 #define V4L_EVENT_CAM_REQ_MGR_ERROR 1 #define V4L_EVENT_CAM_REQ_MGR_SOF_BOOT_TS 2
SOF:start of frame,一帧图开始传输。mipi csid收到sof立马产生中断
ERROR:camera不出图了等
v4l2_event_queue到v4l2 core
camera_req_mgr_notify_message处理v4l2_event
ERROR举个例子:SOF_FREEZE,watchdog超时了等等
两个SOF区别:
Qtimer:高通自己的一个硬件,Linux启动开始计时
区别:BOOT_TS SOF加了一个第一个SOF来的Linux arch_timer的时间戳