Проверка функционирования ППМ для семейства микропроцессоров NXP серии P под ЗОСРВ «Нейтрино».
Список проверок:
Тестовый стенд представляет из себя ПМ на базе микропроцессора NXP серии P, соединённый с инструментальным ПК по интерфейсам RS-232 и Ethernet.
На инструментальный ПК должно быть установлено:
Перед проведением проверок необходимо запустить ЗОСРВ «Нейтрино» на ПМ на базе микропроцессора NXP серии P в соответствии с главой документации Загрузка образа ОС.
Дополнительные тестовые программы i2c-scan, ticksize и другие не входят в состав ППМ и должны быть самостоятельно загружены из публичного git-репозитория и собраны командой:
$ cd utils $ make install
Затем следует скопировать ppcbe версии тестовых программ на SD карту памяти и подключить её к ПМ или передать файлы по сети с помощью FTP или NFS.
# uname -s
Проверка считается выполненной успешно, если в терминале будет выведено сообщение вида:
KPDA
Для вывода информации о процессоре и доступной оперативной памяти выполнить команду pidin info:
# pidin info CPU:PPC Release:2024 FreeMem:7896Mb/8192Mb BootTime:Jan 01 00:00:00 UTC 1970 Processes: 20, Threads: 48 Processor1: 80240012 E5500 Core 2200MHz FPU Processor2: 80240012 E5500 Core 2200MHz FPU Processor3: 80240012 E5500 Core 2200MHz FPU Processor4: 80240012 E5500 Core 2200MHz FPU
Для проверки функционирования контроллера оперативной памяти используется утилита memcheck. Ее требуется запустить и дождаться завершения проверки:
# /tmp/memcheck
Проверка считается выполненной успешно, если выведено сообщение:
PASS: all memory allocated
Для вывода информации о используемых прерываниях выполнить команду pidin ir:
# pidin ir pid tid name 1 1 /procnto-booke-smp 0 0x29 0 --- @0x1709c8:0x0 1 0x2a 0 --- @0x1709c8:0x0 2 0x2b 0 --- @0x1709c8:0x0 3 0x2c 0 --- @0x1709c8:0x0 1 2 /procnto-booke-smp 1 3 /procnto-booke-smp 1 4 /procnto-booke-smp 4 0x80000000 0 -P- @0x16dab0:0x0 1 6 /procnto-booke-smp 1 7 /procnto-booke-smp 1 8 /procnto-booke-smp 1 10 /procnto-booke-smp 1 11 /procnto-booke-smp 1 13 /procnto-booke-smp 1 14 /procnto-booke-smp 1 15 /procnto-booke-smp 1 16 /procnto-booke-smp 1 17 /procnto-booke-smp 1 19 /procnto-booke-smp 8194 1 /boot/devc-ser8250 5 0xe 0 --- @0x48042408:0x48054190 8195 1 proc/boot/slogger 8196 1 proc/boot/pipe 8196 2 proc/boot/pipe 8196 3 proc/boot/pipe 8197 1 proc/boot/i2c-fsl 6 0x10 0 T-- @0x48041348:0x48048040 8198 1 proc/boot/i2c-fsl 7 0x10 0 T-- @0x48041348:0x48048040 8199 1 proc/boot/i2c-fsl 8 0x11 0 T-- @0x48041348:0x48048040 8200 1 proc/boot/i2c-fsl 9 0x11 0 T-- @0x48041348:0x48048040 16393 1 proc/boot/io-usb 10 0xc 0 TP- =PULSE 0x40000005:21 0:0 16393 2 proc/boot/io-usb 16393 3 proc/boot/io-usb 16393 4 proc/boot/io-usb 16393 5 proc/boot/io-usb 16393 6 proc/boot/io-usb 16394 1 oc/boot/devb-umass 16394 2 oc/boot/devb-umass 16395 1 c/boot/etfs-fsl-lp 16395 2 c/boot/etfs-fsl-lp 16396 1 proc/boot/pci-fsl 16397 1 oc/boot/spi-master 16397 2 oc/boot/spi-master 11 0x28 0 T-- @0xfe38e630:0x4805cf40 16398 1 sbin/io-pkt-v4-hc 16398 2 sbin/io-pkt-v4-hc 13 0x16 0 T-- @0xfe3a4364:0x4a5e0f54 14 0x20 0 T-- @0xfe3a43cc:0x4a5e0f54 15 0x26 0 T-- @0xfe3a4450:0x4a5dfd00 16 0x27 0 T-- @0xfe3a4490:0x4a5dfd00 17 0x1b 0 T-- @0xfe3a4364:0x4a611294 18 0x25 0 T-- @0xfe3a43cc:0x4a611294 16398 3 sbin/io-pkt-v4-hc 16398 4 sbin/io-pkt-v4-hc 16398 5 sbin/io-pkt-v4-hc 16399 1 proc/boot/devc-pty 16401 1 usr/sbin/inetd 20498 1 oc/boot/devb-mmcsd 20498 2 oc/boot/devb-mmcsd 20498 3 oc/boot/devb-mmcsd 12 0x64 0 TP- =PULSE 0x40000005:21 0x2:0 65552 1 proc/boot/ksh 90131 1 proc/boot/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 = 0.24 mks ------------------------------------
Для вывода информации о количестве процессоров выполнить команду pidin info:
# pidin info CPU:PPC Release:2024 FreeMem:7896Mb/8192Mb BootTime:Jan 01 00:00:00 UTC 1970 Processes: 20, Threads: 48 Processor1: 80240012 E5500 Core 2200MHz FPU Processor2: 80240012 E5500 Core 2200MHz FPU Processor3: 80240012 E5500 Core 2200MHz FPU Processor4: 80240012 E5500 Core 2200MHz 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
Для работы с последовательным портом используется драйвер devc-ser8250. Настройки последовательного порта по умолчанию: скорость 115200, 8 бит, без контроля четности, 1 стоп-бит. В составе загрузочного образа драйвер запускается автоматически.
В случае успешного запуска драйвера в директории /dev/
будут созданы устройства ser1
и ser2
.
# ls /dev/ser* /dev/ser1 /dev/ser2
Для проверки функционирования драйвера UART подключите ПМ к последовательному порту ПК (или через преобразователь по USB) и запустите терминальную программу. В последовательном или удалённом терминале выполните следующую команду:
# echo Test message > /dev/ser1
Проверка считается выполненной успешно, если в терминальной программе будет выведено сообщение:
Test message
Повторить описанные действия для /dev/ser2
, подключив плату к ПК через другой UART-интерфейс.
Для работы с контроллером интерфейса Ethernet на отладочной плате P3041-DS-PB используется драйвер devnp-dpaa-fsl-p3041.so и менеджер ресурсов io-pkt-ksz. На плате P5040-RDB используется драйвер devnp-dpaa-fsl-p5040.so и менеджер ресурсов io-pkt-v4-hc. В составе загрузочного образа драйвер запускается автоматически. Для вывода информации о сетевых интерфейсах выполните команду ifconfig.
В случае успешного запуска драйвера будет создан сетевой интерфейс dsec0 и в результате выполнения команды ifconfig на экран будут выведены следующие данные:
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 33192 inet 127.0.0.1 netmask 0xff000000 dsec0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 capabilities rx=7<IP4CSUM,TCP4CSUM,UDP4CSUM> capabilities tx=0 enabled=0 address: 00:04:9f:98:c2:ef media: Ethernet autoselect (1000baseT full-duplex) status: active inet 192.168.1.190 netmask 0xffffff00 broadcast 192.168.1.255 dsec1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 capabilities rx=7<IP4CSUM,TCP4CSUM,UDP4CSUM> capabilities tx=0 enabled=0 address: 00:04:9f:98:c2:f5 media: Ethernet none inet 192.168.2.190 netmask 0xffffff00 broadcast 192.168.2.255
Для проверки функционирования сетевого обмена выполнить следующую команду, инициирующую отправку ICMP пакетов существующему сетевому узлу:
# ping -c 3 192.168.1.100 PING 192.168.1.100 (192.168.1.100): 56 data bytes 64 bytes from 192.168.1.100: icmp_seq=0 ttl=64 time=0 ms 64 bytes from 192.168.1.100: icmp_seq=1 ttl=64 time=0 ms 64 bytes from 192.168.1.100: icmp_seq=2 ttl=64 time=0 ms ----192.168.1.100 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 пакета были успешно получены (процент потерь равен нулю).
Просмотр доступных сетевых режимов осуществляется утилитой ifconfig с опцией -m:
# ifconfig -m lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 33192 inet 127.0.0.1 netmask 0xff000000 dsec0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 capabilities rx=7<IP4CSUM,TCP4CSUM,UDP4CSUM> capabilities tx=0 enabled=0 address: 00:04:9f:98:c2:ef media: Ethernet autoselect (1000baseT full-duplex) status: active supported Ethernet media: media none media autoselect media 10baseT media 10baseT mediaopt full-duplex media 100baseTX media 100baseTX mediaopt full-duplex media 1000baseT media 1000baseT mediaopt full-duplex inet 192.168.1.190 netmask 0xffffff00 broadcast 192.168.1.255 dsec1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 capabilities rx=7<IP4CSUM,TCP4CSUM,UDP4CSUM> capabilities tx=0 enabled=0 address: 00:04:9f:98:c2:f5 media: Ethernet none supported Ethernet media: media none media autoselect media 10baseT media 10baseT mediaopt full-duplex media 100baseTX media 100baseTX mediaopt full-duplex media 1000baseT media 1000baseT mediaopt full-duplex inet 192.168.2.190 netmask 0xffffff00 broadcast 192.168.2.255
Для проверки автоматического определения сетевого режима выполнить следующие команды:
# ifconfig dsec0 media autoselect down up
Проверка считается пройденной успешно, если в выводе ifconfig -m присутствует строка
media: Ethernet autoselect
с указанием автоматически выбранного режима.
Для проверки установки требуемого сетевого режима необходимо установить его на ПМ и на инструментальной машине, с которой устанавливается сетевое соединение. Выполнить следующую команду на ПМ, где <режим> - требуемый сетевой режим из списка доступных сетевых режимов:
# ifconfig dsec0 media <режим> down up
На инструментальной машине необходимо выполнить следующую команду, где <интерфейс> - сетевой интерфейс, <скорость> - требуемая скорость соединения, <тип> - half / full:
# ethtool -s <интерфейс> speed <скорость> duplex <тип> autoneg off
Проверка считается выполненной успешно, если после переключения режима корректно изменяется параметр media при вызове команды ifconfig для выбранного интерфейса, а команда ping отправляет и получает пакеты:
# ifconfig dsec0 media 100baseTX mediaopt full-duplex down up # ifconfig dsec0 dsec0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 capabilities rx=7<IP4CSUM,TCP4CSUM,UDP4CSUM> capabilities tx=0 enabled=0 address: 00:04:9f:98:c2:ef media: Ethernet 100baseTX full-duplex status: active inet 192.168.1.190 netmask 0xffffff00 broadcast 192.168.1.25
$ ethtool -s enp2s0 speed 100 duplex full autoneg off $ ping 192.168.1.190 PING 192.168.1.190 (192.168.1.190) 56(84) bytes of data. 64 bytes from 192.168.1.190: icmp_seq=1 ttl=255 time=0.188 ms 64 bytes from 192.168.1.190: icmp_seq=2 ttl=255 time=0.169 ms 64 bytes from 192.168.1.190: icmp_seq=3 ttl=255 time=0.184 ms 64 bytes from 192.168.1.190: icmp_seq=4 ttl=255 time=0.179 ms 64 bytes from 192.168.1.190: icmp_seq=5 ttl=255 time=0.174 ms 64 bytes from 192.168.1.190: icmp_seq=6 ttl=255 time=0.176 ms ^C --- 192.168.1.190 ping statistics --- 6 packets transmitted, 6 received, 0% packet loss, time 5111ms rtt min/avg/max/mdev = 0.169/0.178/0.188/0.012 ms
Для работы с контроллером USB используется драйвер devu-ehci-fsl.so. В составе загрузочного образа драйвер запускается автоматически. В составе загрузочного образа драйвер запускается автоматически. В случае успешного запуска драйвера в директории /dev/
будут создана директория io-usb
. Для получения списка подключенных usb устройств может быть использована утилита usb:
# usb
Для проверки работоспособности драйвера подключить к ПМ USB flash накопитель с разделом FAT, содержащий хотя бы один непустой файл. Список созданных устройств в /dev
для подключенной USB flash можно посмотреть командой:
# pidin -P devb-umass fd pid name 8209 devb-umass 0 10 rw 0 /dev/ser1 1 10 rw 0 /dev/ser1 2 10 rw 0 /dev/ser1 3 3 -w 0 /dev/slog 4 1 5 1 6 8207 7 1 8 1 0s 1 2s 8209 5s 8209 8s 8209 10s 1 MP 0 / 11s 1 MP 0 /dev/hd1 12s 1 MP 0 /dev/hd1t12
Далее выполнить следующие команды:
# mount /dev/<устройство> /usbfs # cp /usbfs/<файл для проверки> /tmp/ # cksum /usbfs/<файл для проверки> # cksum /tmp/<файл для проверки>
Проверка считается выполненной успешно, если контрольные суммы, выведенные двумя последними командами, совпадают. Для проверки работы USB клавиатуры и мыши используется утилита hidview. Подключить клавиатуру (мышь) к ПМ и выполнить следующие команды:
# slay -f io-hid devi-hid # io-hid -d usb # hidview -a
Проверка считается выполненной успешно, если при совершении действий с клавиатурой (мышью) на консоль выводятся коды событий, например:
00 : 01 00 00 00 00 00 00 : 00 00 00 00 00 00 00 : 02 00 00 00 00 00 00 : 00 00 00 00 00 00 00 : 00 01 00 00 00 00 00 : 00 02 f0 ff 00 00 00 : 00 03 f0 ff 00 00 00 : 00 04 e0 ff 00 00
Для измерения скорости записи необходимо на подключенном к ПМ USB-flash создать файл размером 0.5 ГБайт и заполнить его случайными значениями с помощью утилиты dd, при этом измеряя время данной операции через time:
# dd if=/dev/urandom of=/dev/shmem/test_file bs=1000 count=512 # time dd if=/dev/shmem/test_file of=test_file bs=1000 count=512
Выводом данной команды будет является время и скорость записи на bulk транзакции:
512+0 records in 512+0 records out 512000 bytes transferred in 0.121 secs (4231404 bytes/sec) 0m00.13s real 0m00.00s user 0m00.00s system
Для измерения скорости чтения необходимо скопировать созданный тестовый файл в /dev/null
с помощью утилиты dd:
# time dd if=test_file of=/dev/null bs=1000 count=512
Выводом данной команды будет является время чтения на bulk транзакции:
512+0 records in 512+0 records out 512000 bytes transferred in 0.009 secs (56888888 bytes/sec) 0m00.01s real 0m00.00s user 0m00.00s system
Для работы с контроллером SD/MMC используется драйвер devb-mmcsd. В составе загрузочного образа драйвер запускается автоматически. В случае успешного запуска драйвера в директории /dev/
будет создано устройство hd0
, соответствующее SD-карте, а также устройства, соответствующие разделам. Для управления устройствами могут быть использованы стандартные утилиты для управления и чтения/записи блочных устройств. Проверка считается выполненной успешно, если при выполнении команды ls /dev/hd0* отображаются устройства, соответствующие SD-карте и разделам, например:
# ls /dev/hd0* /dev/hd0 /dev/hd0t12 /dev/hd0t177
В выводе утилиты mount увидеть точку монтирования одного из разделов SD-карты, например:
# mount /dev/hd0t177 on / 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.025 secs (10240000 bytes/sec) 0m00.05s 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.004 secs (64000000 bytes/sec) 0m00.01s real 0m00.00s user 0m00.00s system
Для работы с контроллером I2C используется драйвер i2c-fsl. В составе загрузочного образа драйвер запускается автоматически. В случае успешного запуска драйвера в директории /dev/
будут созданы устройства i2c0
и i2c1
.
# ls /dev/i2c* /dev/i2c0 /dev/i2c1
Проверка функционирования заключается в запуске утилиты 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: -- -- -- -- -- -- 36 -- -- -- -- -- -- -- -- -- 40: -- -- -- -- -- -- -- -- 48 -- -- -- -- -- -- -- 50: -- 51 -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 70: -- -- -- -- 74 75 -- -- -- -- -- -- -- -- -- –-
Для работы с контроллером SPI используется драйвер spi-ppc_espi.so. В составе загрузочного образа драйвер запускается автоматически. В случае успешного запуска драйвера в директории /dev/
будет создано устройство spi0
.
Проверка функционирования драйвера контроллера SPI считается выполненной успешно, если устройство успешно создано.
Для работы с SATA используется драйвер devb-fslSata. В составе загрузочного образа драйвер запускается автоматически. Для проверки работоспособности драйвера подключить к ПМ накопитель с интерфейсом SATA с отформатированным разделом FAT, содержащий хотя бы один не пустой файл. Список созданных устройств в /dev
для подключенного накопителя можно посмотреть командой:
# pidin -P devb-fslSata fd pid name 10409 devb-ahci 0 10 rw 0 /dev/ser1 1 10 rw 0 /dev/ser1 2 10 rw 0 /dev/ser1 3 3 -w 0 /dev/slog 4 1 5 1 6 8207 7 1 8 1 0s 1 2s 8209 5s 8209 8s 8209 10s 1 MP 0 / 11s 1 MP 0 /dev/hd2 12s 1 MP 0 /dev/hd2t11
Далее выполнить следующие команды:
# mount -t dos /dev/<имя устройства> /satafs # cp /satafs/test_file /tmp/ # cksum /satafs/test_file # cksum /tmp/test_file
Проверка считается выполненной успешно, если контрольные суммы, выведенные двумя последними командами, совпадают. Для оценки скорости записи и соответствующей загрузки CPU при работе с SATA необходимо открыть два псевдотерминала, в первом — воспользоваться утилитой dd для записи на устройство SATA:
# dd if=/dev/random of=/tmp/test_file bs=1000000 count=1000000 # dd if=/tmp/test_file of=/satafs/test_file bs=1000000 count=1000000 1024+0 records in 1024+0 records out 1024000000 bytes transferred in 86.734 secs (11806212 bytes/sec)
В другом терминале для отслеживания загрузки CPU требуется использовать утилиту top и визуально посмотреть на загрузку CPU.
В первом псевдотерминале провести чтение с SATA, отслеживая загрузку CPU
# dd if=/satafs/test_file of=/dev/null bs=1000000 count=1000000 1024+0 records in 1024+0 records out 1024000000 bytes transferred in 6.411 secs (159725471 bytes/sec)
Остановить работу утилиты top.
Для работы с контроллером NAND используется драйвер etfs-fsl-lp. В составе загрузочного образа драйвер запускается автоматически. В случае успешного запуска драйвера в директории /dev/ будут созданы устройства etfs1 и etfs2.
Для проверки работоспособности драйвера перезапустите его с ключом стирания данных и указанием точки монтирования: # slay etfs-fsl-lp # etfs-fsl-lp -e -m /etfs/ Далее выполните следующие команды: # cp /tmp/test_file/etfs/ # cksum /etfs/test_file # cksum /tmp/test_file Проверка считается выполненной успешно, если контрольные суммы, выведенные двумя последними командами, совпадают.
Для работы с SPI Flash используется драйвер devf-spi-s25. В составе загрузочного образа драйвер запускается автоматически. В каталоге /dev
должно появиться устройство fs0
. Для формирования файловой системы встроенного флэш накопителя используется утилита flashctl. Выполнить стирание данных флэш памяти:
# flashctl -p /dev/fs0 -e
Выполнить перезапуск драйвера для обновления таблицы разделов:
# slay -f devf-spi-s25 # devf-spi-s25 -s0,0
Выполнить форматирование памяти для создания и монтирования файловой системы:
# flashctl -p /dev/fs0p0 -f -n /flash -m
Результатом проведения данных команд должно являться появление каталога /flash
в корневом каталоге файловой системы. Далее выполнить следующие команды:
# touch /tmp/test_file # cp /tmp/test_file /flash/ # cksum /flash/test_file # cksum /tmp/test_file
Проверка считается выполненной успешно, если контрольные суммы, выведенные двумя последними командами, совпадают. Для измерения производительности операции записи и чтения необходимо создать файл и заполнить его случайными значениями с помощью утилиты dd, при этом измеряя время данной операции через time:
# dd if=/dev/urandom of=/dev/shmem/test_file bs=1000 count=256 # time dd if=/dev/shmem/test_file of=/flash/test_file bs=1000 count=256
Выводом данной команды будет является время записи:
256+0 records in 256+0 records out 256000 bytes transferred in 3.901 secs (65624 bytes/sec) 0m03.92s real 0m00.00s user 0m00.00s system
Для измерения скорости чтения необходимо скопировать созданный тестовый файл в /dev/null
с помощью утилиты dd:
# time dd if=/flash/test_file of=/dev/null bs=1000 count=256
Выводом данной команды будет является время и скорость чтения:
256+0 records in 256+0 records out 256000 bytes transferred in 0.085 secs (3011764 bytes/sec) 0m00.11s real 0m00.00s user 0m00.00s system
Для работы с контроллером PCIe используется менеджер ресурсов pci-fsl. В составе загрузочного образа PCI сервер запускается автоматически. Получения списка PCI устройств:
# pci -v
Проверка считается выполненной успешно, если выведена информация о подключённых PCI устройствах.
Предыдущий раздел: перейти