前提条件
- 设置调试 UART。
- 进入 UART 终端。
- 要在 UART 终端上启用日志记录,请执行以下操作:
-
在 UART Shell 中按 Enter 以进入
sail_proc@home$。 以下示例输出显示了确认已进入sail_proc@home$的日志。 -
在 UART 终端上运行
setlog <Level > <Privilege>,以根据级别和权限设置允许的日志记录。 参数:<Level>:info、err、warn 或 dbg<Privilege>:el1 或 el2
以下示例输出显示了日志级别设置为 LOG_INFO 时的日志:
-
在 UART Shell 中按 Enter 以进入
步骤
运行以下命令并核查日志,以验证命令是否成功执行:helpgpioi2cel1spigpttmr_testospinor_el1can
help
在 UART 终端上运行help,以了解支持的命令列表及其用法。
例如,
gpio
在 UART 终端上运行以下gpio 命令,以进行 GPIO 功能测试。
注意
以下所有示例均使用 GPIO 11 作为参考 GPIO 编号。请将
以下所有示例均使用 GPIO 11 作为参考 GPIO 编号。请将
<gpio_num> 替换为您硬件上实际可用的 GPIO 编号。core c1 上的 canMailboxTask: MD S1 NOT READY!!! 消息是 CAN mailbox 后台消息,不影响 GPIO 测试结果。-
gpio运行通用 GPIO 测试套件,涵盖所有基本测试用例(TC_GPIO_000 至 TC_GPIO_004)。 例如,参数:无 示例日志: -
gpio input <gpio_num>使用 RAW 驱动接口将 GPIO 引脚配置为输入。 参数:<gpio_num>:要配置为输入的 GPIO 引脚编号。 例如,示例日志: -
gpio output <gpio_num>使用 RAW 驱动接口将 GPIO 引脚配置为输出。 参数:<gpio_num>:要配置为输入的 GPIO 引脚编号。 例如,示例日志: -
gpio high <gpio_num>使用 RAW 驱动接口将 GPIO 引脚驱动为逻辑高电平。 参数:<gpio_num>:要驱动为高电平的 GPIO 引脚编号。 例如,示例日志: c0[ 156.699917s]Setting gpio 11 as High with RAW -
gpio low <gpio_num>使用 RAW 驱动接口将 GPIO 引脚驱动为逻辑低电平。 参数:<gpio_num>:要驱动为低电平的 GPIO 引脚编号。 例如,示例日志: c0[ 168.908299s]Setting gpio 11 as Low with RAW -
gpio read <gpio_num>读取并报告 GPIO 引脚的当前逻辑状态。 参数:<gpio_num>:要读取的 GPIO 引脚编号。 例如,示例日志: -
gpio intr_low <gpio_num>在 GPIO 引脚上启用低电平触发中断。 参数:注意gpio intr_low、gpio intr_high、gpio intr_rising、gpio intr_falling和gpio intr_dual命令会为指定 GPIO 注册 summary 中断。在为同一 GPIO 配置不同的中断触发类型之前,请运行gpio summary_intr_dereg <gpio_num>注销现有的 summary 中断。<gpio_num>:要启用低电平中断的 GPIO 引脚编号。 例如,示例日志: c0[ 192.765044s]Enabled Low Level Interrupt on gpio 11 with RAW -
gpio intr_high <gpio_num>在 GPIO 引脚上启用高电平触发中断。 参数:<gpio_num>:要启用高电平中断的 GPIO 引脚编号。 例如,示例日志: c0[ 502.252913s]Enabled High Level Interrupt on gpio 11 with RAW -
gpio intr_rising <gpio_num>在 GPIO 引脚上启用上升沿触发中断。 参数:<gpio_num>:要启用上升沿中断的 GPIO 引脚编号。 例如,示例日志:注意日志报告的是 Low Level Interrupt,而不是 Rising Edge Interrupt。请确认这是否为预期的固件行为,或将其标记为驱动程序中的日志字符串缺陷。 -
gpio intr_falling <gpio_num>在 GPIO 引脚上启用下降沿触发中断。 参数:<gpio_num>:要启用下降沿中断的 GPIO 引脚编号。 例如,示例日志: -
gpio intr_dual <gpio_num>在 GPIO 引脚上启用双边沿(上升沿和下降沿)触发中断。 参数:<gpio_num>:要启用双边沿中断的 GPIO 引脚编号。 例如,示例日志: -
gpio intr_trigger <gpio_num>等待并验证 GPIO 引脚上的中断触发。该命令会一直阻塞,直到中断触发且 ISR 执行完毕。 参数:<gpio_num>:要触发并验证中断的 GPIO 引脚编号。 例如,示例日志: -
gpio direct_intr_dereg <gpio_num>注销 GPIO 引脚上先前注册的 direct 中断处理程序。 参数:<gpio_num>:要注销 direct 中断的 GPIO 引脚编号。 例如,示例日志: c0[ 453.821464s]Direct Interrupt deregister test passed -
gpio summary_intr_reg <gpio_num>在 GPIO 引脚上注册 summary 中断处理程序并验证注册结果。 参数:<gpio_num>:要注册 summary 中断的 GPIO 引脚编号。 例如,示例日志: -
gpio summary_intr_dereg <gpio_num>注销 GPIO 引脚上先前注册的 summary 中断处理程序。 参数:<gpio_num>:要注销 summary 中断的 GPIO 引脚编号。 例如,示例日志:
i2cel1
在 UART 终端上运行i2cel1,以进行 I2C 功能测试。
注意
i2cel1 测试命令仅适用于 i2c0。对于 i2c1,您必须更新测试应用程序。注意
PMIC 连接到 I2C。
i2cel1 命令验证成功:
注意要获取所有 I2C 测试结果日志,请运行以下命令启用 INFO 日志级别:
spi
在 UART 终端上运行spi,以进行 SPI 功能测试。
注意
spi 测试命令仅适用于 spi0。对于多个 SPI 通道,您必须配置 DTS 文件。spi 命令验证成功:
注意由于没有设备 ID 和 scratch 寄存器,
TC_SPI_002/TC_SPI_003/TC_SPI_005 预期会失败。这些测试用例将在未来版本中移除。注意要启用 SPI 回环,请在 Spi_PBcfg.c 中添加以下代码更改:
注意由于已知的任务优先级问题,SPI 测试用例偶尔可能无法执行。如果 SPI 测试用例未运行,请应用以下更改并重新测试。此问题将在未来版本中修复。
gpttmr_test
在 UART 终端上运行gpttmr_test,以进行 GPT 功能测试。
注意在不同的 RTSS 集群(CPU 核心)上运行
gpttmr_test 可能会暴露中断处理问题,偶尔可能导致设备崩溃。但是,GPT 驱动程序本身不存在功能问题。-
gpttmr_test ft <N>N:<0/1/2/3> 指定运行测试的核心。 用户可以使用此参数显式选择核心。如果未指定核心,测试默认在 Core 0 上运行。gpttmr_test ft 3- 在 core 3 上运行功能测试gpttmr_test ft- 在 core 0 上运行测试(默认)
-
gpttmr_test stats该命令打印 tick 计数差值,表示配置的目标 tick 计数与实际 tick 计数之间的差异。可用于评估定时器功能的精度和性能。以下示例日志显示了各个 GPT 通道的统计信息: 例如,
ospinor_el1
在 UART 终端上运行ospinor_el1,以进行 SPI 功能测试。该命令执行正向测试和异步测试,以评估 SPINOR 存储器的读取、写入和擦除功能。
参数:无
例如,
以下示例日志显示了
ospinor_el1 命令验证成功:
CAN – RTSS 测试命令
在 UART 终端上运行以下can 命令,以进行 CAN 功能测试:
can initcan TXcan RX
-
can init语法:can -t 0 -config 1的示例日志:can TX - standard ID语法:参数:x= CAN 控制器 ID:0 到 7can -t 3 -c 1的示例日志CAN TX 数据会显示在 PCAN-View 应用程序中。
can TX - FD ID语法:参数:x= CAN 控制器 ID:0 到 7can -t 5 -c 1的示例日志CAN TX FD 数据会显示在 PCAN-View 应用程序中

