高通平台IMU的Bringup(TODO)

1 IMU传感器

IMU的全称是Inertial Measurement Unit,惯性传感器单元。其实包含了大概三种传感器,Accelerometer加速度传感器,Gyroscope陀螺仪,Magnetometer磁力传感器。

下图就是一个典型的IMU。

所有IO口功能如下:

引脚名称 功能说明 典型连接方式
UCC 电源输入 接 3.3V(不支持 5V 直连)
GND 公共地 接主控地,必须共地
SCL I2C 时钟线 接主控 I2C_SCL
SDA I2C 数据线 接主控 I2C_SDA
ADO I2C 地址选择 拉高 / 拉低可切换 I2C 从地址
CS SPI 片选信号 I2C 模式下接高电平;SPI 模式下接主控 SPI_CS
INT 中断输出 可接主控 GPIO,用于数据就绪 / 姿态更新通知
RST 复位信号 拉低复位芯片,一般接主控 GPIO 或上拉至高
BOOT 引导模式引脚 正常工作时接高 / 悬空,固件升级时进入特殊模式
PS1 通信模式选择位 1 与 PS0 配合,决定通信接口类型
PS0 通信模式选择位 0 与 PS1 配合,决定通信接口类型

可以看到,本质就是一个I2C设备。

2 高通平台的IMU

在高通平台上,不是直接接这个I2C设备,而是使用的BP侧芯片去接的,没有直接AP。主要是考虑到功耗,AP要休眠,BP则可以长时间工作并运行一些基础算法。

查了一下,大概的流程如下:

高通平台(如SDM845/7150等)传感器驱动Bringup主要在ADSP/SLPI(BP侧)完成,核心流程包括: 添加驱动代码到SSC目录、配置编译规则、定义.proto通信协议、修改注册表以加载驱动 。AP侧负责配置设备树(DTS)映射和HAL层映射,最终实现数据流通。 [1, 2, 3]

一、 BP侧(ADSP/SLPI)传感器驱动挂载

BP侧负责底层的驱动逻辑、I2C/SPI通信和数据采样。

  1. 添加驱动文件
    将传感器驱动文件 (.c , .h ) 放入高通专用的SSC驱动目录中:
    vendor/qcom/non-hlos/ADSP.VT.x.x/adsp_proc/ssc_drivers/<sensor_name>/
  2. 配置编译规则 (build/ )
    在驱动目录下创建或修改 .scons 文件,将驱动源文件添加到编译系统,并确保生成相应的 .o 文件。
  3. 定义协议(.proto)
    adsp_proc/ssc/framework/pb 等目录下添加或更新 .proto 文件,定义Sensor的属性、数据格式和事件类型。
  4. 修改注册表(Registry)
    ssc_drivers/<sensor_name>/build/ 下的配置中,添加注册信息(如采样率、I2C地址、GPIO引脚等),使ADSP启动时能识别和加载该驱动。
  5. 编译与更新
    编译ADSP映像并烧录 adsp.mbn (或 sensor.img )。 [1, 2, 3]

二、 AP侧配置与HAL层映射

AP侧(Android)负责处理HAL接口、设备树配置以及与ADSP的QMI通信。

  1. DTS设备树配置
    在AP端的DTS文件中,配置对应的I2C/SPI总线节点和中断引脚,确保硬件资源与ADSP对应。
  2. 添加.proto协议文件
    将ADSP侧定义的 .proto 文件同步一份到AP侧对应目录下,保证通信数据格式一致。
  3. HAL层适配 (.cpp )
    在传感器HAL目录中(如 hardware/qcom/sensors/ ),添加对应的驱动解析 .cpp 文件,实现BP侧数据到Android传感器事件的转换。
  4. 添加传感器注册配置
    在传感器配置文件(如 sns_registry )中注册新的传感器ID和属性。 [1, 2]

三、 调试与Bringup验证

  1. 查看日志 :使用 adb logcat diag 工具(QCAT/QXDM)查看SSC注册和数据流信息。
  2. 检查驱动加载 :确认 ssc_drivers 是否加载成功。
  3. 数据校验 :验证传感器是否能正常读取原始数据。 [1, 2]

通过以上步骤,实现了从BP侧底层驱动管理到AP侧上层数据应用的闭环。

大概是这样吧,没有验证过哈,只是初步了解。。。

相关推荐
远离UE41 小时前
Vulkan学习笔记
笔记·学习
Hammer_Hans2 小时前
DFT笔记46
笔记
声网2 小时前
OpenAI Realtime API 重磅更新:锚定语音模型「深度推理+自主执行」演进路径|Voice Agent 学习笔记
笔记·学习
星光技术人3 小时前
投机采样 Speculative Decoding 核心笔记
人工智能·笔记·深度学习·计算机视觉·语言模型·自动驾驶
码途漫谈3 小时前
Easy-Vibe高级开发篇阅读笔记(二十)——多平台开发之个人网页与博客开发
人工智能·笔记·ai·开源·ai编程
码途漫谈4 小时前
Easy-Vibe高级开发篇阅读笔记(二十一)——AI能力强化之RAG 与企业级智能客服
人工智能·笔记·ai·开源·ai编程
谙弆悕博士4 小时前
快速学C语言—— 第0章:C语言简介
c语言·开发语言·经验分享·笔记·程序人生·课程设计·学习方法
老虎06274 小时前
黑马程序员苍穹外卖--学习笔记(苍穹外卖万字总结—重点知识,面试常见问题)超全
笔记·学习·面试
sealaugh324 小时前
react native(学习笔记第四课) 英语打卡微应用(3)-ocr的文字转化成语音文件(tts)
笔记·学习·react native