Проверка функционирования ППМ для семейства микропроцессоров Sitara серии AM335x под ЗОСРВ «Нейтрино».
Список проверок:
Тестовый стенд представляет из себя ПМ на базе микропроцессора Sitara серии AM335x, соединённый с инструментальным ПК по интерфейсам RS-232 и Ethernet.
На инструментальный ПК должно быть установлено:
Перед проведением проверок необходимо запустить ЗОСРВ «Нейтрино» на ПМ на базе микропроцессора Sitara серии AM335x в соответствии с главой документации Загрузка образа ОС.
Дополнительные тестовые программы i2c-scan, ticksize и другие не входят в состав ППМ и должны быть самостоятельно загружены из публичного git-репозитория и собраны командой:
$ cd utils $ make install
Затем следует скопировать armle-v7 версии тестовых программ на SD карту памяти и подключить её к ПМ или передать файлы по сети с помощью FTP или NFS.
# uname -s
Проверка считается выполненной успешно, если в терминале будет выведено сообщение вида:
KPDA
Для вывода информации о запущенных компонентов выполнить команду pidin ar:
# pidin ar pid Arguments 1 procnto -v -ae 2 slogger -s 16384k 3 pipe 4 devc-seromap -e -F -b115200 -c48000000/16 0x44E09000^2,72 5 sh 6 devb-sdmmc sdio hc=omap,addr=0x48060000,irq=64,dma=25,dma=24,dma=128,dma=32,bs=nocd:nowp \ cam cache,pnp,async blk cache=8M disk name=sd 7 devb-sdmmc sdio hc=omap,addr=0x481D8000,irq=28,dma=3,dma=2,dma=160,dma=32,bs=emmc,bw=4 \ cam quiet,cache blk rw,cache=2M disk name=emmc 16392 i2c-omap35xx-j5 -i 70 -p0x44E0B000 16393 i2c-omap35xx-j5 -i 71 -p0x4802A000 16394 i2c-omap35xx-j5 -i 30 -p0x4819C000 16395 wdtkick 24588 io-usb -vvv -d dm816x-mg ioport=0x47401c00,irq=19 24589 io-hid -d usb /dev/io-usb/io-usb 24590 devb-umass cam pnp 24591 spi-master -d am335x base=0x481A0100,irq=125,edma=1,edmairq=555,edmachannel=43 24592 io-pkt-v4-hc -ptcpip stacksize=65536 -dam335x deviceindex=0,verbose=1 32785 devc-pty 32786 dev-leds-beaglebone 32788 inetd 73747 io-display -d vid=0x0,did=0x0 114710 Photon -g -lphlogin2 '-Sphshutdown -l' 135191 /usr/photon/bin/io-graphics 139288 phlogin2 -Sphshutdown -l 151578 /usr/photon/bin/devi-hid -b touch mouse kbd 184341 random 253977 pidin ar
Для вывода информации о процессоре и доступной оперативной памяти выполнить команду pidin info:
# pidin info CPU:ARM Release:2024 FreeMem:462Mb/512Mb BootTime:Feb 01 00:20:32 UTC 2000 Processes: 23, Threads: 68 Processor1: 1094697090 Cortex A8 500MHz FPU
Для вывода информации о используемых прерываниях выполнить команду pidin ir:
# pidin ir # pidin ir pid tid name 1 1 procnto 0 0x44 0 -P- @0xfe089d30:0x0 1 2 procnto 1 3 procnto 1 5 procnto 1 6 procnto 1 7 procnto 1 8 procnto 1 9 procnto 1 10 procnto 1 11 procnto 1 12 procnto 1 13 procnto 2 1 slogger 3 1 pipe 3 2 pipe 3 3 pipe 3 4 pipe 4 1 devc-seromap 1 0x48 0 --- @0x804a4dc:0x8072ab8 5 1 sh 6 1 devb-sdmmc 2 0x40 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 6 9 devb-sdmmc 6 10 devb-sdmmc 7 1 devb-sdmmc 3 0x1c 0 TP- =PULSE 0x40000005:21 0x3:0 7 2 devb-sdmmc 7 3 devb-sdmmc 7 4 devb-sdmmc 7 5 devb-sdmmc 7 6 devb-sdmmc 7 7 devb-sdmmc 7 8 devb-sdmmc 16392 1 i2c-omap35xx-j5 4 0x46 0 T-- @0x8049eb4:0x8050040 16393 1 i2c-omap35xx-j5 5 0x47 0 T-- @0x8049eb4:0x8050040 16394 1 i2c-omap35xx-j5 6 0x1e 0 T-- @0x8049eb4:0x8050040 16395 1 wdtkick 24588 1 io-usb 7 0x11 0 T-- @0x780088a8:0x8087070 24588 2 io-usb 24588 3 io-usb 8 0x13 0 T-- @0x780047e4:0x8087070 24588 4 io-usb 24588 5 io-usb 24588 6 io-usb 24589 1 io-hid 24589 2 io-hid 24589 3 io-hid 24589 4 io-hid 24589 5 io-hid 24590 1 devb-umass 24590 2 devb-umass 24591 1 spi-master 24591 2 spi-master 9 0x7d 0 T-- @0x780016b0:0x8064f18 10 0x22b 0 TP- =PULSE 0x40000004:21 0x2:0x1018214 24592 1 io-pkt-v4-hc 24592 2 io-pkt-v4-hc 11 0x29 0 T-- @0x78003c44:0x8190280 32785 1 devc-pty 32786 1 ev-leds-beaglebone 32786 2 ev-leds-beaglebone 32786 3 ev-leds-beaglebone 32788 1 inetd 73747 1 io-display 73747 2 io-display 73747 3 io-display 12 0x24 0 TPE @0x780033b8:0x28000100 73747 4 io-display 73747 5 io-display 114710 1 Photon 135191 1 io-graphics 135191 2 io-graphics 135191 3 io-graphics 139288 1 phlogin2 151578 1 devi-hid 151578 2 devi-hid 151578 3 devi-hid 151578 4 devi-hid 151578 5 devi-hid 184341 1 random 184341 2 random 262169 1 pidin
Проверка считается пройденной успешно, если вывод утилиты pidin ir содержит информацию об обработчиках прерывания, принадлежащих выполняемым процессам, в формате
pid tid Имя процесса id прерывания vector mask_count flags handler:area
Для работы с последовательным портом используется драйвер devc-seromap. Настройки последовательного порта по умолчанию: скорость 115200, 8 бит, без контроля четности, 1 стоп-бит. В составе загрузочного образа драйвер запускается автоматически.
В случае успешного запуска драйвера в директории /dev/
будет создано устройство ser1
.
# ls /dev/ser* /dev/ser1
Для проверки функционирования драйвера UART подключите ПМ к последовательному порту ПК (или через преобразователь по USB) и запустите терминальную программу. В последовательном или удалённом терминале выполните следующую команду:
# echo Test message > /dev/ser1
Проверка считается выполненной успешно, если в терминальной программе будет выведено сообщение:
Test message
Для работы с контроллером интерфейса Ethernet используется драйвер devnp-am335x.so и менеджер ресурсов io-pkt-v4-hc. В составе загрузочного образа драйвер запускается автоматически. Для вывода информации о сетевых интерфейсах выполните команду ifconfig.
В случае успешного запуска драйвера будет создан сетевой интерфейс dm0 и в результате выполнения команды ifconfig на экран будут выведены следующие данные:
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 33192 inet 127.0.0.1 netmask 0xff000000 dm0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 address: 50:65:83:ca:a7:f5 media: Ethernet none (100baseTX full-duplex) status: active inet 172.16.6.127 netmask 0xffff0000 broadcast 172.16.255.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 пакета были успешно получены (процент потерь равен нулю).
Просмотр доступных сетевых режимов осуществляется утилитой ifconfig с опцией -m:
# ifconfig -m lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 33192 inet 127.0.0.1 netmask 0xff000000 dm0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 address: 50:65:83:ca:a7:f5 media: Ethernet none (100baseTX 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 172.16.6.127 netmask 0xffff0000 broadcast 172.16.255.255
Для проверки автоматического определения сетевого режима выполнить следующие команды:
# ifconfig dm0 media autoselect down up
Проверка считается пройденной успешно, если в выводе ifconfig -m присутствует строка
media: Ethernet autoselect (none full-duplex)
с указанием автоматически выбранного режима.
Для проверки установки требуемого сетевого режима необходимо установить его на ПМ и на инструментальной машине, с которой устанавливается сетевое соединение. Выполнить следующую команду на ПМ, где <режим> - требуемый сетевой режим из списка доступных сетевых режимов:
# ifconfig dm0 media <режим> down up
На инструментальной машине необходимо выполнить следующую команду, где <интерфейс> - сетевой интерфейс, <скорость> - требуемая скорость соединения, <тип> - half / full:
# ethtool -s <интерфейс> speed <скорость> duplex <тип> autoneg off
Проверка считается выполненной успешно, если после переключения режима корректно изменяется параметр media при вызове команды ifconfig для выбранного интерфейса, а команда ping отправляет и получает пакеты:
# ifconfig dm0 media 100baseTX mediaopt full-duplex down up # ifconfig dm0 dm0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 address: 50:65:83:ca:a7:f5 media: Ethernet 100baseTX full-duplex (10baseT) status: active inet 172.16.6.127 netmask 0xffff0000 broadcast 172.16.255.255
$ ethtool -s enp3s0 speed 100 duplex full autoneg off $ ping 172.16.6.127 PING 172.16.6.127 (172.16.6.127) 56(84) bytes of data. 64 bytes from 172.16.6.127: icmp_seq=1 ttl=255 time=0.368 ms 64 bytes from 172.16.6.127: icmp_seq=2 ttl=255 time=0.357 ms 64 bytes from 172.16.6.127: icmp_seq=3 ttl=255 time=0.349 ms 64 bytes from 172.16.6.127: icmp_seq=4 ttl=255 time=0.340 ms 64 bytes from 172.16.6.127: icmp_seq=5 ttl=255 time=0.347 ms 64 bytes from 172.16.6.127: icmp_seq=6 ttl=255 time=0.500 ms 64 bytes from 172.16.6.127: icmp_seq=7 ttl=255 time=0.497 ms 64 bytes from 172.16.6.127: icmp_seq=8 ttl=255 time=0.545 ms ^C --- 172.16.6.127 ping statistics --- 8 packets transmitted, 8 received, 0% packet loss, time 7169ms rtt min/avg/max/mdev = 0.340/0.412/0.545/0.079 ms
Для работы с контроллером 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-mg-dm816x.so и менеджер ресурсов io-usb. В составе загрузочного образа драйвер запускается автоматически.
В случае успешного запуска драйвера в директории /dev/
будет создано устройство io-usb
.
# ls /dev/io-usb/ . devu-mg-dm816x.so .. io-usb
Для получения списка подключенных usb устройств может быть использована утилита usb:
# usb
Проверка считается выполненной успешно, если в терминальной программе будет выведено сообщение:
# usb USB 0 (dm816x) v1.10, v1.01 DDK, v1.01 HCD
После подключения USB flash накопителя к ПМ должно появиться новое устройство:
# usb USB 0 (dm816x) v1.10, v1.01 DDK, v1.01 HCD Device Address : 1 Vendor : 0x0781 (SanDisk) Product : 0x5581 (Ultra) Class : 0x00 (Independent per interface)
Для работы с контроллером I2C используется драйвер i2c-omap35xx. В составе загрузочного образа драйвер запускается автоматически. В случае успешного запуска драйвера в директории /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
Для работы с контроллером SPI используется драйвер spi-am335x.so. В составе загрузочного образа драйвер запускается автоматически. В случае успешного запуска драйвера в директории /dev/
будет создано устройство spi0
.
Проверка функционирования драйвера контроллера SPI считается выполненной успешно, если устройство успешно создано.
Для работы с блоком watchdog используется утилита wdtkick-am335x. В составе загрузочного образа утилита запускается автоматически. Для проверки работоспособности блока watchdog вызвать завершение работы системы с помощью утилиты shutdown:
# shutdown -fb
Проверка считается выполненной успешно, если через ~10 секунд произойдет сброс ПМ.
Предыдущий раздел: перейти