CAN RX
要运行 CAN RX 命令,请执行以下操作:
a. 选择 Transmit > New Message …。


- ID:输入 CAN ID(例如 123)。
- Length:设置数据字节数(8、12、32、64)。
- Data:输入数据字节(例如 11 22 33 44 55 66 77 88)。
- cycle time:1000 ms
- 在 Message Type 下,如果是 CAN FD 帧,请确保勾选 CAN FD 复选框。

注意要停止发送消息,请取消勾选 cycle time。

CAN – HLOS mailbox 测试命令
以下是 HLOS mailbox CAN 测试命令:启用 sail_can 用户空间应用程序
运行以下命令启动 sail_can 应用程序以使用此功能:注意如有高性能要求,必须省略 —debug。使用 —debug 可在控制台上打印日志消息。
查看 CAN 端口
运行以下命令查看 APSS 中的所有 CAN 端口:vcan0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00inet addr:169.254.185.103 Mask:255.255.0.0vcan1 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00inet addr:169.254.185.103 Mask:255.255.0.0vcan8 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00inet addr:169.254.185.103 Mask:255.255.0.0vcan9 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00inet addr:169.254.185.103 Mask:255.255.0.0wlan0 Link encap:Ethernet HWaddr F6:4F:02:32:74:EA
注意编辑 /etc/sail_can/sail_can.conf 中的 active_controller 值,使其反映设备上实际的控制器数量。仅在编辑并保存 conf 文件后再启动 sail_can。
启动时的 CAN 端口状态
运行以下命令在启动时更新 CAN 端口状态:注意请确保此测试 sail_can 在后台运行。
设置 CAN 端口波特率
运行以下命令,根据 CAN 总线配置 CAN 节点的比特率:发送数据
运行以下命令在 CAN 总线上发送数据,并在另一端使用 PCAN 分析仪接收:接收数据
运行以下命令,通过 CANutils(candump)在 CAN 端口上接收数据。数据由 PCAN 或其他外部设备发送。错误 CAN
使用 PCAN 分析仪在 CAN 总线上发送错误帧。请使用外部分析仪(例如 PCAN)发送错误帧。发送多路数据
可使用以下任一设置验证 CAN 通信:- 通过多条 CAN 总线发送数据,并使用 PCAN 分析仪接收。
- 通过多个 CAN 端口连接两台设备,并在相应端口上接收数据。
- 将同一设备上的多个 CAN 端口连接到同一条 CAN 总线,并在不同 CAN 端口之间发送/接收数据。
为多个 CAN 端口设置波特率
运行以下命令,根据 CAN 总线为多个 CAN 端口配置 CAN 节点的比特率。接收多路数据
运行以下命令,使用 SOCKETCAN API 在多个 CAN 端口上接收数据:Mailbox 测试应用程序
前提条件
运行 mailbox 测试应用程序之前:- 更新 SELinux 配置:
- 在
/etc/selinux/config文件中,将SELINUX=enforcing更改为SELINUX=permissive。 - 验证更新后的配置:
示例输出:
- 在
- 在 ADB shell 或 UART shell 中运行以下命令重启设备:
检查 mailbox 驱动程序状态
-
运行以下命令,验证 mailbox 驱动程序已初始化:
示例输出:
-
验证设备节点:
示例输出: /dev/sailMB
sail_console_chan_app
-
在 APSS UART shell 中运行以下命令:
示例输出:
注意
sail_console_chan_app 测试应用程序会模拟(充当)RTSS UART 控制台 shell。saildbg
I²C 测试- 在 APSS UART shell 中运行以下命令:
- 示例日志:
- APSS 端:
- RTSS 端:
- APSS 端:
- 在 APSS UART shell 中运行以下命令:
- 示例日志:
- APSS 端:
- RTSS 端:
注意TC_I2C_09 失败属于预期情况,因为该用例旨在验证负向测试场景。
mailbox
mailbox 命令执行功能测试用例,以评估外部 mailbox 的性能。测试完成后请重启系统。
注意请在 RTSS UART 控制台中运行
mailbox 命令。sailmb_demo
在 APSS UART shell 中运行该应用程序:
示例场景:
-
向某个核心发送多条消息。
以下命令将默认消息向 Core 1 发送 10 次:
示例输出:
- APSS 端:
- RTSS 端:
- APSS 端:
-
发送自定义消息。
以下命令将 Ping from Linux 向 Core 2 发送 10 次:
示例输出:
- APSS 端:
- RTSS 端:
- APSS 端:
-
以十六进制格式指定核心。
以下命令将 Testing Core 3 向 Core 3 发送 5 次:
示例输出:
- APSS 端:
- RTSS 端:
- APSS 端:
以太网测试命令
查看接口配置
当设备连接到公共网络时,动态主机配置协议(DHCP)会自动为 RTSS 以太网接口分配 IP 地址。 运行以下命令,查看分配的 IP 地址、子网掩码、网关、MAC 地址和以太网链路状态:[NW] ipv4 192.168.200.20 up=1 dhcp=1
[NW] mask 255.255.255.0
[NW] gw 192.168.200.10
[NW] mac e8:e0:b7:b5:7d:e1
[NW] ipv6 fe80::eae0:b7ff:feb5:7de1 up=1
设置静态 IPv4 配置
运行以下命令,为以太网设备应用静态 IPv4 配置:<ip>:要分配给 RTSS 以太网接口的静态 IPv4 地址。<mask>:所分配 IPv4 地址的子网掩码。<gw>:用于访问本地子网外设备的默认网关 IP 地址。
查看网络统计信息
使用以下命令显示网络缓冲区和堆计数器:- net buffers: min——如果该值降至 0,可能会发生丢包。
- heap: min_ever——如果该值接近 0,说明存在内存压力。
运行 ping 测试
运行以下命令,向远程主机发送 ICMP echo 请求并确认数据连通性:<ip>:链路对端 IP 地址 <N>:探测次数。默认值为 4,支持的最大值为 32。
示例:
测试网络协议
下图展示了用于验证 IQ-9075 目标设备与所连接主机之间以太网通信的高层客户端/服务器连接。目标设备上的 RTSS 使用 FreeRTOS TCP/UDP 网络协议栈和以太网接口,通过标准以太网链路与主机交换数据。此设置支持 TCP 客户端/服务器测试和 UDP 数据包传输,用于验证网络连通性或协议功能。
<ip>:远程 TCP 服务器的 IP 地址。<port>:远程 TCP 服务器上的端口号。<data>:通过当前 TCP 连接发送的数据负载。
<ip>:远程主机的 IPv4 地址。<port>:远程主机上的端口号。[size]:数据包负载大小(以字节为单位)。
看门狗测试命令
默认情况下,设备启动后看门狗即处于启用状态。看门狗启用和禁用命令便于调试软件故障。要运行 RTSS 看门狗命令,请先完成前提条件。禁用所有看门狗
wdg disable 命令会同时禁用全部四个核心的看门狗,以停止整个系统的看门狗喂狗。
例如,
注意
c0[ 197.375253s] [ WDT ] WDT disabled for core 0
c0[ 197.375291s][WDT] : Core_0 wdt disable performed
c0[ 197.375765s][WDT test] disable command send
c0[ 266.639045s][WDT] Watchdog enabled on core 0 cluster-: 0
c0[ 266.639184s] [ WDT ] Petting started for core 0
c0[ 266.639592s][WDT] Petting Queuesend success with time-: 55000 core-:0
c0[ 266.639641s][WDT] : Core_0 wdt enable performed
- 如果所有活动核心(Core 0、Core 1、Core 2 和 Core 3)空闲超过 30 秒,它们将进入 Sleep 状态。在 Sleep 状态下,
wdg disable命令无法禁用 Core 1、Core 2 和 Core 3 上的看门狗。此外,在核心处于 Sleep 状态时执行的命令对 Core 1、Core 2 和 Core 3 不生效。
c0[ 197.375253s] [ WDT ] WDT disabled for core 0
c0[ 197.375291s][WDT] : Core_0 wdt disable performed
c0[ 197.375765s][WDT test] disable command send
- 当用户在 RTSS 控制台上按 Enter 时,由于 UART 中断注册在 core 0 上,core 0 将退出 Sleep 状态并启用看门狗。core 1、core 2、core 3 需要外部中断才能退出 Sleep 模式。
c0[ 266.639045s][WDT] Watchdog enabled on core 0 cluster-: 0
c0[ 266.639184s] [ WDT ] Petting started for core 0
c0[ 266.639592s][WDT] Petting Queuesend success with time-: 55000 core-:0
c0[ 266.639641s][WDT] : Core_0 wdt enable performed
启用看门狗
wdg core<N> enable 命令为指定核心启用看门狗。看门狗开始计数,并需要定期喂狗。
N 为核心编号。
注意
对于 split-split 集群配置,核心数量为 4。对于 split-lock 配置,核心数量为 3。
例如,
禁用看门狗
wdg core<N> disable 命令为指定核心禁用看门狗。计数器停止,且不会触发复位。
N 为核心编号。
例如,
触发看门狗 bite
wdg core<N> triggerbite <time_ms> 命令会在给定的超时时间(以毫秒为单位)后,在指定核心上强制立即触发看门狗 bite。该命令用于测试 bite 触发的复位和恢复流程。
N:核心编号time_ms:超时值(以毫秒为单位)
c0[ 1930.863200s] BITE trigger recived on core 0
注意执行此命令后,设备将进入 Crash 状态。
验证窗口最大值违规
wdg core<N> winmax 命令测试窗口最大值违规行为,即故意在 WIN_MAX 之后才对看门狗喂狗,以验证是否正确生成 bark 中断。
验证窗口最小值违规
wdg core<N> winmin 命令测试窗口最小值违规行为,即在 WIN_MIN 之前对看门狗喂狗,以验证是否正确生成窗口错误中断。

