### 高通Sensor调试方法详解
#### 一、传感器调试信息概述
在高通平台进行sensor调试时,可以通过多种方式获取传感器的相关信息。本节主要介绍两种类型的调试信息及其获取方式。
1. **打印字符串log文件**:这类信息在编译阶段就已经定义好格式和大小,主要用于记录关键的操作步骤或异常情况。
2. **调试工具**:主要有adblogcat、QQXDMPRO以及QCAT等工具。其中,adblogcat用于查看简单的日志信息;QQXDMPRO和QCAT则能够以更加友好的形式展示日志数据,不仅包括错误信息,还包括更详细的信息性日志,这需要通过USB连接来实现。具体来说:
- **adblogcat**:用于基本的日志查看。
- **QQXDMPRO**:除了查看错误信息外,还可以查看更详细的信息性日志。
- **QCAT**:用于解析日志数据包,以更直观的形式呈现给用户。这些工具需要USB连接,并且提供了宏和API来发送打印字符串和日志数据包到相应的模块。
#### 二、传感器调试信息的获取及分析
1. **ADSP处理器上的信息传递**:传感器模块通过共享内存上的QMI消息向应用处理器提供来自ADSP的调试信息。这种方式能够确保信息的安全传输,并且可以有效地利用现有的通信机制。
2. **传感器诊断信息**:使用QXDMPRO查看传感器的诊断信息,这可以帮助我们了解ADSP代码执行的情况。此外,QXDMPRO还支持基于消息级别的过滤功能,使得开发者能够更精确地定位问题所在。
- **打开QXDM**:首先打开QXDM-f11工具,然后右键点击项目查看器选择“消息包”,接着选择目标上的过滤器/寄存器项目,最后选中“SNS”。
- **日志示例**:
- **成功日志**:“Waiting for SMGR service up”、“Get SMGR service information => SMGR is up at this point”、“Initialize client for SMGR”、“Register for SMGR error notification”等日志表示应用处理器成功与ADSP建立了连接。
- **失败日志**:“Unable to initialize service 0 with QCCI or Timeout waiting for Service 0”等日志表示传感器守护进程客户端无法与SMGR服务建立连接。
#### 三、采集传感器日志
1. **从启动时间捕获日志**:推荐的方法是从启动时间开始捕获日志。例如,使用`adblogcat -v time > log.txt`命令来捕捉启动过程中的日志信息。此外,还可以使用QXDM工具来收集更多的传感器日志数据包。
- **启用传感器日志**:在QXDM中启用传感器日志数据包和MSG数据包,关注“消息视图配置”下的“消息包”和“日志包”。重启设备后,应尽快开始日志记录。
- **日志包示例**:在启动前检查QXDM日志,等待出现以下日志信息:“Set_log_mask:14f0 enabled(1)/disabled(0)=1”、“Set_log_mask:14f1 enabled(1)/disabled(0)=1”等,这些日志信息表明日志已经成功开启。
2. **应用程序处理器侧调试**:对于应用处理器上的软件组件如HAL守护进程和libsensor1等的日志记录,可以通过以下步骤进行配置:
- 执行`adb root && adb wait-for-device`和`adb remount && adb pull /system/build.prop .`来获取系统的权限和构建属性文件。
- 在`build.prop`文件中添加以下行:`persist.debug.sensors.hal=1`、`debug.qualcomm.sns.daemon=1`、`debug.qualcomm.sns.libsensor1=1`。
- 保存并推送修改后的`build.prop`文件到系统中,并重启设备。
- 使用`adblogcat -v time Sensors:* libsensor1:* qti_sensors_hal:* QSensorTest:**:S`命令来收集日志。
- **不同的日志级别**:
- 0:禁用所有日志记录。
- 1:启用所有日志记录。
- v:启用冗长和更高,等同于启用所有日志记录。
- d:启用调试和更高。
- i:启用信息和更高。
- w:启用警告和更高,默认值。
- e:启用错误日志记录。
通过以上详细介绍,我们可以看到,在高通平台上进行sensor调试需要借助特定的工具和技术手段。掌握这些调试方法和技巧,能够帮助开发者更高效地解决问题,提高产品的质量和稳定性。