學習資料來源:https://deepinout.com/camx-kmd/camera-kmd-isp-subsystem-intro.html
僅用於個人學習,侵聯刪
高通camera常用縮略詞:
- CPAS(Camera Peripherals and Support) // 存放硬體版本,匯流排介面,包括AXI/APB匯流排等
- CDM(Camera Data Mover) // 資料搬運
- TFE(Thin Front End) // 低配ife
- IFE(Image Front End) // 影像前端,csid後面的第一個模組就是ife,出來是raw圖
- OPE(Offline Processing Engine) // 離線處理引擎,進去是raw,出來時yuv
- BPS(Bayer Processing Segment) // 離線模組,處理bayer資料
- SFE(Sensor Front End) // 四合一sensor的處理,高階平臺才有,csid前面
- LRME(Low Resolution Motion Estimation) // 也是單獨的一個硬體
- CSID(Camera Serial Interface Decoder) // 解碼器,也就是RX
- UMD(User Mode Driver) // 應用層驅動
- KMD(Kernel Mode Driver) // kernel驅動
- AB(Arbitrated Bandwidth) // 仲裁頻寬
- IB(Instantaneous Bandwidth) // 順時頻寬,cpas決定
- CHI(Camera Hardware Interface) // camera硬體介面,高通專用詞彙,演算法整合在這裡
- RDI(Raw Dump Interface) // raw圖dump介面
- CRM(Camera Request Manager) // camera請求管理器
目錄結構:
cam_cdm/ ---cam_cdm_core_common.c // 核心檔案 ---cam_cdm_hw_core.c // 硬體核心 ---cam_cdm_intf.c // cdm暴露給外接的介面,比如tfe/ope ---cam_cdm_soc.c // soc一些呼叫,比如解析dts ---cam_cdm_util.c // 統一介面 ---cam_cdm_virtual_core.c // 與virtual core對應 cam_core/ ---cam_context.c // 上下文 ---cam_context_utils.c // 暴露介面 ---cam_node.c ---cam_subdev.c // 子裝置,主裝置和子裝置的關係,主裝置如何控制子裝置 cam_cpas/ cam_cre/ cam_cust/ cam_fd/ cam_icp/ cam_isp/ ├── cam_isp_context.c // context模型 ├── cam_isp_context.h ├── cam_isp_dev.c // isp dev註冊一個裝置,虛擬裝置 ├── cam_isp_dev.h └── isp_hw_mgr // 真實的裝置管理在此處 ├── cam_ife_hw_mgr.c // ife ├── cam_isp_hw_mgr.c ├── cam_tfe_hw_mgr.c // tfe ├── hw_utils // isp相關的utils │ ├── cam_isp_packet_parser.c │ ├── cam_tasklet_util.c // 中斷下半部tasklet,統一處理 │ └── irq_controller └── isp_hw ├── /ife_csid_hw ├── /ppi_hw ├── /sfe_hw ├── /tfe_csid_hw ├── /tfe_hw └── /vfe_hw cam_jpeg/ cam_lrme/ cam_ope/ cam_presil/ cam_req_mgr/ ---cam_mem_mgr.c // 記憶體相關的分配管理 ---cam_req_mgr_core.c // 核心邏輯 ---cam_req_mgr_debug.c // debug相關 ---cam_req_mgr_dev.c // 裝置相關,只不過是virtual 裝置 ---cam_req_mgr_timer.c // 定時器相關,比如出幀相關 ---cam_req_mgr_util.c // 通用介面 ---cam_req_mgr_workq.c // 非同步處理 ---Makefile cam_sensor_module/ cam_smmu/ ---cam_smmu_api.c // 暴露給其他硬體模組的介面 cam_sync/ ---cam_sync.c // probe相關 ---cam_sync_dma_fence.c // dma fence相關 ---cam_sync_util.c // 暴露介面呼叫 cam_utils/ // 給camera子系統使用,比如Log ---cam_common_util.c ---cam_compat.c ---cam_cx_ipeak.c ---cam_debug_util.c ---cam_io_util.c ---cam_packet_util.c ---cam_soc_bus.c ---cam_soc_icc.c ---cam_soc_util.c ---cam_trace.c