> ## Documentation Index
> Fetch the complete documentation index at: https://dragonwingdocs.qualcomm.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 传感器测试工具

使用以下工具执行功能测试、设置构建环境和进行功能诊断。

## 传感器功能测试工具

这些测试工具可确保应用程序中基于硬件和基于软件的传感器的准确性、可靠性和最佳性能。以下工具有助于对传感器功能进行全面测试。

* 传感器信息测试提供有关传感器的详细信息。
* 驱动程序验收测试确保传感器驱动程序运行正常并与 Qualcomm 传感中枢（QSH）兼容。
* 传感器 workhorse 是在各种条件下对传感器进行压力测试的工具。

传感器信息测试 `ssc_sensor_info` 是 QSH 测试套件中的一个应用程序。它列出 QSH 支持的传感器及其属性。您可以在高级操作系统（HLOS）上运行以下查询，以获取指定数据类型的属性。

```
ssc_sensor_info [-sensor=<sensor_type>] [-delay=<time_in_seconds>][-duration=<time_in_seconds>][-default_only=<1|0>][-log=<1|0>][-help]
```

下表描述了 `ssc_sensor_info` 测试应用程序使用的参数。

**表：ssc\_sensor\_info 的参数**

| 标志            | 类型       | 值                               | 单位  | 说明                                                                                                        |
| ------------- | -------- | ------------------------------- | --- | --------------------------------------------------------------------------------------------------------- |
| Sensor        | `string` | 任何有效的传感器类型，例如 `accel` 和 `gyro`。 | 不适用 | 查询指定传感器类型的属性信息。                                                                                           |
| Log           | `int`    | 0 \| 1                          | 不适用 | 启用或禁用诊断（API）日志。                                                                                           |
| help(h)       | `int`    | 不适用                             | 不适用 | 显示命令用法帮助。                                                                                                 |
| Duration      | `int`    | 正值                              | 秒   | 指定等待传感器属性更新的时间。                                                                                           |
| Delay         | `int`    | 正值                              | 秒   | 指定发送传感器请求之前的时间延迟。                                                                                         |
| default\_only | `int`    | 0 \| 1                          | 不适用 | 如果 `default_only` 标志设置为 `False`，则发送支持指定数据类型的所有可用传感器的 UID。如果 `default_only` 标志设置为 `True`，则仅发送默认可用传感器的 UID。 |

**传感器信息测试示例**

* 查询传感器属性并生成诊断日志。

```
ssc_sensor_info
```

```
root@qcm6490:~# ssc_sensor_info
ssc_sensor_info v1.86

SUID           = 0xebd5604d09d379bca54dcf30ec041e0f
NAME           = ak0991x
VENDOR         = akm
TYPE           = mag
AVAILABLE      = true
VERSION        = 2.62.47
API            = sns_mag.proto
RATES          = [1.000000, 10.000000, 20.000000, 50.000000, 100.000000]
RESOLUTIONS    = 0.150000
RANGES         = [-4912.000000,4912.000000]
DRI            = false
FIFO_SIZE      = 0
STREAM_TYPE    = streaming
STREAM_SYNC    = false
DYNAMIC        = false
EVENT_SIZE     = 16
OP_MODES       = [LOW_POWER, LOW_NOISE]
ACTIVE_CURRENT = 900
SLEEP_CURRENT  = 3
HW_ID          = 0
RIGID_BODY     = display
PHYSICAL_SENSOR       = true
PHYSICAL_SENSOR_TESTS = [3, 1]
SELECTED_RESOLUTION   = 0.150000
SELECTED_RANGE        = [-4912.000000,4912.000000]

SUID           = 0x61ab5376b4a5c9aa58442ede47acd316
NAME           = icm4x6xx
VENDOR         = TDK-InvenSense
TYPE           = accel
AVAILABLE      = true
VERSION        = 1.65.2
API            = sns_accel.proto
RATES          = [12.500000, 25.000000, 50.000000, 100.000000, 200.000000, 500.000000]
RESOLUTIONS    = [0.000019, 0.000037, 0.000075, 0.000150, 0.000299]
RANGES         = [[-9.806650,9.806650], [-19.613300,19.613300], [-39.226601,39.226601], [-78.453201,78.453201], [-156.906403,156.906403]]
DRI            = true
FIFO_SIZE      = 200
STREAM_TYPE    = streaming
STREAM_SYNC    = false
DYNAMIC        = false
EVENT_SIZE     = 16
OP_MODES       = [LPM, NORMAL, HIGH_PERF]
ACTIVE_CURRENT = [50, 240, 240]
SLEEP_CURRENT  = 6
HW_ID          = 0
RIGID_BODY     = display
PHYSICAL_SENSOR       = true
PHYSICAL_SENSOR_TESTS = [3, 2, 1]
SELECTED_RESOLUTION   = 0.000299
SELECTED_RANGE        = [-156.906403,156.906403]
LOW_LATENCY_RATES     = 1000.000000
PASSIVE_REQUEST       = true
```

