> ## Documentation Index
> Fetch the complete documentation index at: https://dragonwingdocs-staging.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`。 | N.A. | 查询指定传感器类型的属性信息。                                                                                            |
| Log           | `int`    | 0 \| 1                          | N.A. | 启用或禁用诊断 (API) 日志。                                                                                          |
| help(h)       | `int`    | N.A.                            | N.A. | 显示命令用法帮助。                                                                                                  |
| Duration      | `int`    | 正值                              | 秒    | 指定传感器属性更新的等待时间。                                                                                            |
| Delay         | `int`    | 正值                              | 秒    | 指定发送传感器请求前的时间延迟。                                                                                           |
| default\_only | `int`    | 0 \| 1                          | N.A. | 如果 `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></ul></td>
      <td>N.A.</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><code>正浮点数值</code></li><li><code>-1</code>：最大采样率</li><li><code>-2</code>：最小采样率</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>N.A.</td>
      <td>提供测试必须重复的次数。</td>
    </tr>

    <tr>
      <td><code>num\_samples</code></td>
      <td><code>int</code></td>
      <td>仅正值</td>
      <td>N.A.</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>N.A.</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`，仅表示测试执行状态。

**使用传感器 workhorse 测试对传感器进行压力测试**

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

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

```
see_workhorse -sensor=<sensor_type> -sample_rate=<min | max | float> -duration=<float> [-batch_period=<float>] [-calibrated=<0 | 1>] [-wakeup=<0 | 1>] [-display_events=<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></ul></td>
      <td>N.A.</td>
      <td>强制参数：限于可用的传感器类型。</td>
    </tr>

    <tr>
      <td><code>on\_change</code></td>
      <td><code>int</code></td>
      <td>0 | 1</td>
      <td>N.A.</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><code>正浮点数值</code></li><li><code>min</code>：最小采样率</li><li><code>max</code>：最大采样率</li></ul></td>
      <td>Hz</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>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>N.A.</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>N.A.</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>N.A.</td>
      <td>使用事件回调以 JSON 格式显示传感器事件。</td>
    </tr>
  </tbody>
</table>

**传感器 workhorse 示例**

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

```
see_workhorse -sensor=accel -sample_rate=max -duration=30 -display_events=1
```

```
root@qcm6490:~# see_workhorse -sensor=accel -sample_rate=max -duration=30 -display_events=1
see_workhorse version 2.04
20:22:15.406 see_workhorse -sensor=accel -sample_rate=max -duration=30 -display_events=1
begin usta_get_sensor_list

20:22:15.731 stream_sensor( accel)
20:22:15.731 + sample_rate: 500.000000 hz
20:22:15.838 config_stream_sensor() complete rc 0
20:22:15.838 sleep(30) seconds


"sns_client_event_msg" : {
 "suid" : {
  "suid_low" : "0x58442ede47acd316",
  "suid_high" : "0x61ab5376b4a5c9aa"
 },
 "events" : [
  {
   "msg_id" : 768,
   "timestamp" : 78497742089,
   "payload" : {
    "sample_rate" : 500.000000,
    "water_mark" : 1,
```

### 传感中心仿真器 (SHS)

SHS 使您能够在 x86 Linux 平台上为 QSH 构建算法。有关更多信息，请参阅 [传感中心仿真器](https://dragonwingdocs.qualcomm.com/Technologies/Sensors/sensors-guide/topic/qcs6490/test_tools#sensing-hub-simulator-shs)。

## 其他工具

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

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

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

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

  * QXDM 日志主要用于 aDSP 侧调试。有关更多信息，请参阅 [故障排除传感器](https://dragonwingdocs.qualcomm.com/Addendum-docs/Sensors/addendum/Troubleshoot-sensors)。

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