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



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

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


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

Базовые проверки функционирования ОС
Проверка запуска на ПМ ядра ЗОСРВ в составе загружаемого образа
Проверка запуска компонентов
Проверка функционирования контроллера DDR памяти
Проверка функционирования контроллера прерываний
Проверка функционирования подсистемы управления общими элементами платформ
Проверки интерфейсов
Проверка драйвера контроллера UART
Проверка драйвера контроллера Gigabit Ethernet
Проверка драйвера контроллера SD/MMC
Проверка драйвера контроллера USB
Проверка драйвера контроллера I2C
Проверка драйвера контроллера GPIO
Проверка работы контроллера Watchdog
Проверка драйвера контроллера SPI
Расширенные проверки функционирования ОС
Проверка графической подсистемы
Проверка композитной графической подсистемы Screen

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

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


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

Подготовка

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


Стоит учитывать, что некоторые штатные утилиты могут не входить в состав загрузочного образа.


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

$ cd utils $ make install

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

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

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

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

# uname -s

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

KPDA

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

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

# pidin ar pid Arguments 1 procnto-smp -v -ae 4098 slogger -s64k 4099 platform-control -dmcom02 4100 devc-ser8250-dw -vvv -e -F -b115200 -c144000000/16 0x38028000^2,0x60 4101 i2c-designware -p0x3802c000 8195 i2c-designware -p0x3802d000 8198 i2c-designware -p0x3802e000 8199 pipe 16393 io-pkt-v4-hc -ptcpip forward,stacksize=8192 86026 qconn qconn_prio=250 98315 inetd 98317 devc-pty 102412 random -t 102414 sh -l 126991 pidin ar

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

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

# pidin info CPU:ARM Release:21.11 FreeMem:2018Mb/2048Mb BootTime:Jan 01 03:00:00 MSK 1970 Processes: 15, Threads: 48 Processor1: 1094697104 Cortex A9 MPCore 816MHz FPU Processor2: 1094697104 Cortex A9 MPCore 816MHz FPU

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

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

# pidin ir pid tid name 1 1 procnto-smp 1 2 procnto-smp 0 0x1d 0 -P- @0xfe08673c:0x0 1 4 procnto-smp 1 5 procnto-smp 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 17 procnto-smp 4098 1 slogger 4099 1 platform-control 4099 2 platform-control 4100 1 devc-ser8250-dw 1 0x60 0 --- @0x804a854:0x805c208 4101 1 i2c-designware 8195 1 i2c-designware 8198 1 i2c-designware 8199 1 pipe 8199 2 pipe 8199 3 pipe 16393 1 io-pkt-v4-hc 16393 2 io-pkt-v4-hc 2 0x69 0 T-- @0x78003304:0x8187500 16393 3 io-pkt-v4-hc 16393 4 io-pkt-v4-hc 16393 5 io-pkt-v4-hc 16393 6 io-pkt-v4-hc 16393 7 io-pkt-v4-hc 86026 1 qconn 86026 2 qconn 86026 3 qconn 98315 1 inetd 98317 1 devc-pty 102412 1 random 102412 2 random 102412 3 random 102414 1 sh 143375 1 pidin

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

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

Проверка функционирования подсистемы управления общими элементами платформ

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

# pidin ar pid Arguments 1 procnto-smp -v -ae 4098 slogger -s64k 4099 platform-control -dmcom02 4100 devc-ser8250 -vvv -e -F -b115200 -c144000000/16 0x38028000^2,0x60 4101 i2c-designware -p0x3802c000 8195 i2c-designware -p0x3802d000 8198 i2c-designware -p0x3802e000 8199 pipe 16393 io-pkt-v4-hc -ptcpip forward,stacksize=8192 86026 qconn qconn_prio=250 98315 inetd 98317 devc-pty 102412 random -t 102414 sh -l 126991 pidin ar

Проверка считается пройденной успешно, если вывод утилиты pidin ar содержит информацию о запуске менеджера управления общими элементами платформ с аргументом devp-mcom02.so -dmcom02:

4099 platform-control -dmcom02

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

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

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

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

# ls /dev/ser* /dev/ser1

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

# echo Test message > /dev/ser1

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

Test message

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

Для работы с контроллером интерфейса Ethernet используется драйвер devnp-1892vm14-gemac.so и менеджер ресурсов io-pkt-v4-hc. В составе загрузочного образа драйвер запускается автоматически. Для вывода информации о сетевых интерфейсах выполните команду ifconfig.