* 查询所有 *accel* 传感器属性。

```
ssc_sensor_info -sensor=accel
```

```
root@qcm6490:~# ssc_sensor_info -sensor=accel
ssc_sensor_info v1.86

SUID           = 0x61ab5376b4a5c9aa58442ede47acd316
NAME           = icm4x6xx
VENDOR         = TDK-InvenSense
TYPE           = accel
AVAILABLE      = true
VERSION        = 1.65.2
API            = sns_accel.proto
RATES          = [12.500000, 25.000000, 50.000000, 100.000000, 200.000000, 500.000000]
RESOLUTIONS    = [0.000019, 0.000037, 0.000075, 0.000150, 0.000299]
RANGES         = [[-9.806650,9.806650], [-19.613300,19.613300], [-39.226601,39.226601], [-78.453201,78.453201], [-156.906403,156.906403]]
DRI            = true
FIFO_SIZE      = 80
STREAM_TYPE    = streaming
STREAM_SYNC    = false
DYNAMIC        = false
EVENT_SIZE     = 16
OP_MODES       = [LPM, NORMAL, HIGH_PERF]
ACTIVE_CURRENT = [50, 240, 240]
SLEEP_CURRENT  = 6
HW_ID          = 0
RIGID_BODY     = display
PHYSICAL_SENSOR       = true
PHYSICAL_SENSOR_TESTS = [3, 2, 1]
SELECTED_RESOLUTION   = 0.000299
SELECTED_RANGE        = [-156.906403,156.906403]
LOW_LATENCY_RATES     = [1000.000000, 2000.000000]
PASSIVE_REQUEST       = true
```

**输出**

测试应用程序生成以下输出：

* 控制台上的标准输出
* 结果文件

`ssc_drva_test` 驱动程序验收测试工具执行以下操作：

* 执行传感器驱动程序验证，并在 QSH 传感器 API 层运行。
* 执行一系列传感器用例，例如流式传输传感器数据以及以选定的采样频率对传感器进行批处理。
* 直接从命令行接受参数，无需编译时选项。

这种方式使其成为在 HLOS 上执行基本驱动级测试或验证的便捷高效工具。

```
ssc_drva_test [-sensor=<sensor_type>] [-duration=<time_in_seconds>] [-sample_rate=<value_in_Hz>] [-batch_period=<value_in_seconds>] [-iterations=<value>] [-num_samples=<value>] [-factory_test=<value>]
```

下表描述了 `ssc_drva_test` 测试应用程序使用的参数。

**表：ssc\_drva\_test 的参数**

