Пакеты поддержки модулей для ЗОСРВ «Нейтрино» > MIPS > BSP для устройств на базе процессора Элвис 1892ВМ206 > Проверка функционирования



Проверка функционирования

Проверка функционирования ППМ для семейства микропроцессоров Rockchip серии RK3568 под ЗОСРВ «Нейтрино».


Список проверок:

Базовые проверки функционирования ОС
Проверка запуска на ПМ ядра ЗОСРВ в составе загружаемого образа
Проверка запуска компонентов
Проверка функционирования контроллера DDR памяти
Проверка функционирования контроллера прерываний
Проверка функционирования таймера
Проверка функционирования часов реального времени
Проверка работы ЗОСРВ на ЦП в режиме симметричной мультипроцессорности (SMP) с поддержкой всех CPU ядер
Проверки интерфейсов
Проверка драйвера контроллера UART
Проверка драйвера контроллера SD/MMC
Проверка сетевого драйвера
Проверка драйвера контроллера GPIO
Проверка драйвера контроллера CAN
Проверка подсистемы USB
Проверка драйвера контроллера I2C

Тестовый стенд

Тестовый стенд представляет из себя ПМ на базе микропроцессора Rockchip серии RK3568, соединённый с инструментальным ПК по интерфейсу RS-232.


На инструментальный ПК должно быть установлено:

Подготовка

Перед проведением проверок необходимо запустить ЗОСРВ «Нейтрино» на ПМ на базе микропроцессора Rockchip серии RK3568 в соответствии с главой документации Загрузка образа ОС.


Дополнительные тестовые программы i2c-scan, ticksize и другие не входят в состав ППМ и должны быть самостоятельно загружены из публичного git-репозитория и собраны командой:

$ cd utils $ make install

Затем следует скопировать aarch64.le версии тестовых программ на SD карту памяти и подключить её к ПМ или передать файлы по сети с помощью FTP или NFS.

Базовые проверки функционирования ОС

Проверка запуска на ПМ ядра ЗОСРВ в составе загружаемого образа

В последовательном терминале выполнить команду:

# uname -s

Проверка считается выполненной успешно, если в терминале будет выведено сообщение вида:

KPDA

Проверка запуска компонентов

Для вывода информации о запущенных компонентов выполнить команду pidin ar:

# pidin ar pid Arguments 1 procnto-smp -v -mnP 2 slogger -s64k 3 pipe 4 random -t 5 devc-ser8250-dw -vv -F -e -b115200 -c24000000 0xFE660000^2,150 6 devb-sdmmc mem name=/below4G blk memory=/below4G,cache=8m sdio hc=dw,addr=0xFE2B0000,irq=0x82 disk name=sd cam quiet 7 mksh 8 pidin ar

Проверка функционирования контроллера DDR памяти

Для вывода информации о процессоре и доступной оперативной памяти выполнить команду pidin info:

# pidin info CPU:AARCH64 Release:2024 FreeMem:105Mb/130Mb BootTime:Jan 01 00:00:00 UTC 1970 Processes: 8, Threads: 32 Processor1: 1093652560 Cortex-A55 816MHz FPU Processor2: 1093652560 Cortex-A55 816MHz FPU Processor3: 1093652560 Cortex-A55 816MHz FPU Processor4: 1093652560 Cortex-A55 816MHz FPU

Для проверки функционирования контроллера оперативной памяти используется утилита memcheck. Ее требуется запустить и дождаться завершения проверки:

# /tmp/memcheck

Проверка считается выполненной успешно, если выведено сообщение:

PASS: all memory allocated

Проверка функционирования контроллера прерываний

Для вывода информации о используемых прерываниях выполнить команду pidin ir:

