分两步,一是crm知道某帧req的link dev准备好了,可以做apply setting。 二是不同的link dev,他们生效的pipeline delay不同,对于pd为1和pd为2的device,crm如何配置下apply setting,如何控制。
1)pipeline下openRequest时,调用到kmd的schedule req,此时crm slot status置为add状态
2)每个link device的req从umd下发到kmd后,会调用cb_add_req()回调给crm,crm中req table(有2个,pd为1和pd为2的)中会判断当前link 中所有device是否收到了req,如果满足则将req table中slot status置为ready状态
3)isp收到一帧数据,会触发SOF中断,当SOF发生时会回调crm的process_add_req(),它会检查当前的req在link中,req tbl是否ready,如果满足,Crm将各设备当前SOF需要配置的requested 信息填到 link->req.apply_data[]中,调用send_req()来配置控制每一个实时设备硬件,即通知设备设置哪一个request setting。
什么是EPCR?
在stream on之前提前配置HW。打开early PCR后,ISP只会丢1帧。
如果不打开,可能丢2或3帧,根据设备性能不同,如果性能好,第一个SOF到来处理frame1时,streamon已打开,则丢2帧。否则性能一般,在第二个SOF到来处理frame2时,streamon才打开,则丢3帧。
CRM是UMD和KMD通信的桥梁。
从UMD到kmd直接ioctl调用就行,从kmd到umd如何回复消息?
–KMD与UMD通过v4l2 event通信。