<table>
  <thead>
    <tr><th>标志</th><th>类型</th><th>值</th><th>单位</th><th>说明</th></tr>
  </thead>

  <tbody>
    <tr>
      <td><code>sensor</code></td>
      <td><code>string</code></td>
      <td><ul><li><code>accel</code></li><li><code>gyro</code></li><li><code>sensor\_temperature</code></li><li><code>pressure</code></li><li><code>mag</code></li><li><code>humidity</code></li><li><code>ambient\_temperature</code></li><li><code>ultra\_violet</code></li><li><code>proximity</code></li><li><code>ambient\_light</code></li><li><code>rgb</code></li><li><code>hall</code></li><li>任何添加的自定义传感器</li></ul></td>
      <td>不适用</td>
      <td>必选参数：仅限可用的传感器类型。</td>
    </tr>

    <tr>
      <td><code>duration</code></td>
      <td><code>float</code></td>
      <td>仅限正值</td>
      <td>秒</td>
      <td>必选参数：传感器测试持续时间，以秒为单位。</td>
    </tr>

    <tr>
      <td><code>sample\_rate</code></td>
      <td><code>float</code></td>
      <td><ul><li>正浮点数值</li><li>-1：最大采样率</li><li>-2：最小采样率</li></ul></td>
      <td>Hz</td>
      <td>对于流式传感器为必选，对于变化触发型传感器为可选。</td>
    </tr>

    <tr>
      <td><code>batch\_period</code></td>
      <td><code>float</code></td>
      <td>正浮点数</td>
      <td>秒</td>
      <td>此周期与报告周期相同，表示缓冲样本并向低功耗处理器外部报告的时长。</td>
    </tr>

    <tr>
      <td><code>iterations</code></td>
      <td><code>int</code></td>
      <td>仅限正值</td>
      <td>不适用</td>
      <td>指定测试必须重复的次数。</td>
    </tr>

    <tr>
      <td><code>num\_samples</code></td>
      <td><code>int</code></td>
      <td>仅限正值</td>
      <td>不适用</td>
      <td>表示预期采集的最少样本数。如果指定了 <code>num\_samples</code> 参数且测试期间未采集到足够的样本，测试传感器会生成 FAIL。</td>
    </tr>

    <tr>
      <td><code>factory\_test</code></td>
      <td><code>int</code></td>
      <td><ul><li><code>0 (SNS\_PHYSICAL\_SENSOR\_TEST\_TYPE\_SW)</code></li><li><code>1 (SNS\_PHYSICAL\_SENSOR\_TEST\_TYPE\_HW)</code></li><li><code>2 (SNS\_PHYSICAL\_SENSOR\_TEST\_TYPE\_FACTORY)</code></li><li><code>3 (SNS\_PHYSICAL\_SENSOR\_TEST\_TYPE\_COM)</code></li></ul></td>
      <td>不适用</td>
      <td>选择要运行的出厂测试类型（来自值列）。</td>
    </tr>
  </tbody>
</table>

**驱动程序验收测试示例**

* 以选定的采样频率对单个传感器进行指定时长的流式传输：

```
ssc_drva_test -sensor=accel -duration=5 -sample_rate=500
```

```
root@qcm6490:~# ssc_drva_test -sensor=accel -duration=5 -sample_rate=500
6 ssc_drva_test version 1.27k
6 ssc_drva_test -sensor=accel -duration=5 -sample_rate=500
6 received event: PASS
6 PASS
```

* 以选定的采样频率和报告周期对单个传感器进行指定时长的批处理：

```
ssc_drva_test -sensor=accel -duration=30.0 -sample_rate=100 -batch_period=2.0
```

```
root@qcm6490:~# ssc_drva_test -sensor=accel -duration=30.0 -sample_rate=100 -batch_period=2.0
3 ssc_drva_test version 1.27k
3 received event: PASS
3 PASS
```

* 加速度计自检（硬件自检），通过运行内置诊断例程检查加速度计传感器的健康状况和基本功能：

```
ssc_drva_test -sensor=accel -factory_test=1 -duration=10
```

```
root@qcm6490:~# ssc_drva_test -sensor=accel -factory_test=1 -duration=10
4 ssc_drva_test version 1.27k
4 received event: PASS
4 PASS
```

**输出**

在控制台命令行上，此测试输出 `PASS` 或 `FAIL`，仅表示测试执行状态。

`see_workhorse` 传感器 workhorse 工具执行以下操作：

* 根据命令行参数操作特定传感器。
* 简化各种配置下的传感器测试和数据采集。

```
see_workhorse [-sensor=<sensor_type>][-sample_rate=<max | min | positive integer value>] [-batch_period=<seconds>] [-calibrated=<0 | 1>] [-wakeup=<0 | 1>]
```

下表描述了 `see_workhorse` 工具使用的参数。

**表：see\_workhorse 的参数**