# pidin ir pid tid name 1 1 procnto-smp 1 2 procnto-smp 1 3 procnto-smp 1 4 procnto-smp 0 0x1b 0 -P- @0xffffff80600aca18:0x0 1 6 procnto-smp 1 7 procnto-smp 1 8 procnto-smp 1 9 procnto-smp 1 10 procnto-smp 1 11 procnto-smp 1 12 procnto-smp 1 14 procnto-smp 1 16 procnto-smp 1 17 procnto-smp 1 18 procnto-smp 2 1 slogger 3 1 pipe 3 2 pipe 3 3 pipe 4 1 random 4 2 random 4 3 random 5 1 devc-ser8250-dw 1 0x96 0 --- @0x403288:0x42d078 6 1 devb-sdmmc 2 0x82 0 TP- =PULSE 0x40000005:21 0x3:0 6 2 devb-sdmmc 6 3 devb-sdmmc 6 4 devb-sdmmc 6 5 devb-sdmmc 6 6 devb-sdmmc 6 7 devb-sdmmc 6 8 devb-sdmmc 7 1 mksh 40968 1 pidin

Проверка считается пройденной успешно, если вывод утилиты pidin ir содержит информацию об обработчиках прерывания, принадлежащих выполняемым процессам, в формате

pid tid Имя процесса id прерывания vector mask_count flags handler:area

Проверка функционирования таймера

Для проверки функционирования системного таймера необходимо воспользоваться программой ticksize:

# /tmp/ticksize

Проверка считается выполненной успешно, если вывод данной программы содержит аналогичные строки:

System timer ticksize: 1000 mks Measuring system timer interrupt latency for 10 sec... ------------------------------------ System Timer Latency = 1.58 mks ------------------------------------

Проверка функционирования часов реального времени

Для установки и получения даты от внешних часов реального времени используется утилита rtc. Перед использованием необходимо проверить какие часы реального времени используются на оборудовании и включить соответствующий I2C контроллер.

Получить текущее время от часов реального времени pcf8563:

# rtc -v pcf8563 rtc get: current RTC time is 2020/12/10 14:30:22 (UTC)

Установить системную дату и время на часы реального времени pcf8563:

# rtc -v -s pcf8563 rtc set: current RTC time is 1999/10/11 18:00:13 (UTC)

Проверка считается выполненной успешно, если выводятся аналогичные выше строки и при перезапуске устройства с батарейкой время не сбрасывается.

Проверка работы ЗОСРВ на ЦП в режиме симметричной мультипроцессорности (SMP) с поддержкой всех CPU ядер

Для вывода информации о количестве процессоров выполнить команду pidin info:

# pidin info CPU:AARCH64 Release:2024 FreeMem:105Mb/130Mb BootTime:Jan 01 00:00:00 UTC 1970 Processes: 8, Threads: 33 Processor1: 1093652560 Cortex-A55 816MHz FPU Processor2: 1093652560 Cortex-A55 816MHz FPU Processor3: 1093652560 Cortex-A55 816MHz FPU Processor4: 1093652560 Cortex-A55 816MHz FPU

Для проверки функционирования на всех ядрах выполнить следующее:

# for cpu in 0 1 2 3; do on -C$cpu pidin -P pidin -fl; done

Проверка считается выполненной успешно, если вывод содержит следующие строки:

cpu 0 cpu 1 cpu 2 cpu 3

Проверки интерфейсов

Проверка драйвера контроллера UART

Для работы с последовательным портом используется драйвер devc-ser8250. Настройки последовательного порта по умолчанию: скорость 115200, 8 бит, без контроля четности, 1 стоп-бит. В составе загрузочного образа драйвер запускается автоматически.

В случае успешного запуска драйвера в директории /dev/ будут созданы устройства ser1.

# ls /dev/ser* /dev/ser1

Для проверки функционирования драйвера UART подключите ПМ к последовательному порту ПК (или через преобразователь по USB) и запустите терминальную программу. В последовательном или удалённом терминале выполните следующую команду:

# echo Test message > /dev/ser1

Проверка считается выполненной успешно, если в терминальной программе будет выведено сообщение:

Test message

