Camera KMD ISP學習筆記(1)-ISP框架

lethe1203發表於2024-04-06
學習資料來源: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

相關文章