<table>
  <thead>
    <tr><th>标志</th><th>类型</th><th>取值范围</th><th>单位</th><th>说明</th></tr>
  </thead>

  <tbody>
    <tr>
      <td><code>sensor</code></td>
      <td><code>string</code></td>
      <td><ul><li><code>accel</code></li><li><code>gyro</code></li><li><code>sensor\_temperature</code></li><li><code>pressure</code></li><li><code>mag</code></li><li><code>humidity</code></li><li><code>ambient\_temperature</code></li><li><code>ultra\_violet</code></li><li><code>proximity</code></li><li><code>ambient\_light</code></li><li><code>rgb</code></li><li><code>hall</code></li><li>任何添加的自定义传感器</li></ul></td>
      <td>不适用</td>
      <td>必选参数：仅限可用的传感器类型。</td>
    </tr>

    <tr>
      <td><code>on\_change</code></td>
      <td><code>int</code></td>
      <td>0 | 1</td>
      <td>不适用</td>
      <td><ul><li>0 表示使用 <code>SNS\_STD\_SENSOR\_STREAM\_TYPE\_STREAMING</code>。</li><li>1 表示使用 <code>SNS\_STD\_SENSOR\_STREAM\_TYPE\_ON\_CHANGE</code>。</li></ul></td>
    </tr>

    <tr>
      <td><code>sample\_rate</code></td>
      <td><code>float</code></td>
      <td><ul><li>正浮点数值</li><li>-1：最大采样率</li><li>-2：最小采样率</li></ul></td>
      <td>Hz</td>
      <td>对于流式传感器为必选，对于变化触发型传感器为可选。</td>
    </tr>

    <tr>
      <td><code>batch\_period</code></td>
      <td><code>float</code></td>
      <td>正浮点数</td>
      <td>秒</td>
      <td>与批处理周期或报告周期相同。</td>
    </tr>

    <tr>
      <td><code>calibrated</code></td>
      <td><code>int</code></td>
      <td>0 | 1</td>
      <td>不适用</td>
      <td><ul><li>0：无操作（默认）。</li><li>1：如果 <code>sensor\_type</code> 为 gyro 或 mag，则同时分别激活 <code>gyro\_cal</code> 或 <code>mag\_cal</code>。</li></ul></td>
    </tr>

    <tr>
      <td><code>wakeup</code></td>
      <td><code>int</code></td>
      <td>0 | 1</td>
      <td>不适用</td>
      <td><ul><li>0：将 <code>suspend\_config</code> 唤醒设置为 <code>SEE\_CLIENT\_DELIVERY\_NO\_WAKEUP</code>。</li><li>1：将 <code>suspend\_config</code> 唤醒设置为 <code>SEE\_CLIENT\_DELIVERY\_WAKEUP</code>（默认）。</li></ul></td>
    </tr>

    <tr>
      <td><code>display\_events</code></td>
      <td><code>int</code></td>
      <td>0 | 1</td>
      <td>不适用</td>
      <td>使用事件回调，以 JSON 格式显示传感器事件。</td>
    </tr>
  </tbody>
</table>

**传感器 workhorse 示例**

例如，使用以下命令以最大速率流式传输加速度计数据 10 秒：

```
see_workhorse -sensor=accel -sample_rate=-1 -duration=10 -display_events=1
```

```
root@rb3gen2-core-kit:~# see_workhorse -sensor=accel -sample_rate=-1 -duration=10 -display_events=1
see_workhorse version 2.21
06:47:56.554 see_workhorse -sensor=accel -sample_rate=-1 -duration=10 -display_events=1
06:47:57.923 suid = [high 61ab5376b4a5c9aa, low 58442ede47acd316]
06:47:57.924 stream_sensor( accel)
06:47:58.001 sleep(10) seconds
06:48:08.001 awoke
06:48:08.001 disable_sensor( accel)
06:48:08.024 disable_sensor() complete rc 0
06:48:08.024 end iteration: 1
06:48:08.024 msg_id: 130, num_events: 2, first_ts: 28628090051, last_ts: 28628114513, avg_delta: 24462.000
06:48:09.025 PASS see_workhorse -sensor=accel -sample_rate=-1 -duration=10 -display_events=1
PASS see_workhorse -sensor=accel -sample_rate=-1 -duration=10 -display_events=1
06:48:09.025 begin delete psalt
06:48:09.038 end delete psalt
```

### 传感中枢模拟器（SHS）

SHS 使您能够在 x86 Linux 平台上为 QSH 构建算法。有关更多信息，请参阅[传感中枢模拟器](https://docs.qualcomm.com/doc/80-P9361-25)。

## 其他工具

使用以下工具进行构建环境搭建和功能诊断：

* **Qualcomm® Hexagon™ DSP 工具链：** 用于构建环境的 Hexagon 8.4.07 工具链。

* **QXDM Professional™ 工具：** 用于功能诊断和 aDSP 侧调试的诊断客户端。

  * QSH 框架可以直接调用宏和 API 来发送调试信息，以打印字符串和日志数据包。

  * QXDM 日志主要用于 aDSP 侧调试。有关更多信息，请参阅[传感器故障排除](https://docs.qualcomm.com/doc/80-80023-7A/topic/debugging.html)。

  * QXDM Professional 需要 USB 连接。应用处理器可直接连接到 USB 端口，而 aDSP 没有此类连接。有关更多信息，请参阅 [Qualcomm® Package Manager 3 文档](https://qpm.qualcomm.com/assets/userguide/external/book/0.UserGuide/UserGuide.html)。