В случае успешного запуска драйвера будет создан сетевой интерфейс ag0 и в результате выполнения команды ifconfig на экран будут выведены следующие данные:

lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 33192 inet 127.0.0.1 netmask 0xff000000 ag0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 address: ba:dc:43:ae:26:5d media: Ethernet autoselect (1000baseT full-duplex) status: active inet 172.16.80.1 netmask 0xffffff00 broadcast 192.168.0.255

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

# ping -c 3 172.16.80.12 PING 172.16.80.12 (172.16.80.12): 56 data bytes 64 bytes from 172.16.80.12: icmp_seq=0 ttl=64 time=0 ms 64 bytes from 172.16.80.12: icmp_seq=1 ttl=64 time=0 ms 64 bytes from 172.16.80.12: icmp_seq=2 ttl=64 time=0 ms ----172.16.80.12 PING Statistics---- 3 packets transmitted, 3 packets received, 0% packet loss round-trip min/avg/max = 0/0/0 ms variance = 0 ms^2

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

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

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

# ls /dev/sd0* /dev/sd0 /dev/sd0t11 /dev/sd0t6 /dev/sd0t77

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

# mount /dev/sd0t77 on / type qnx4

Для измерения производительности операции записи и чтения необходимо создать файл и заполнить его случайными значениями с помощью утилиты 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.034 secs (7529411 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.009 secs (28444444 bytes/sec) 0m00.02s real 0m00.00s user 0m00.00s system

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

Для работы с контроллером интерфейса USB используется драйвер devu-dwcotg.so, и менеджер ресурсов io-usb. Для вывода информации о доступных интерфейсах выполнить команду usb.

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

# ls /dev/io-usb/ . devu-dwcotg.so .. io-usb

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

Для работы с контроллером I2C используется драйвер i2c-dw. В составе загрузочного образа драйвер запускается автоматически. В случае успешного запуска драйвера в директории /dev/ будут создано устройство i2c0.

# ls /dev/i2c* /dev/i2c0 /dev/i2c1 /dev/i2c2

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

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

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

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

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

# ls /dev/gpio /dev/gpio

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

gpio0 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 1i 0i 0i 0i 0i 0i 0i 0i 0i 0i 0i 0i 0i 0i 0i 0i 1i 1i 1i 1i 1i 0i 0i 0i 0i 1i 1i 1i 1i 1i 1i 0i gpio1 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 0i 0o 0i 0i 0i 0i 0i 0i 0i 0i 0i 0i 0i 0i 0i 0i 0i 0i 0i 0i 0i 0i 0i 0i 0i 0i 0i 0i 0i 0i 0i 0i gpio2 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 1i 1i 1i 1i 1i 1i 1i 1i 1i 1i 1i 1i 1i 1i 1i 1i 1i 1i 1i 1i 1i 1i 1i 1i 1i 1i 1i 1i 1i 1i 0i 0i gpio3 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 1i 1i 1i 1i 0i 1i 1i 0i 0i 0i 0i 0i 0i 0i 0i 1i 0i 0i 1o 1i 1i 1i 1i 1i 1i 1i 0i 0i 0i 0i 1i 1i

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

Проверка работы контроллера Watchdog

Для работы с блоком watchdog используется утилита wdtkick-1892vm14. В составе загрузочного образа утилита запускается автоматически. Перед проверкой необходимо убедиться, что для startup-salute* включена опция -W и указано количество секунд сброса (от 0 до 15). Для проверки работоспособности блока watchdog вызвать завершение работы системы, введя следующую команду:

# slay -9 wdtkick-1892vm14

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

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

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

# ls /dev/spi* /dev/spi0

Так как для полноценной проверки функционирования необходимо slave устройство и драйвер под это устройство, а также написанный сценарий обмена данными, проверка ограничится некоторыми функциями драйвера и передачей на loopback.

Проверка функционирования заключается в запуске утилиты spitest и считается выполненной успешно, если конфигурация устройства изменяется в соответствии с заданными параметрами, вывод соответствует измененным ранее параметрам и входные данные при передаче на loopback соответствуют выходным:

Настройка конфигурации устройства:

# spitest setcfg 1 1 1288 5000 Set configuration for SPI Device /dev/spi1: cs1 mode 508 clock_rate 5000 Reading existing configuration of SPI Device... device = 0x1 name = spi-dev1 mode = 0x108 clock_rate = 50 Changing configuration of SPI Device... Reading updated configuration of SPI Device... device = 0x1 name = spi-dev1 mode = 0x508 clock_rate = 5000 Test OK!

Вывод информации об устройствах:

# spitest devinfo 1 1 === SPI Device /dev/spi1 info: === Reading info using SPI_DEV_DEFAULT bit... --- device 0x0000 info --- device = 0x0 name = spi-dev0 mode = 0x108 clock_rate = 50 --- device 0x0001 info --- device = 0x1 name = spi-dev1 mode = 0x508 clock_rate = 5000 --- device 0x0002 info --- device = 0x2 name = spi-dev2 mode = 0x108 clock_rate = 50 --- device 0x0003 info --- device = 0x3 name = spi-dev3 mode = 0x108 clock_rate = 50 --- device 0x0004 info --- Done, 4 devices detected Reading info using SPI_DEV_ID_NONE bit... device = 0x0 name = spi-dev0 mode = 0x108 clock_rate = 50 Done, 1 devices detected

Расширенные проверки функционирования ОС

Проверка графической подсистемы

Проверка работы графической подсистемы производится с использованием утилиты gf-vsync. Перед выполнением проверки необходимо подключить монитор через разъем HDMI. Для корректной проверки на устройстве должны размещаться конфигурационные файлы:

/etc/system/config/vpoutfb.conf
/etc/system/config/display.conf
/etc/system/config/crtc-settings

Так же на устройстве должны размещаться соответствующие библиотеки:

/usr/lib/libgf.so.1
/usr/lib/libffb.so.2
/usr/lib/libdisputil.so.2

В конфигурационном файле /etc/system/config/vpoutfb.conf раскомментировать соответствующую строку:

# Elvees Salute EL24OM1 configuration sample
base=0x38004000,size=0x1000,irq=69,hdmi=TDA998x:0:0x70:100:0x234501,verbose=debug

Пример содержания /etc/system/config/display.conf:

device {
drivername=vpoutfb
vid=0x0
did=0x0
deviceindex=0
modeopts=/etc/system/config/vpoutfb.conf
display {
xres=1280
yres=1024
refresh=60
pixel_format=argb8888
}
}

Затем необходимо запустить менеджер графической подсистемы io-display:

# io-display -dvid=0,did=0

После — воспользоваться утилитой gf-vsync:

# gf-vsync -l0

Проверка считается пройденной успешно, если на экране отображается корректное изображение, соответствующее документации на утилиту gf-vsync.

Проверка композитной графической подсистемы Screen

Проверка композитной графической подсистемы Screen производится с использованием утилиты screen-gles2-gears. Перед выполнением проверки необходимо подключить монитор через разъем HDMI. Для корректной проверки на устройстве должны размещаться конфигурационные файлы:

/etc/system/config/vpoutfb.conf
/etc/system/config/display.conf
/etc/system/config/crtc-settings
/etc/system/config/lxdev.conf
/usr/lib/graphics/Mali300/graphics.conf
/usr/lib/graphics/Mali300/screen.conf

Так же на устройстве должны размещаться соответствующие библиотеки:

/usr/lib/libgf.so.1
/usr/lib/libffb.so.2
/usr/lib/libdisputil.so.2
/usr/lib/libscreen.so.1
/lib/dll/devl-mali-mcom02.so
/lib/dll/devg-screen.so
/lib/dll/screen-glesblit.so
/usr/lib/graphics/Mali300/* - драйверное обеспечение GPU Mali300

Подготовка:

Утилитой env необходимо убедиться, что задана переменная окружения GRAPHICS_ROOT:

# env GRAPHICS_ROOT=/usr/lib/graphics/Mali300 LD_LIBRARY_PATH=/usr/lib/graphics/Mali300:/proc/boot:/lib:/usr/lib:/lib/dll: /opt/lib

Убедиться, что в конфигурационном файле /etc/system/config/display.conf указан хук-модуль devg-screen.so:

device {
drivername=vpoutfb
vid=0x0
did=0x0
deviceindex=0
hook=devg-screen.so
modeopts=/etc/system/config/vpoutfb.conf
display {
xres=1280
yres=1024
refresh=60
pixel_format=argb8888
}
}

Убедиться, что конфигурационный файл настройки драйверного обеспечения для модуля devg-screen.so содержит следующие строки:

# Mali300 platform configuration
begin khronos
# Screen drivers
begin egl display 1
# GPU core drivers unloading is prohibited
persistent = yes
# GPU core driver
gpu-dlls = libstub.so
# blit driver
blit-dll = glesblit
# EGL driver
egl-dlls = libEGL_mali.so
# OpenGL ES v1.* driver
glesv1-dlls = libGLESv1_CM_mali.so
# OpenGL ES v2.* driver and shader compiler
glesv2-dlls = libGLESv2_mali.so
end egl display
begin wfd device 1
# GPU driver options
gpu-contiguousMB = 128 # video (contiguous) memory pool size (in Mb, default = 248)
#gpu-internalPoolMB = 6 # kernel local memory pool size (in Mb, default = precompiled)
#gpu-sharedPoolMB = 2 # shared per-client memory pool initial size (in Mb, default = precompiled)
#gpu-physBase = 0x0 # MMU base address remapping (default - precompiled)
#gpu-physSize = 0x0 # MMU address space size for remapping (in bytes, default - precompiled)
#gpu-powerManagement = 1 # power management feature (0/1 - disabled/enabled, default - precompiled)
#gpu-gpuProfiler = 0 # profiler feature (0/1 - disabled/enabled, default - precompiled)
#gpu-recovery = 1 # recover device from stuck state (0/1 - disabled/enabled, default - precompiled)
#gpu-stuckDump = 1 # level of stuck dump content (1/2/3 - minimal/middle/maximal, default - precompiled)
end wfd device
end khronos

Убедиться, что конфигурационный файл найстройки композиции для модуля devg-screen.so содержит следующие строки:

# Screen accelerator options (Mali300 platform)
begin screen
# Per display composition options
begin wfc display 1
refresh = tile # display composition strategy (auto/full/tile, default = tile)
tiles = 16 # number of tiles (refresh == tile only, default = 16)
interval = 1 # frequency of composition on number of vsync (default = 1)
background = 1 # background filling (0/1, default = 1)
background-color = 0x00000000 # background solid color (AARRGGBB hex value, default = 0x00000000)
rotation = 0 # display rotation factor (0/90/180/270, default = 0)
h-mirror = 0 # flip image horizontally (0/1, default = 0)
v-mirror = 0 # flip image vertically (0/1, default = 0)
scaling-quality = nice # type of scaling qualities (fast/normal/nice, default = normal)
layers = 8 # number of composition layers (1-8, default = 1)
cursor = yes # composer provides top layered cursor engine (yes/no, default = no)
verbose = 0 # composer verbosity level (0-10, default = 0)
thread-priority = 40 # composer thread priority (default = 40)
x-offset = photon
y-offset = photon
end wfc display
begin input
begin cursors
config_path = standard # default cursors for all input groups (standard/none/<path>)
# group1 = /usr/share/screen/g1.conf # cursors for input-group 1 (<path>)
end cursors
begin input-group 1
deny-displays = 2,3
end input-group
begin keyboard 1
device = /dev/devi/keyboard0
group = 1
end keyboard
begin mouse 1
device = /dev/devi/mouse0
group = 2
end mouse
begin touch 1
device = /dev/devi/touch0
display = 1
group = 3
end touch
end input
end screen

Убедиться в корретной работе графического 3D ядра ARM Mali 300. Проверка производится с использованием утилиты pidin и sloginfo. Для корректной проверки на устройстве должы размещаться файлы lxdev.conf:

// load modules
#module "mali-mcom02"
gpu {
compatible = "arm,mali-dev";
};

Затем необходимо запустить io-lxdev:

# io-lxdev

После — следует убедиться в отсутствии ошибок запуска менеджера в выводе sloginfo и воспользоваться утилитой pidin -P io-lxdev ar:

# sloginfo Jan 01 00:00:17 5 10 400 [io-lxdev] Mali: Jan 01 00:00:17 5 10 400 [io-lxdev] Mali device driver r3p0-04rel0-releases/neutrino/2024.1-47-g486f8f5 loaded

# pidin -P io-lxdev ar pid Arguments 4108 io-lxdev

Проверка считается пройденной успешно, если вывод утилиты pidin -P io-lxdev ar содержит информацию о запуске менеджера системы совместимости с модулями Linux:

4108 io-lxdev

Проверка:

Для проверки композитной графической подсистемы Screen необходимо запустить менеджер графической подсистемы io-display:

# io-display -dvid=0,did=0

После — воспользоваться утилитой screen-gles2-gears:

# screen-gles2-gears

Проверка считается пройденной успешно, если на экране отображается корректное изображение, соответствующее документации на утилиту screen-gles2-gears.




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