Проверка функционирования ППМ для семейства микропроцессоров Elvees серии 1892vm14 под ЗОСРВ «Нейтрино».
Список проверок:
Тестовый стенд представляет из себя ПМ на базе микропроцессора 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
Для вывода информации о процессоре и доступной оперативной памяти выполнить команду 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
Для работы с последовательным портом используется драйвер devc-ser8250-dw. Настройки последовательного порта по умолчанию: скорость 115200, 8 бит, без контроля четности, 1 стоп-бит. В составе загрузочного образа драйвер запускается автоматически.
В случае успешного запуска драйвера в директории /dev/ будет создано устройство ser1.
# ls /dev/ser* /dev/ser1
Для проверки функционирования драйвера UART подключите ПМ к последовательному порту ПК (или через преобразователь по USB) и запустите терминальную программу. В последовательном или удалённом терминале выполните следующую команду:
# echo Test message > /dev/ser1
Проверка считается выполненной успешно, если в терминальной программе будет выведено сообщение:
Test message
Для работы с контроллером интерфейса 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 используется драйвер 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 используется драйвер devu-dwcotg.so, и менеджер ресурсов io-usb. Для вывода информации о доступных интерфейсах выполнить команду usb.
В случае успешного запуска драйвера в директории /dev/ будет создано устройство io-usb.
# ls /dev/io-usb/ . devu-dwcotg.so .. io-usb
Для работы с контроллером 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-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 используется утилита wdtkick-1892vm14. В составе загрузочного образа утилита запускается автоматически. Перед проверкой необходимо убедиться, что для startup-salute* включена опция -W и указано количество секунд сброса (от 0 до 15). Для проверки работоспособности блока watchdog вызвать завершение работы системы, введя следующую команду:
# slay -9 wdtkick-1892vm14
Проверка считается выполненной успешно, если через указанное количество секунд произойдет сброс ПМ и появится приглашение для ввода загрузчика.
Для работы с контроллером 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 раскомментировать соответствующую строку:
# Elvees Salute EL24OM1 configuration samplebase=0x38004000,size=0x1000,irq=69,hdmi=TDA998x:0:0x70:100:0x234501,verbose=debug
Пример содержания /etc/system/config/display.conf:
device {drivername=vpoutfbvid=0x0did=0x0deviceindex=0modeopts=/etc/system/config/vpoutfb.confdisplay {xres=1280yres=1024refresh=60pixel_format=argb8888}}
Затем необходимо запустить менеджер графической подсистемы io-display:
# io-display -dvid=0,did=0
После — воспользоваться утилитой gf-vsync:
# gf-vsync -l0
Проверка считается пройденной успешно, если на экране отображается корректное изображение, соответствующее документации на утилиту gf-vsync.
Проверка композитной графической подсистемы Screen производится с использованием утилиты screen-gles2-gears. Перед выполнением проверки необходимо подключить монитор через разъем HDMI. Для корректной проверки на устройстве должны размещаться конфигурационные файлы:
Так же на устройстве должны размещаться соответствующие библиотеки:
/lib/dll/screen-glesblit.so Подготовка:
Утилитой 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=vpoutfbvid=0x0did=0x0deviceindex=0hook=devg-screen.somodeopts=/etc/system/config/vpoutfb.confdisplay {xres=1280yres=1024refresh=60pixel_format=argb8888}}
Убедиться, что конфигурационный файл настройки драйверного обеспечения для модуля devg-screen.so содержит следующие строки:
# Mali300 platform configurationbegin khronos# Screen driversbegin egl display 1# GPU core drivers unloading is prohibitedpersistent = yes# GPU core drivergpu-dlls = libstub.so# blit driverblit-dll = glesblit# EGL driveregl-dlls = libEGL_mali.so# OpenGL ES v1.* driverglesv1-dlls = libGLESv1_CM_mali.so# OpenGL ES v2.* driver and shader compilerglesv2-dlls = libGLESv2_mali.soend egl displaybegin wfd device 1# GPU driver optionsgpu-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 deviceend khronos
Убедиться, что конфигурационный файл найстройки композиции для модуля devg-screen.so содержит следующие строки:
# Screen accelerator options (Mali300 platform)begin screen# Per display composition optionsbegin wfc display 1refresh = 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 = photony-offset = photonend wfc displaybegin inputbegin cursorsconfig_path = standard # default cursors for all input groups (standard/none/<path>)# group1 = /usr/share/screen/g1.conf # cursors for input-group 1 (<path>)end cursorsbegin input-group 1deny-displays = 2,3end input-groupbegin keyboard 1device = /dev/devi/keyboard0group = 1end keyboardbegin mouse 1device = /dev/devi/mouse0group = 2end mousebegin touch 1device = /dev/devi/touch0display = 1group = 3end touchend inputend 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.
Предыдущий раздел: перейти