1 CRM工作职责
- 监控link req是否得到schedule
- 监控link上各个device的req是否ready
- 监控SOF或EOF的trigger信号,决定各个设备配置哪个req
2 CRM如何精确控制RT设备
分两步,一是crm知道某帧req的link dev准备好了,可以做apply setting。 二是不同的link dev,他们生效的pipeline delay不同,对于pd为1和pd为2的device,crm如何配置下apply setting,如何控制。
2.1 CRM如何知道link dev准备好了
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状态
2.2 CRM如何下apply setting
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帧。
3 CRM与UMD使用V4L2 event通信
CRM是UMD和KMD通信的桥梁。
从UMD到kmd直接ioctl调用就行,从kmd到umd如何回复消息?
–KMD与UMD通过v4l2 event通信。