测试手册 ======== 测试概览 -------- +----------+----------+-----+----------+----------+-----+----------+----------+ | 测试项 | 测试结果 | | 测试项 | 测试结果 | | 测试项 | 测试结果 | +==========+==========+=====+==========+==========+=====+==========+==========+ | 指示灯 | Pass | | 复位按键 | Pass | | USB | Pass | +----------+----------+-----+----------+----------+-----+----------+----------+ | 网口 | Pass | | I2C | Pass | | UART | Pass | +----------+----------+-----+----------+----------+-----+----------+----------+ | GPIO | Pass | | SPI | Pass | | 音频 | Pass | +----------+----------+-----+----------+----------+-----+----------+----------+ | TF卡 | Pass | | RTC | Pass | | watchdog | Pass | +----------+----------+-----+----------+----------+-----+----------+----------+ 设备信息 -------- **硬件版本** + **核心板**:MYZR_IMX8MM_CB200_RevB + **主板**:MYZR_IMX8MM_MB200_RevB **软件版本** + **image**:Image-5.10.72-492a823d1cf5a9f54f + **fdt_file**:myimx8mmek200.dtb-492a823d1cf5a9f54f + **kernel-modules**:kernel-modules.tar.bz2-492a823d1cf5a9f54f 指示灯 ------ 接口丝印:LED1、LED2、LED3 **功能测试** 1)说明:LED1用于指示主板电源状态。 2)操作:给设备上电,LED1亮起。给设备断电,LED1灭。 3)结果:操作时,指示灯状态能够对应,即功能正常。 复位按键 -------- + 接口丝印:SW2 **功能测试** 1)说明:短按复位按键可以使设备电源复位。 2)操作:在主板电源开启的情况下,短按复位按键即可使设备电源复位。 3)结果:按下并松开复位按键时,主板重新启动,即功能正常。 CPU温度 ------- + 系统接口:/sys/class/thermal/thermal_zone0/temp **功能测试** 1)说明:系统支持读取CPU温度传感器数据。 2)操作 + 输入命令: .. code-block:: shell cat /sys/class/thermal/thermal_zone0/temp + 输出信息: .. code-block:: text 58000 .. note:: 输出的数值除以1000即摄氏温度 3)结果:输入命令后,输出信息正常,即功能正常。 网口 ---- + 接口丝印:U10 + 系统接口:eth0 **功能测试** 1)说明:采用设备向PC发送ICMP报文的方式进行测试 2)操作 a)配置电脑有线网卡IP为 192.168.137.99。 b)把开发板的这个网口用网线跟电脑网口连接起来。 c)配置开发板网口IP,具体配置命令如下: .. code-block:: shell ifconfig eth0 up ifconfig eth0 192.168.137.81 d)执行网口测试命令 + 输入指令: .. code-block:: shell ping 192.168.137.99 -c 2 -w 4 + 输出信息: .. code-block:: text PING 192.168.137.99 (192.168.137.99) 56(84) bytes of data. 64 bytes from 192.168.137.99: icmp_seq-1 ttl-64 time-1.43 ms 64 bytes from 192.168.137.99: icmp_seq-2 ttl-64 time-1.53 ms --- 192.168.137.99 ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 1002ms rtt min/avg/max/mdev - 1.437/1.487/1.538/0.063 ms 3)结果:“0% packet loss”表示测试通过。 I2C --- **功能测试** 1)说明:执行 I2C 检测指令并观察结果。 2)操作 a)检测系统的 I2C 总线 + 输入命令: .. code-block:: shell i2cdetect -l + 输出信息类似如下,表示检测到 I2C 0、1、2 和 HDMI 的适配器。 .. code-block:: text i2c-1 i2c 30a30000.i2c I2C adapter i2c-2 i2c 30a40000.i2c I2C adapter i2c-0 i2c 30a20000.i2c I2C adapter b)检测总线上的 I2C 设备 + 输入命令: .. code-block:: shell i2cdetect -y 2 .. note:: i2cdetect 带的参数 2 可以是上一步检测出的总线序号,如 0、1。 + 输出有类似如下信息,非 “\--” 表示在 I2C 总线对应地址检测到设备。 .. code-block:: text 0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- UU -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- UU 70: -- -- -- -- -- -- -- -- 3)结果:操作过程中的输出信息与预期基本一致,即功能正常。 UART ---- +----------+----------+-----------+--------------+--------------+ | 接口位置 | 管脚位置 | 管脚配置 | 系统接口 | 接口功能 | +----------+----------+-----------+--------------+--------------+ | P2 | P2:4 | UART2_TXD | /dev/ttymxc1 | 调试串口 | + +----------+-----------+ + + | | P2:5 | UART2_RXD | | | +----------+----------+-----------+--------------+--------------+ | P2 | P2:1 | UART4_TXD |/dev/ttymxc3 | MCU串口 | + +----------+-----------+ + + | | P2:2 | UART4_RXD | | | +----------+----------+-----------+--------------+--------------+ | J12 |J12:RX3 | UART3_RXD |/dev/ttymxc2 | 串口 | + +----------+-----------+ + + | | J12:TX3 | UART3_TXD | | | +----------+----------+-----------+--------------+--------------+ | J12 | J12:A | UART1_TXD |/dev/ttymxc0 | 串口 | + +----------+-----------+ + + | | J12:B | UART1_RXD | | | +----------+----------+-----------+--------------+--------------+ **功能测试** 1)说明:使用串口自发自收的方式进行测试。 2)操作 a)使用杜邦线连接 J12:RX3 和 J12:TX3。 b)运行测试程序: + 输入命令: .. code-block:: shell ./serial_test_arm64.out /dev/ttymxc2 "www.myzr.com.cn" + 输出信息: .. code-block:: text Starting send data...finish Starting receive data: ASCII: 0x77 Character: w ASCII: 0x77 Character: w ASCII: 0x77 Character: w ASCII: 0x2e Character: . ASCII: 0x6d Character: m ASCII: 0x79 Character: y ASCII: 0x7a Character: z ASCII: 0x72 Character: r ASCII: 0x2e Character: . ASCII: 0x63 Character: c ASCII: 0x6f Character: o ASCII: 0x6d Character: m ASCII: 0x2e Character: . ASCII: 0x63 Character: c ASCII: 0x6e Character: n ASCII: 0x0 Character: 3)结果:执行测试操作后,输入信息符合正确预期即功能正常。 GPIO ---- +------------+------------+--------+--+------------+------------+--------+ | 管脚位置 | 管脚配置 | IO 号 | | 管脚位置 | 管脚配置 | IO 号 | +------------+------------+--------+--+------------+------------+--------+ | J10:10 | GPIO4_IO23 | 119 | | J10:18 | GPIO5_IO27 | 123 | +------------+------------+--------+ +------------+------------+--------+ | J10:12 | GPIO1_IO26 | 122 | | J10:20 | GPIO4_IO28 | 124 | +------------+------------+--------+--+------------+------------+--------+ | J10:14 | GPIO1_IO24 | 120 | | J10:22 | GPIO4_IO29 | 125 | +------------+------------+--------+--+------------+------------+--------+ | J10:18 | GPIO1_IO25 | 121 | | J10:31 | GPIO5_IO5 | 133 | +------------+------------+--------+--+------------+------------+--------+ **功能测试** + GPIO 输出测试 1)说明:通过系统的接口控制 GPIO 的输出电平。 2)操作 a)输入命令导出 IO 操作接口并配置为输出: .. code-block:: shell export OUT_IO_OUT_NUM=122 echo ${OUT_IO_OUT_NUM} > /sys/class/gpio/export echo "out" > /sys/class/gpio/gpio${OUT_IO_OUT_NUM}/direction b)输入命令控制 IO 输出高电平: .. code-block:: shell echo 1 > /sys/class/gpio/gpio${OUT_IO_OUT_NUM}/value .. note:: 这时用万用表测试对应的管脚,电压应当是 3.3V。 c)控制 IO 输出低电平: .. code-block:: shell echo 0 > /sys/class/gpio/gpio${OUT_IO_OUT_NUM}/value .. note:: 这时用万用表测试 J10:12,电压应当是 3.3V。 3)结果:在测试操作中控制IO电平时,测得的电压与预期符合即正常。 + GPIO 输入测试 1)说明:通过系统的接口配置并读取GPIO的输入电平。 2)操作 a)用杜邦线或跳线帽连接 J10 的 10 和 12 脚。 b)输入命令导出 IO 操作接口并配置为输入: .. code-block:: shell export OUT_IO_IN_NUM=119 echo ${OUT_IO_IN_NUM} > /sys/class/gpio/export echo "in" > /sys/class/gpio/gpio${OUT_IO_IN_NUM}/direction c)输入命令控制 J10:12 输出高电平并读取 J10:10 的输入电平: .. code-block:: shell # 注释:控制 J10:12 IO 输出高电平 echo 1 > /sys/class/gpio/gpio${OUT_IO_OUT_NUM}/value # 注释:读取 IO 的输入电平 cat /sys/class/gpio/gpio${OUT_IO_IN_NUM}/value .. note:: 这时命令行界面终端应当输出字符“1”(表示高电平)。 d)输入命令控制 J10:12 输出低电平并读取 J10:10 的输入电平: .. code-block:: shell # 注释:控制 J10:12 IO 输出低电平 echo 0 > /sys/class/gpio/gpio${OUT_IO_OUT_NUM}/value # 注释:读取 IO 的输入电平 cat /sys/class/gpio/gpio${OUT_IO_IN_NUM}/value .. note:: 这时命令行界面终端应当输出字符“0”(表示低电平)。 3)结果:在测试操作中,读取到的电平符合正确预期,即功能正常。 SPI --- +------------+------------+----------------+--+------------+------------+----------------+ | 管脚位置 | 管脚配置 | 系统接口 | | 管脚位置 | 管脚配置 | 系统接口 | +------------+------------+----------------+--+------------+------------+----------------+ | J5:4 | SPI1_SS0 | /dev/spidev3.0 | | J5:14 | SPI2_SS0 | /dev/spidev1.0 | +------------+------------+ + +------------+------------+ + | J5:6 | SPI1_SCLK | | | J5:16 | SPI2_SCLK | | +------------+------------+ + +------------+------------+ + | J5:8 | SPI1_MOSI | | | J5:18 | SPI2_MOSI | | +------------+------------+ + +------------+------------+ + | J5:10 | SPI1_MISO | | | J5:20 | SPI2_MISO | | +------------+------------+----------------+--+------------+------------+----------------+ **功能测试** 1)说明:通过 SPI 接口发送字符串。 .. note:: 在内核源码的 tools/spi/ 目录下有 spidev_test.c 测试程序,可以自己编译。 2)操作 + 使用跳线连接 SPI2 的 MISO 和 MOSI + 输入命令运行测试程序: .. code-block:: shell ./spidev_test -D /dev/spidev1.0 -v -p my_spi_test_string .. note:: “my_spi_test_string” 是通过 spi 发送的字符串。 + 可以看到输出信息类似如下: .. code-block:: text spi mode: 0x0 bits per word: 8 max speed: 500000 Hz (500 KHz) TX | 6D 79 5F 73 70 69 5F 74 65 73 74 5F 73 74 72 69 6E 67 __ __ __ __ __ __ __ __ __ __ __ __ __ __ | my_spi_test_string RX | 6D 79 5F 73 70 69 5F 74 65 73 74 5F 73 74 72 69 6E 67 __ __ __ __ __ __ __ __ __ __ __ __ __ __ | my_spi_test_string 3)结果:看到的输出信息符合正确预期,表示发送成功。 音频 ---- + 系统接口:wm8960-audio **功能测试** 1)说明:播放音频文件进行测试。 2)操作 a)把耳机或喇叭插入丝印 P1 对应的接口。 b)输入命令进行测试: .. code-block:: shell aplay /usr/share/sounds/alsa/Front_Center.wav 3)结果:执行测试命令时,耳机可以听到声音,即功能正常。 TF卡 ---- + 接口丝印:J5 **功能测试** .. note:: 设备的 TF 卡接口支持热插拔,TF 卡座是自弹式。 + TF卡插入测试 1)说明:插入 TF 卡,观察设备能否正确识别到卡。 2)操作 a)用一张 TF 卡,插入到设备的 TF 卡接口。 b)输出信息类似如下: .. code-block:: text ... mmc1: new high speed SDHC card at address 0001 mmcblk1: mmc1:0001 TF 4G 3.68 GiB ... 3)结果:操作后输出信息符合正确预期,表示正确识别到 TF 卡。 + TF卡弹出测试 1)弹出 TF 卡,观察设备能否正确响应。 2)操作 a)往 TF 卡插入方向往里按(听到“咔”一声松手,TF卡会弹出)。 b)输出信息类似如下: .. code-block:: text ... mmc1: card 0001 removed ... 3)结果:操作时的现象符合正确预期,表示 TF 热插拔正常。 USB --- + 接口丝印:J18 **功能测试** + USB设备识别 1)说明:插入 U 盘,观察设备能否正确响应。 2)操作: a)用一个 U 盘,插入到设备的 USB 接口。 b)输出信息类似如下: .. code-block:: text ... usb 1-1.2: new high-speed USB device number 4 using xhci-hcd usb-storage 1-1.2:1.0: USB Mass Storage device detected scsi host0: usb-storage 1-1.2:1.0 ... 3)结果:操作后输出信息符合正确预期,表示正确识别到 U 盘。 + U 盘拔出测试 1)拔出 U 盘,观察设备能否正确响应。 2)操作:拔出 U 盘,可以看到输出信息类似如下: .. code-block:: text ... usb 1-1.2: USB disconnect, device number 4 ... 3)结果:操作时的现象符合正确预期,表示 U 盘拔出正常。 RTC --- + 设备接口:/dev/rtc + 测试说明:RTC 测试需要安装纽扣电池,电池位置在丝印 BT1。 **功能测试** + **RTC时间** 1)说明:先读取RTC时间,再设置RTC时间,之后断电重启后再核对RTC时间 2)操作 a)读取 RTC 时间,具体操作如下: + 输入指令: .. code-block:: shell hwclock -f /dev/rtc1 + 可以看到RTC存储的时间,类似如下: .. code-block:: text 1970-01-01 00:00:21.530265+00:00 b)设置 RTC 时间,具体操作如下: + 输入指令更新系统时间: .. code-block:: shell date -s "2023-02-06 12:34:56" + 可以看到系统当前时间更新为设置的时间: .. code-block:: text Mon Feb 6 12:34:56 UTC 2023 + 输入指令设置系统时间到 RTC: .. code-block:: shell hwclock -w -f /dev/rtc1 c)断电重启设备。 d)核对 RTC 时间,具体操作如下: + 输入指令: .. code-block:: shell hwclock -f /dev/rtc1 + 可以看到RTC存储的时间与我们设置的时间基本相同,类似如下: .. code-block:: text 2023-02-06 12:35:34.485664+00:00 3)结果:执行操作后,核对 RTC 时间基本没有问题,且操作过程中的输出符合预期即功能正常。 + **wakealarm 功能** 1)说明:设备的 RTC 可以产生 wakealarm,可用于唤醒设备休眠。 2)操作 a)设置 10 秒后产生一个 wakealarm 信号,输入下面指令: .. code-block:: shell echo +10 > /sys/class/rtc/rtc1/wakealarm b)使系统进入休眠模式,输入下面指令: .. code-block:: shell echo freeze > /sys/power/state 3)结果:上面两条指令执行完后,系统将不响应串口终端输入。等 wakealarm 唤醒系统后,串口终端可以继续操作即测试正常。 Watchdog -------- + 系统设备:/dev/watchdog **功能测试** 1. 看门狗超时复位 1)说明:设置看门狗喂狗间隔时间少于休眠时间,看门狗将会超时复位。 2)操作:在命令行界面输入下面指令,并观察设备: .. code-block:: text /unit_tests/Watchdog/wdt_driver_test.out 5 10 0 & 3)结果:执行指令 5 秒后设备重启,即功能正常。 2. 看门狗喂狗保持 1)说明:设置看门狗喂狗时间大于休眠时间,设备将会正常运行。 2)操作:在命令行界面输入下面指令: .. code-block:: text /unit_tests/Watchdog/wdt_driver_test.out 2 1 0 3)结果:系统继续运行而不重启,即功能正常。 .. note:: 按 *Ctrl+C* 中止看门狗程序后,2秒内设备重启(说明:硬件看门狗开启后,不会关闭,关闭程序会停止喂狗,导致超时重启)。 -------------------------------------------------------------------------------- :: -------------------------------------------------------------------------------- * 珠海明远智睿科技有限公司 * ZhuHai MYZR Technology CO.,LTD. * Latest Update: 2023/5/08 * Supporter: Zhong JiaYi --------------------------------------------------------------------------------