Проверка драйвера контроллера SD/MMC

Для работы с контроллером SD/MMC используется драйвер devb-sdmmc. В составе загрузочного образа драйвер запускается автоматически. В случае успешного запуска драйвера в директории /dev/ будет создано устройство sd0, соответствующее SD-карте, либо устройство emmc0, соответствующее eMMC-карте, а также устройства, соответствующие разделам. Для управления устройствами могут быть использованы стандартные утилиты для управления и чтения/записи блочных устройств. Проверка считается выполненной успешно, если при выполнении команды ls /dev/sd0* отображаются устройства, соответствующие SD-карте и разделам, например:

# ls /dev/sd0* /dev/sd0 /dev/sd0.lin_data.2 /dev/sd0.efi.1 /dev/sd0.qnx6.3

В выводе утилиты mount увидеть точку монтирования одного из разделов SD-карты, например:

# mount /dev/sd0.qnx6.3 on /fs/qnx6 type qnx6

Для измерения производительности операции записи и чтения необходимо создать файл и заполнить его случайными значениями с помощью утилиты dd, при этом измеряя время данной операции через time:

# dd if=/dev/urandom of=/dev/shmem/test_file bs=1000 count=256 # time dd if=/dev/shmem/test_file of=<точка монтирования>/test_file \ bs=1000 count=256

Выводом данной команды будет является время и скорость записи:

256+0 records in 256+0 records out 256000 bytes transferred in 0.038 secs (6736842 bytes/sec) 0m00.04s real 0m00.00s user 0m00.00s system

Для измерения скорости чтения необходимо скопировать созданный тестовый файл в /dev/null с помощью утилиты dd:

# time dd if=<точка монтирования>/test_file of=/dev/null bs=1000 count=256

Выводом данной команды будет является время и скорость чтения:

256+0 records in 256+0 records out 256000 bytes transferred in 0.010 secs (25600000 bytes/sec) 0m00.01s real 0m00.00s user 0m00.00s system

Проверка сетевого драйвера

Для работы с контроллером интерфейса Ethernet используется драйвер devnp-rockchip.so и менеджер ресурсов io-pkt-*. В составе загрузочного образа драйвер запускается автоматически. Для вывода информации о сетевых интерфейсах выполните команду ifconfig. В случае успешного запуска драйвера будет создан сетевой интерфейс rkc0 и в результате выполнения команды ifconfig на экран будут выведены следующие данные:

lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 33136 inet 127.0.0.1 netmask 0xff000000 rkc0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 address: a6:e5:a6:79:b4:1f media: Ethernet autoselect (1000baseT full-duplex) status: active inet 192.168.42.2 netmask 0xffffff00 broadcast 192.168.42.255

Для проверки функционирования сетевого обмена выполните следующую команду, инициирующую отправку ICMP пакетов существующему сетевому узлу:

# ping -c 3 192.168.42.1 PING 192.168.42.1 (192.168.42.1): 56 data bytes 64 bytes from 192.168.42.1: icmp_seq=0 ttl=64 time=1 ms 64 bytes from 192.168.42.1: icmp_seq=1 ttl=64 time=0 ms 64 bytes from 192.168.42.1: icmp_seq=2 ttl=64 time=0 ms

Проверка считается выполненной успешно, если все 3 пакета были успешно получены (процент потерь равен нулю).

Проверка драйвера контроллера GPIO

Для работы с контроллером GPIO используется менеджер ресурсов gpio-rk3568. В составе загрузочного образа драйвер запускается автоматически.

Проверить наличие устройства gpio в директории /dev/:

# ls /dev/gpio /dev/gpio

Выполнить чтение состояний и направлений GPIO:

