CRM的request管理笔记

发布时间:2024年01月06日

1 request类型

request有两种,device request和link request。

  • link request
    link req是对link进行精确控制。
    link req是对每个link的请求,比如某一帧是否需要bubble recovery、某一帧是否需要长曝光等feature。
  • device request
    对一个设备进行每帧控制。设备包括:isp、flash、sensor、actuator等。
    camx node通过packet方式传递request的配置到kmd对应的驱动模块,驱动会保存好对应request配置。
    设备驱动会通知crm哪个request从umd已经加入到kmd了。(通过cam_req_mgr_cb_add_req函数通知)

link request数据原型

struct cam_req_mgr_sched_request_v2 {
	__s32 version;
	__s32 session_hdl;
	__s32 link_hdl;
	__s32 bubble_enable;
	__s32 sync_mode;
	__s32 additional_timeout;
	__s32 num_links;
	__s32 num_valid_params;
	__s64 req_id;
	__s32 link_hdls[MAX_LINKS_PER_SESSION];
};

2 link 中in_q介绍

  • 什么是in_q
    在link中存放的输入请求队列。

link的结构体定义:

struct cam_req_mgr_core_link {
	int32_t                              link_hdl;
	int32_t                              num_devs;//link中有多少个device
	enum cam_pipeline_delay              max_delay;
    ...
	struct cam_req_mgr_core_workq       *workq;//自定义的workqueue,处理工作队列中work
	int32_t                              pd_mask;
	struct cam_req_mgr_connected_device *l_dev;//存放link中device
	struct cam_req_mgr_req_data          req; //req_data
	struct cam_req_mgr_timer            *watchdog;//看门狗,监控sof是否超时,sensor是否长时间没有出帧
	...
};

其中cam_req_mgr_req_data 定义中有in_q和 req_tbl。

struct cam_req_mgr_req_data {
	struct cam_req_mgr_req_queue *in_q; //保存Input request queue
	struct cam_req_mgr_req_tbl   *l_tbl;//保存request table
	int32_t                       num_tbl;//保存req table的个数
	struct cam_req_mgr_apply      apply_data[CAM_PIPELINE_DELAY_MAX];//保存apply data,就是req是setting
	struct cam_req_mgr_apply      prev_apply_data[CAM_PIPELINE_DELAY_MAX];
	struct mutex                  lock;
};
  • in_q定义
struct cam_req_mgr_req_queue {
	int32_t                     num_slots;//slot个数,最大48个
	struct cam_req_mgr_slot     slot[MAX_REQ_SLOTS];//slot数组,用slot来存储每帧信息
	int32_t                     rd_idx;//读索引下标。每当收到SOF或EOF,要对req处理时,从rd_idx读取req
	int32_t                     wr_idx;//写索引下标。每当有req从umd通过sche req下发时,就会写入到wr_idx中
	int32_t                     last_applied_idx;//最新位置的读索引下标
};
  • in_q 图示
    input queue图示

3 request table介绍

4 in_q 和request table关系

文章来源:https://blog.csdn.net/lz_1990/article/details/135422609
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。