Проверка функционирования ППМ для семейства микропроцессоров KOMDIV-64 серии 1890vm8 под ЗОСРВ «Нейтрино».
Список проверок:
Тестовый стенд представляет из себя ЭВМ «Багет-47-51», соединённый с инструментальным ПК по интерфейсам RS-232, USB 2.0 A - USB B, Ethernet.
На инструментальный ПК должно быть установлено:
Перед проведением проверок необходимо запустить ЗОСРВ «Нейтрино» на ПМ на базе микропроцессора KOMDIV-64 серии 1890vm8 в соответствии с главой документации Загрузка образа ОС.
Дополнительные тестовые программы i2c-scan, ticksize и другие не входят в состав ППМ и должны быть самостоятельно загружены из публичного git-репозитория и собраны командой:
$ cd utils $ make install
Затем следует передать файлы тестовых программ версии mipsbe по сети с помощью FTP.
# date
Проверка считается выполненной успешно, если в терминале будет выведено сообщение вида:
Sat Jan 08 01:39:12 UTC 2000
# uname -s
Проверка считается выполненной успешно, если в терминале будет выведено сообщение вида:
KPDA
# pidin info CPU:MIPS Release:2024 FreeMem:2016Mb/2048Mb BootTime:Jan 08 00:36:52 UTC 2000 Processes: 18, Threads: 53 Processor1: 85132611 1890VM8 400MHz FPU
Для проверки функционирования контроллера оперативной памяти используется утилита memcheck. Ее требуется запустить и дождаться завершения проверки:
# /tmp/memcheck
Проверка считается выполненной успешно, если выведено сообщение:
PASS: all memory allocated
Для проверки функционирования системного таймера необходимо воспользоваться программой ticksize:
# /tmp/ticksize
Проверка считается выполненной успешно, если вывод данной программы содержит аналогичные строки:
System timer ticksize: 1000 mks Measuring system timer interrupt latency for 10 sec... ------------------------------------ System Timer Latency = 1.25 mks ------------------------------------
Для вывода информации о запущенных процессах выполнить команду pidin:
# pidin
Проверка считается выполненной успешно, если в терминале будет выведено сообщение вида:
pid tid name prio STATE Blocked 1 1 procnto 0f READY 1 2 procnto 255r RECEIVE 1 1 3 procnto 255r RECEIVE 1 1 4 procnto 10r RECEIVE 1 1 5 procnto 255r RECEIVE 1 1 6 procnto 21r RECEIVE 1 1 7 procnto 10r RECEIVE 1 1 8 procnto 10r RECEIVE 1 1 10 procnto 10r RECEIVE 1 1 12 procnto 10r RECEIVE 1 1 14 procnto 10r RUNNING 1 15 procnto 10r RECEIVE 1 2 1 wdtkick 21r NANOSLEEP 3 1 i2c-komdiv 10r RECEIVE 1 4 1 gpio-komdiv 18r RECEIVE 1 4 2 gpio-komdiv 10r SIGWAITINFO 5 1 io-usb 10r SIGWAITINFO 5 2 io-usb 10r RECEIVE 4 5 3 io-usb 21r RECEIVE 7 5 4 io-usb 21r RECEIVE 10 5 5 io-usb 21r RECEIVE 1 5 6 io-usb 10r RECEIVE 13 5 7 io-usb 10r RECEIVE 13 5 8 io-usb 21r RECEIVE 13 6 1 devb-umass 10r SIGWAITINFO 6 2 devb-umass 21r REPLY 5 7 1 slogger 21r RECEIVE 1 8 1 devc-ser8250 24r RECEIVE 1 9 1 devc-pty 10r RECEIVE 1 10 1 random 10r SIGWAITINFO 10 2 random 10r NANOSLEEP 10 3 random 10r RECEIVE 1 11 1 pipe 10r SIGWAITINFO 11 2 pipe 10r RECEIVE 1 11 3 pipe 10r RECEIVE 1 4108 1 devb-eide-vm8 10r SIGWAITINFO 4108 2 devb-eide-vm8 21r RECEIVE 1 4108 3 devb-eide-vm8 10r RECEIVE 7 4108 4 devb-eide-vm8 10r RECEIVE 4 4108 5 devb-eide-vm8 10r RECEIVE 4 8206 1 io-pkt-v4-hc 21r SIGWAITINFO 8206 2 io-pkt-v4-hc 21r RECEIVE 1 8206 3 io-pkt-v4-hc 10r RECEIVE 29 8206 4 io-pkt-v4-hc 10r CONDVAR (0x78277800) 8206 5 io-pkt-v4-hc 20r RECEIVE 34 8206 6 io-pkt-v4-hc 9r RECEIVE 26 77839 1 qconn 250r SIGWAITINFO 77839 2 qconn 250r RECEIVE 1 81933 1 sh 10r SIGSUSPEND 90129 1 inetd 10r SIGWAITINFO 94224 1 pidin 10r REPLY 1
Для вывода информации об используемых прерываниях выполнить команду pidin ir:
# pidin ir pid tid name 1 1 procnto 0 0x16 0 -P- @0x800b067c:0x0 1 2 procnto 1 3 procnto 1 4 procnto 1 5 procnto 1 6 procnto 1 7 procnto 1 8 procnto 1 10 procnto 1 12 procnto 1 14 procnto 1 15 procnto 2 1 wdtkick 3 1 i2c-komdiv 4 1 gpio-komdiv 4 2 gpio-komdiv 5 1 io-usb 1 0x1e 0 TP- =PULSE 0x40000008:21 0:0 2 0x1e 0 TP- =PULSE 0x4000000b:21 0:0 5 2 io-usb 5 3 io-usb 5 4 io-usb 5 5 io-usb 5 6 io-usb 5 7 io-usb 5 8 io-usb 6 1 devb-umass 6 2 devb-umass 7 1 slogger 8 1 devc-ser8250 3 0x10 0 --- @0x8022894:0x80381a8 9 1 devc-pty 10 1 random 10 2 random 10 3 random 11 1 pipe 11 2 pipe 11 3 pipe 4108 1 devb-eide-vm8 4108 2 devb-eide-vm8 4 0xb 0 TP- =PULSE 0x40000002:21 0x2:0 4108 3 devb-eide-vm8 4108 4 devb-eide-vm8 4108 5 devb-eide-vm8 8206 1 io-pkt-v4-hc 8206 2 io-pkt-v4-hc 5 0x21 0 T-- @0x7820791c:0x8190300 8206 3 io-pkt-v4-hc 8206 4 io-pkt-v4-hc 8206 5 io-pkt-v4-hc 8206 6 io-pkt-v4-hc 77839 1 qconn 77839 2 qconn 81933 1 sh 90129 1 inetd 102416 1 pidin
Проверка считается пройденной успешно, если вывод утилиты pidin ir содержит информацию об обработчиках прерывания, принадлежащих выполняемым процессам.
Для вывода информации системной таблицы использовать команду pidin syspage:
# pidin syspage
Проверка считается выполненной успешно, если в терминале будет выведено сообщение вида:
Header size=0x0000009c, Total Size=0x00000650, #Cpu=1, Type=2 Section:system_private offset:0x000001a8 size:0x00000068 syspage ptr user:0801e000 kernel:8000a000 cpupage ptr user:0801eb50 kernel:8000ab50 spacing:84 kdebug info:8ffee6d8 callback:00000000 boot pgms: idx=0 private_flags=16777216 0) base paddr:00064000 start addr:800c28b8 ramsize:00000000 pagesize:00001000 Section:qtime offset:0x00000128 size:0x00000060 boot:387686a4 CPS:17d7840000000000 rate/scale:25/-8 intr:22 Section:callout offset:0x000000a0 size:0x00000048 reboot:8000a8f0 power:00000000 timer_load:8000a944 reload:8000a9ac value:8000a9f4 0) display:8000aa3c poll:8000aa7c break:8000aaa8 1) display:00000000 poll:00000000 break:00000000 Section:cpuinfo offset:0x00000188 size:0x00000020 0) cpu:05130543 flags:c0000b66 speed:00000190 cache i/d:2/1 name:79 Section:cacheattr offset:0x000005f0 size:0x00000060 0) flags:23 size:0020 #lines:4000 control:8000a650 next:255 1) flags:822 size:0020 #lines:0200 control:8000a680 next:0 2) flags:801 size:0020 #lines:0400 control:8000a6c8 next:0 Section:meminfo offset:0x00000650 size:0x00000000 Section:asinfo offset:0x000003b0 size:0x000001c0 0000) 0000000000000000-0000000fffffffff o:ffff a:0010 p:100 n:/memory 0020) 0000000000000000-00000000ffffffff o:0000 a:0010 p:100 n:/memory/below4G 0040) 0000000000000000-000000000fffffff o:0020 a:0017 p:100 n:/memory/below4G/ram 0060) 0000000000000000-000000000fffffff o:0000 a:0007 p:100 n:/memory/dmasafe 0080) 0000000000062108-000000000097fbeb o:0000 a:0005 p:100 n:/memory/imagefs 00a0) 0000000000014000-0000000000062107 o:0000 a:0007 p:100 n:/memory/startup 00c0) 0000000000062108-000000000097fbeb o:0000 a:0007 p:100 n:/memory/bootram 00e0) 0000000000000000-00000000ffffffff o:ffff a:0010 p:100 n:/virtual 0100) 0000000080065000-0000000080104f40 o:00e0 a:0000 p:100 n:/virtual/vboot 0120) 0000000050000000-00000000bfffffff o:0020 a:0017 p:100 n:/memory/below4G/ram 0140) 0000000000001000-0000000000009fff o:0040 a:0007 p:100 n:/memory/below4G/ram/sysram 0160) 000000000097fbec-000000000fffffff o:0040 a:0007 p:100 n:/memory/below4G/ram/sysram 0180) 0000000050000000-00000000bfffffff o:0120 a:0007 p:100 n:/memory/below4G/ram/sysram 01a0) 000000000000aba4-0000000000062107 o:0040 a:0007 p:100 n:/memory/below4G/ram/sysram Section:hwinfo offset:0x000002d8 size:0x000000d8 0) size:3 tag:3(Group) isize:3, iname:0(hw), owner:65535, kids:3 12) size:3 tag:17(Bus) isize:3, iname:9(unknown), owner:0, kids:1 24) size:3 tag:3(Group) isize:3, iname:48(rtc), owner:12, kids:1 36) size:4 tag:59(Device) isize:11, iname:52(ds1337), owner:24, kids:0 00 00 00 00 52) size:1 tag:66(pad) 56) size:6 tag:70(location) 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80) size:4 tag:59(Device) isize:12, iname:87(uart), owner:0, kids:0 00 00 00 01 96) size:6 tag:70(location) 00 00 00 00 00 00 00 00 1f f7 00 00 00 00 00 00 00 00 00 00 120) size:2 tag:92(irq) 00 00 00 10 128) size:4 tag:59(Device) isize:16, iname:96(enet), owner:0, kids:0 00 00 00 02 144) size:6 tag:70(location) 00 10 00 00 00 00 00 00 1b 80 00 00 00 00 00 00 00 00 00 00 168) size:2 tag:92(irq) 00 00 00 21 176) size:4 tag:101(nicaddr) 00 00 00 06 00 01 02 03 04 05 00 00 Section:typed_strings offset:0x00000210 size:0x00000028 off:0 type:2 string:'mitxc1vm8' off:16 type:5 string:'mitxc1vm8' Section:strings offset:0x00000238 size:0x000000a0 [0]'hw' [3]'Group' [9]'unknown' [17]'Bus' [21]'memory' [28]'below4G' [36]'ram' [40]'dmasafe' [48]'rtc' [52]'ds1337' [59]'Device' [66]'pad' [70]'location' [79]'1890VM8' [87]'uart' [92]'irq' [96]'enet' [101]'nicaddr' [109]'imagefs' [117]'startup' [125]'bootram' [133]'virtual' [141]'vboot' [147]'sysram' Section:intrinfo offset:0x00000570 size:0x00000080 0) vector_base:00000000, #vectors:8, cascade_vector:7fffffff cpu_intr_base:00000000, cpu_intr_stride:0, flags:0000 id => flags:8000, size:0068, rtn:8000a710 eoi => flags:1000, size:0024, rtn:8000a778 mask:8000a79c, unmask:8000a7d4, config:00000000 1) vector_base:0000000a, #vectors:24, cascade_vector:00000002 cpu_intr_base:00000000, cpu_intr_stride:0, flags:0000 id => flags:0000, size:0050, rtn:8000a808 eoi => flags:1000, size:0034, rtn:8000a858 mask:8000a88c, unmask:8000a8bc, config:00000000 Section:smp offset:0x00000650 size:0x00000000 Section:pminfo offset:0x00000650 size:0x00000000 Section:mdriver offset:0x00000650 size:0x00000000 Section:boxinfo offset:0x00000650 size:0x00000000 Section:ptehack offset:0x00000650 size:0x00000000
Для проверки текущего состояния питания микропроцессора для ПМ в последовательной консоли ЦЭВМ выполнить команду:
# pwrctrl
Проверка считается выполненной успешно, если в терминале будет выведено сообщение вида:
Current Power State: Ethernet: ON L2Cache : ON RIO : ON USB : ON CP2K : ON Mem DQx : ON
Для работы с последовательным портом используется драйвер devc-ser8250. Настройки последовательного порта по умолчанию: скорость 115200, 8 бит, без контроля четности, 1 стоп-бит. В составе загрузочного образа драйвер запускается автоматически. В случае успешного запуска драйвера в директории /dev/
будет создано устройство ser1
. Выполнить проверку выдачи информации от драйвера последовательной консоли, для этого выполнить следующую команду:
# stty < /dev/ser1
Проверка считается выполненной успешно, если в терминале будет выведено сообщение вида:
Name: /dev/ser1 Type: serial Opens: 4 +edit +isflow +osflow intr=^C quit=^\ erase=^? kill=^U eof=^D start=^Q stop=^S susp=^Z lnext=^V min=01 time=00 pr1=^[ pr2=5B left=44 right=43 up=41 down=42 ins=40 del=50 home=48 end=59 par=none bits=8 stopb=1 baud=115200 rows=0,0
Далее выполнить проверку изменения скорости обмена:
# stty baud=9600 < /dev/ser1
После этого взаимодействие с командным интерпретатором целевой системы должно быть нарушено. Далее необходимо изменить параметры работы последовательного порта (по которому идет взаимодействие с ЦЭВМ) со стороны ИЭВМ. После изменения скорости обмена (baud rate) взаимодействие с командным интерпретатором целевой системы должно восстановиться.
Соединить разъём Gigabit Ethernet модуля MITX_C1VM8 с разъёмом Ethernet ИЭВМ. Для работы с контроллером интерфейса Gigabit Ethernet используются драйверы devnp-srisa.so, devnp-shim.so и менеджер ресурсов io-pkt-v4-hc. В составе загрузочного образа драйверы запускается автоматически. Сетевому интерфейсу Gigabit Ethernet назначается сетевой адрес 192.168.1.168, при необходимости его можно сменить. Для вывода информации о сетевых интерфейсах выполнить команду ifconfig. В случае успешного запуска драйвера будет создан сетевой интерфейс kg0 и в результате выполнения команды ifconfig на экран будут выведены данные, аналогичные следующим, с указанием текущего ip-адреса, маски и широковещательного адреса:
# ifconfig lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 33192 inet 127.0.0.1 netmask 0xff000000 kg0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 capabilities=6<TCP4CSUM,UDP4CSUM> enabled=0 address: 00:14:4e:66:9e:b2 media: Ethernet autoselect (1000baseT full-duplex) status: active inet 192.168.1.168 netmask 0xffffff00 broadcast 192.168.1.255
Для проверки функционирования сетевого обмена выполнить следующую команду, инициирующую отправку ICMP пакетов существующему сетевому узлу:
# ping -c 3 <ip получателя> PING <ip получателя> (<ip получателя>): 56 data bytes 64 bytes from <ip получателя>: icmp_seq=0 ttl=64 time=0 ms 64 bytes from <ip получателя>: icmp_seq=1 ttl=64 time=0 ms 64 bytes from <ip получателя>: icmp_seq=2 ttl=64 time=0 ms ----<ip получателя> 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 пакета были успешно получены (процент потерь равен нулю).
Для работы с контроллером интерфейса USB используются драйверы devu-ehci.so, devu-uhci.so и менеджер ресурсов io-usb. По умолчанию драйверы контроллера USB запускаются стартовым скриптом загрузочного образа.
В случае успешного запуска драйвера в директории /dev/
будет создано устройство io-usb
.
# ls /dev/io-usb/ devu-ehci.so devu-uhci.so io-usb
Для вывода информации о доступных интерфейсах выполнить следующую команду:
# usb
Должен отобразиться список контроллеров и устройств USB:
USB 0 (EHCI) v1.10, v1.01 DDK, v1.01 HCD Device Address : 1 Vendor : 0x0424 Product : 0x2514 Class : 0x09 (Hub) Subclass : 0x00 Protocol : 0x02 Hub Number Ports : 4 Hub Characteristics : 0x0009 (Individual power, Individual over-current) Hub Power On->Good : 100 ms Hub Power Requirements : 1 mA Device Address : 2 Vendor : 0x0403 (FTDI) Product : 0x6001 (FT232R USB UART) Class : 0x00 (Independent per interface) Device Address : 3 Vendor : 0x062a (MosArt, Inc.) Product : 0x712d (Mildex 64A1) Class : 0x00 (Independent per interface) Device Address : 4 Vendor : 0x0403 (FTDI) Product : 0x6001 (FT232R USB UART) Class : 0x00 (Independent per interface) Device Address : 5 Vendor : 0x0424 Product : 0x2514 Class : 0x09 (Hub) Subclass : 0x00 Protocol : 0x02 Hub Number Ports : 4 Hub Characteristics : 0x0009 (Individual power, Individual over-current) Hub Power On->Good : 100 ms Hub Power Requirements : 1 mA Device Address : 6 Vendor : 0x090c (5M Camera ) Product : 0xf37d (5M Camera ) Class : 0xef (Unknown) Subclass : 0x02 Protocol : 0x01 USB 1 (UHCI) v1.10, v1.01 DDK, v1.01 HCD
Для проверки работоспособности драйвера подключить к ПМ USB flash накопитель с разделом FAT, содержащий хотя бы один непустой файл. Список созданных устройств в /dev
для подключенной USB flash можно посмотреть командой:
# pidin -P devb-umass fd pid name 6 devb-umass 0 1 1 1 2 1 3 1 4 1 5 5 6 1 7 7 -w 0 /dev/slog 8 1 0s 1 2s 6 5s 6 8s 6 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/<файл для проверки>
Проверка считается выполненной успешно, если контрольные суммы, выведенные двумя последними командами, совпадают.
Для работы с SATA используется драйвер devb-eide-vm8. В составе загрузочного образа драйвер запускается автоматически. Список созданных устройств в /dev
для подключенного накопителя можно посмотреть командой:
# pidin -P devb-eide-vm8 fd pid name 4108 devb-eide-vm8 0 1 1 1 2 1 3 7 -w 0 /dev/slog 4 1 5 1 6 1 0s 1 2s 4108 5s 4108 8s 4108 10s 1 MP 0 / 11s 1 MP 0 /dev/hd0 12s 1 MP 0 /dev/hd0t11 13s 1 MP 0 /dev/hd0t177
Далее выполнить следующие команды:
# mount -t dos /dev/<имя устройства> /satafs # cp /satafs/test_file /tmp/ # cksum /satafs/test_file # cksum /tmp/test_file
Проверка считается выполненной успешно, если контрольные суммы, выведенные двумя последними командами, совпадают.
Для работы с контроллером GPIO используется менеджер ресурсов gpio-komdiv. В составе загрузочного образа драйвер запускается автоматически.
Проверить наличие устройств gpio0
и gpio1
в директории /dev/
:
# ls /dev/gpio* /dev/gpio0 /dev/gpio1
Для проверки драйвера контроллера интерфейса разовых входных-выходных команд через линии GPIO в последовательной консоли ЦЭВМ выполнить команду:
# gpio-ctrl -v
Проверка считается выполненной успешно, если в терминале будет выведено сообщение вида:
Current pin 0 status: Pin direction: OUT Pin function: GPIO Latch value: 0 Pin value: 0
Для работы с контроллером I2C используется драйвер i2c-komdiv. В составе загрузочного образа драйвер запускается автоматически, поэтому сперва необходимо остановить ранее запущенный драйвер для этого в последовательной консоли ЦЭВМ выполнить команду:
# slay i2c-komdiv
Далее нужно выполнить следующие команды:
# i2c-komdiv -m0 --u0 # i2c-komdiv -m1 --u1
В случае успешного запуска драйвера в директории /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: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 70: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- Scanning done
В составе загрузочного образа PCI сервер запускается автоматически. Для проверки работы драйвера контроллера шины PCI pci-mitxc1vm8 необходимо в последовательной консоли ЦЭВМ выполнить следующую команду:
# pci -v
Проверка считается выполненной успешно, если выведена информация о подключённых PCI устройствах.
Для работы с блоком watchdog используется утилита wdtkick-1890vm8. В составе загрузочного образа утилита запускается автоматически. Для проверки работоспособности блока watchdog вызвать завершение работы системы, введя следующую команду:
# slay -9 wdtkick
Проверка считается выполненной успешно, если через ~10 секунд произойдет сброс ПМ и появится приглашение для ввода загрузчика PMON.
Предыдущий раздел: перейти