# cat /dev/gpio 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 0 0i 1i 0i 1i 1i 0i 1i 1i 0i 1i 1i 1i 1i 1i 1i 0i 0i 1i 0i 0i 1i 0i 1i 0i 1i 1i 0i 1i 0i 0i 0i 0i 1 1i 1i 0i 0i 0i 0i 0i 0i 0i 0i 0i 0i 1i 1i 1i 1i 1i 1i 1i 1i 1i 1i 0i 1i 0i 1i 1i 1i 1i 1i 1i 1i 2 1i 1i 0i 0i 0i 0i 0i 0i 1i 0i 1i 0i 0i 0i 0i 0i 0i 0i 0i 0i 1i 0i 0i 0i 0i 0i 0i 0i 0i 0i 0i 1i 3 0i 0i 0i 0i 0i 0i 1i 0i 0i 1i 0i 1i 1i 0i 0i 0i 1i 0i 0i 0i 0i 0i 0i 0i 0i 0i 0i 0i 0i 0i 0i 0i 4 1i 1i 1i 0i 0i 0i 0i 1i 0i 0i 1i 1i 1i 1i 0i 1i 0i 0i 1i 1i 0i 0i 0i 1i 1i 1i 1i 0i 0i 0i 0i 0i

Проверка считается выполненной успешно, если в директории /dev/ есть устройство gpio и удалось выполнить чтение состояний и направлений GPIO.

Проверка драйвера контроллера CAN

Для взаимодействия с контроллерами CAN используется драйвер can-rk3568. В случае успешного запуска драйвера в директории /dev/ создаются соответствующие устройства: can#, где символ # обозначает номер интерфейса.

# can-rk3568 can0 -v can1 -v # ls /dev/can* /dev/can0: rx0 tx1 /dev/can1: rx0 tx1

Для выполнения тестирования необходимо физически соединить интерфейсы CAN0 и CAN1. Соединение осуществляется следующим образом:

CAN_H - CAN_H, CAN_L - CAN_L.

После настройки соединения рекомендуется запустить процесс прослушивания на интерфейсе CAN1, а на интерфейсе CAN0 выполнить отправку тестовых пакетов.

# cat /dev/can1/rx0 & # echo testing > /dev/can0/tx1 # testing

В результате выполнения теста следует убедиться, что пакеты, отправленные через интерфейс can0-tx1, успешно приняты на интерфейсе can1-rx0.

Проверка подсистемы USB

Для работы USB требуется менеджер io-usb и драйверы хост-контроллеров devu-ohci.so и devu-ehci.so. В составе загрузочного образа менеджер запускается автоматически. Для проверки работы шины выполните команду usb, выводящую информацию о запущенных контроллерах и подключенных к ним устройствам. При корректной работе USB в выводе должны появиться все подключенные в 2.0 порты устройства:

# usb USB 0 (OHCI) v1.10, v1.01 DDK, v1.01 HCD USB 1 (EHCI) v1.10, v1.01 DDK, v1.01 HCD Device Address : 1 Vendor : 0x0dd8 (Netac) Product : 0x3700 (OnlyDisk) Class : 0x00 (Independent per interface) USB 2 (OHCI) v1.10, v1.01 DDK, v1.01 HCD Device Address : 1 Vendor : 0x04f3 Product : 0x0103 Class : 0x00 (Independent per interface) USB 3 (EHCI) v1.10, v1.01 DDK, v1.01 HCD

Проверка драйвера контроллера I2C

Для работы с контроллером I2C используется драйвер i2c-rk. В случае успешного запуска драйвера в директории /dev/ создаются соответствующие устройства: i2c#, где символ # обозначает номер интерфейса.

# ls /dev/i2c* /dev/i2c0

Проверка функционирования заключается в запуске утилиты i2c-scan и считается выполненной успешно, если вывод i2c-scan соответствует ожидаемому, например:

# i2c-scan -d /dev/i2c0 Scanning I2C device /dev/i2c0 for I2C devices... 0 1 2 3 4 5 6 7 8 9 a b c d e f 00: xx -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- 1c -- -- -- 20: 20 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: 50 51 -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 70: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- Scanning done




Предыдущий раздел: перейти