欢迎光临
我们一直在努力

chx用什么配置从零开始:用Source Insight搭建高通Camx驱动开发环境(附完整文件清单)

第一次接触高通Camera驱动开发时,面对vendor目录下密密麻麻的代码文件,我完全找不到北。camx、chi-cdk、hal3这些目录之间到底有什么关系?哪些文件才是核心?后来发现,用Source Insight建立清晰的代码索引是最高效的入门方式。本文将分享如何从零搭建Camx开发环境,并附上经过实战验证的关键文件清单

在开始导入代码前,需要准备好基础开发环境。推荐使用Windows 10/11系统,搭配Source Insight 4.0以上版本。以下是必备工具清单:

  • Source Insight 4.0+:代码阅读和导航的核心工具
  • Git for Windows:用于拉取高通平台代码
  • Python 3.8+:部分编译脚本依赖
  • Notepad++:辅助编辑配置文件和脚本

提示:Source Insight的符号解析功能对C++11支持有限,建议关闭C++11相关选项以避免解析错误

配置Source Insight的基础参数:

  1. 打开Options → Preferences → Languages → C/C++
  2. 取消勾选"Parse C++11 standard library types"
  3. 设置Tab宽度为4(与高通代码规范一致)
# 高通代码仓库克隆示例
git clone https://source.codeaurora.org/quic/la/platform/vendor/qcom-opensource/camera-kernel.git

高通Camera驱动代码主要分布在两个核心目录:

2.1 Camx核心框架

路径:vendor/qcom/proprietary/camx/

├── src/
│   ├── core/          # 核心框架实现
│   ├── hwl/           # 硬件抽象层 
│   ├── swl/           # 软件算法层
│   └── chi/           # CHI接口映射
├── api/               # 对外接口定义
└── build/             # 编译系统

2.2 CHI-CDK扩展框架

路径:vendor/qcom/proprietary/chi-cdk/

├── vendor/
│   ├── chioverride/   # HAL3扩展实现
│   ├── node/          # 处理节点实现
│   └── topology/      # 管道配置XML
└── oem/
    ├── actuator/      # 马达驱动
    └── sensor/        # 传感器配置

3.1 创建基础工程

  1. 新建工程,命名为"Camx_Dev"
  2. 设置代码根目录为高通平台vendor路径
  3. 添加以下文件类型:
    • *.c;*.cpp;*.h;*.hpp
    • *.java(部分JNI接口需要)
    • *.mk;*.rc(编译脚本)

3.2 关键文件导入清单

下表列出了必须导入的核心文件及其作用:

文件路径 功能描述 重要性 camx/src/core/hal/camxhal3entry.cpp HAL3入口实现 ★★★★★ chi-cdk/vendor/chioverride/chxextensioninterface.cpp CHI扩展接口 ★★★★☆ camx/src/core/camxhal3module.h 模块定义头文件 ★★★★ camx/src/hwl/ife/camxifenode.cpp ISP前端节点实现 ★★★★ chi-cdk/vendor/node/cvp/cvpnode.cpp CV处理节点 ★★★☆

3.3 符号解析配置

在工程属性中添加以下宏定义,确保正确解析代码:

#define _LINUX 1
#define _CAMX_ 1
#define _CHISTD_ 1

注意:Camx代码中大量使用模板和继承,建议在Source Insight中开启"Parse all files when project opens"选项

4.1 建立核心符号关系图

  1. 通过Relation Window追踪CamX::Initialize调用链
  2. 使用Context Window查看g_Camera3DeviceOps结构体定义
  3. 对以下关键类建立书签:
    • Camera3Device
    • Pipeline
    • Session

4.2 典型代码阅读路径

以处理一帧图像为例的代码追踪路线:

  1. camxhal3entry.cppprocess_capture_request
  2. camxpipeline.cppProcessRequest
  3. camxnode.cppExecuteProcessRequest
  4. camxifenode.cppExecute
// 典型调用流程示例
VOID Node::ExecuteProcessRequest(
    ExecuteProcessRequestData* pExecuteProcessRequestData)
{
    // 预处理逻辑
    ProcessRequest(pExecuteProcessRequestData);

    // 提交到硬件队列
    m_pHwContext->Submit(/*...*/);
}

5.1 常用日志过滤技巧

高通Camera驱动使用以下日志标签:

  • CAMX_DEBUG:核心框架日志
  • CHX_DEBUG:CHI扩展日志
  • HAL_DEBUG:硬件抽象层日志

在logcat中过滤关键信息:

adb logcat -s CAMX_DEBUG,CHX_DEBUG,HAL_DEBUG

5.2 常见问题解决方案

问题现象 可能原因 解决方案 符号解析不全 宏定义缺失 补全工程宏定义 调用链断裂 模板类实例化 手动添加实例化类型 头文件缺失 路径未包含 检查SI的include路径

6.1 自定义节点开发

  1. chi-cdk/vendor/node/下创建新节点目录
  2. 实现标准节点接口:
    class MyCustomNode : public ChiNodeInterface
    {
    public:
        CDKResult Create();
        CDKResult Execute(NodeProcessRequestData* pData);
        //...
    };
    
  3. 在topology XML中添加节点配置

6.2 性能分析工具

  • Camx Profiler:内置性能统计工具
  • QTI Trace:高通专用性能分析工具
  • Perfetto:系统级性能跟踪

以下是经过验证的完整文件清单(基于SM8450平台):

核心框架文件

vendor/qcom/proprietary/camx/src/
├── core/
│   ├── camxhal3entry.cpp
│   ├── camxhal3module.h
│   ├── camxpipeline.cpp
│   └── camxsession.cpp
├── hwl/
│   ├── ife/camxifenode.cpp
│   └── ipe/camxipenode.cpp
└── chi/
    ├── camxchitypes.h
    └── camxchinode.cpp

CHI扩展文件

vendor/qcom/proprietary/chi-cdk/vendor/
├── chioverride/
│   ├── chxextensioninterface.cpp
│   └── chxusecase.cpp
├── node/
│   ├── fd/chxfddetectnode.cpp
│   └── bps/chxbpsnode.cpp
└── topology/
    ├── preview.xml
    └── video.xml

硬件配置

vendor/qcom/proprietary/chi-cdk/oem/
├── sensor/
│   ├── imx586.xml
│   └── ov64b40.cpp
└── actuator/
    ├── dw9800v.cpp
    └── lc898217xc.cpp
赞(0)
未经允许不得转载:上海聚慕医疗器械有限公司 » chx用什么配置从零开始:用Source Insight搭建高通Camx驱动开发环境(附完整文件清单)

登录

找回密码

注册