269 строки
16 KiB
Plaintext
269 строки
16 KiB
Plaintext
|
@page "Verification" Проверка функционирования
|
||
|
|
||
|
@brief Проверка функционирования ППМ OrangePi-PC Allwinner-H3 под ЗОСРВ «Нейтрино».
|
||
|
|
||
|
|
||
|
@br
|
||
|
Список проверок:
|
||
|
@@item Базовые проверки функционирования ОС
|
||
|
@@@item Проверка запуска на ПМ ядра ЗОСРВ в составе загружаемого образа
|
||
|
@@@item Проверка запуска компонентов
|
||
|
@@@item Проверка функционирования контроллера DDR памяти
|
||
|
@@@item Проверка функционирования контроллера прерываний
|
||
|
@@@item Проверка функционирования таймера
|
||
|
@@@item Проверка работы ЗОСРВ на ЦП в режиме симметричной мультипроцессорности (SMP) с поддержкой всех CPU ядер типа Cortex-A7
|
||
|
@@item Проверки интерфейсов
|
||
|
@@@item Проверка драйвера контроллера UART
|
||
|
@@@item Проверка драйвера контроллера Gigabit Ethernet
|
||
|
|
||
|
|
||
|
|
||
|
@par Тестовый стенд
|
||
|
|
||
|
Тестовый стенд представляет из себя отладочный модуль OrangePi-PC, соединённый с инструментальным ПК по интерфейсам RS-232 и Ethernet.
|
||
|
|
||
|
@br
|
||
|
На инструментальный ПК должно быть установлено:
|
||
|
@ul
|
||
|
@item ОС семейства GNU Linux, например, Ubuntu 20.04
|
||
|
@item Комплект разработчика для ЗОСРВ «Нейтрино»
|
||
|
@item ППМ OrangePi-PC Allwinner-H3
|
||
|
@item Терминальная программа для отладочной консоли модуля OrangePi-PC, например, minicom
|
||
|
@endul
|
||
|
|
||
|
|
||
|
|
||
|
@par Подготовка
|
||
|
|
||
|
Перед проведением проверок необходимо запустить ЗОСРВ «Нейтрино» на отладочном модуле OrangePi-PC в соответствии с главой документации @link{./Boot.html}Загрузка образа ОС@endlink.
|
||
|
|
||
|
@br
|
||
|
Дополнительные тестовые программы @a rr, @a ticksize и другие не входят в состав ППМ и должны быть самостоятельно загружены из @link{https://git.kpda.ru/utils/hw}публичного git-репозитория@endlink и собраны командой:
|
||
|
|
||
|
@output{shell}
|
||
|
$ cd utils
|
||
|
$ make install
|
||
|
@endoutput
|
||
|
|
||
|
Затем следует скопировать @a armle-v7 версии тестовых программ на SD карту памяти и подключить её к OrangePi-PC или передать файлы по сети с помощью @l{Настройка FTP сервера|FTP} или @l{Настройка NFS сервера|NFS}.
|
||
|
|
||
|
|
||
|
|
||
|
@group base
|
||
|
|
||
|
@group base_run
|
||
|
В последовательном терминале выполнить команду:
|
||
|
|
||
|
@output{shell}# uname -s @endoutput
|
||
|
|
||
|
Проверка считается выполненной успешно, если в терминале будет выведено сообщение вида:
|
||
|
|
||
|
@output{shell}KPDA @endoutput
|
||
|
|
||
|
|
||
|
@group base_comp
|
||
|
|
||
|
Для вывода информации о запущенных компонентов выполнить команду @l{pidin|pidin ar}:
|
||
|
|
||
|
@output{shell}
|
||
|
# pidin ar
|
||
|
pid Arguments
|
||
|
1 procnto-smp -vvv -ae
|
||
|
2 slogger -s 16384k
|
||
|
3 pipe
|
||
|
4 devc-ser8250 -e -F -b115200 -c24000000/16 0x01C28000^2,32
|
||
|
5 random -t
|
||
|
6 io-pkt-v4-hc-ksz -dsun8i
|
||
|
4103 sh
|
||
|
4104 pidin ar
|
||
|
@endoutput
|
||
|
|
||
|
|
||
|
@group base_mem
|
||
|
|
||
|
Для вывода информации о процессоре и доступной оперативной памяти выполнить команду @l{pidin|pidin info}:
|
||
|
|
||
|
@output{shell}
|
||
|
# pidin info
|
||
|
CPU:ARM Release:trunk FreeMem:992Mb/1024Mb BootTime:Jan 01 00:00:00 UTC 1970
|
||
|
Processes: 8, Threads: 28
|
||
|
Processor1: 1091551349 Cortex A7 228MHz FPU
|
||
|
Processor2: 1091551349 Cortex A7 228MHz FPU
|
||
|
Processor3: 1091551349 Cortex A7 228MHz FPU
|
||
|
Processor4: 1091551349 Cortex A7 228MHz FPU
|
||
|
@endoutput
|
||
|
|
||
|
Для проверки функционирования контроллера оперативной памяти используется утилита @a memcheck. Ее требуется запустить и дождаться завершения проверки:
|
||
|
|
||
|
@output{shell}# /tmp/memcheck @endoutput
|
||
|
|
||
|
Проверка считается выполненной успешно, если выведено сообщение:
|
||
|
|
||
|
@output{shell}PASS: all memory allocated @endoutput
|
||
|
|
||
|
|
||
|
|
||
|
@group base_interrupts
|
||
|
|
||
|
Для вывода информации о используемых прерываниях выполнить команду @l{pidin|pidin ir}:
|
||
|
|
||
|
@output{shell}
|
||
|
# pidin ir
|
||
|
pid tid name
|
||
|
1 1 procnto-smp
|
||
|
1 2 procnto-smp
|
||
|
1 3 procnto-smp
|
||
|
1 4 procnto-smp
|
||
|
0 0x1b 0 -P- @0xfe08a2c4:0x0
|
||
|
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 13 procnto-smp
|
||
|
1 14 procnto-smp
|
||
|
1 16 procnto-smp
|
||
|
2 1 slogger
|
||
|
3 1 pipe
|
||
|
3 2 pipe
|
||
|
3 3 pipe
|
||
|
4 1 devc-ser8250
|
||
|
1 0x20 0 --- @0x804ab30:0x805d1c0
|
||
|
5 1 random
|
||
|
5 2 random
|
||
|
5 3 random
|
||
|
6 1 io-pkt-v4-hc-ksz
|
||
|
6 2 io-pkt-v4-hc-ksz
|
||
|
2 0x72 0 T-- @0x78002d5c:0x818f2c0
|
||
|
6 3 io-pkt-v4-hc-ksz
|
||
|
4103 1 sh
|
||
|
20488 1 pidin
|
||
|
@endoutput
|
||
|
|
||
|
Проверка считается пройденной успешно, если вывод утилиты @l{pidin|pidin ir} содержит информацию об обработчиках прерывания, принадлежащих выполняемым процессам, в формате
|
||
|
|
||
|
@output{shell}
|
||
|
pid tid Имя процесса
|
||
|
id прерывания vector mask_count flags handler:area
|
||
|
@endoutput
|
||
|
|
||
|
|
||
|
|
||
|
@group base_system_timer
|
||
|
|
||
|
Для проверки функционирования системного таймера необходимо воспользоваться программой @a ticksize:
|
||
|
|
||
|
@output{shell}# /tmp/ticksize @endoutput
|
||
|
|
||
|
Проверка считается выполненной успешно, если вывод данной программы содержит аналогичные строки:
|
||
|
|
||
|
@output{shell}
|
||
|
System timer ticksize: 1000 mks
|
||
|
Measuring system timer interrupt latency for 10 sec...
|
||
|
|
||
|
------------------------------------
|
||
|
System Timer Latency = 0.54 mks
|
||
|
------------------------------------
|
||
|
@endoutput
|
||
|
|
||
|
|
||
|
|
||
|
@group base_smp
|
||
|
|
||
|
Для вывода информации о количестве процессоров выполнить команду @l{pidin|pidin info}:
|
||
|
|
||
|
@output{shell}
|
||
|
# pidin info
|
||
|
CPU:ARM Release:trunk FreeMem:992Mb/1024Mb BootTime:Jan 01 00:00:00 UTC 1970
|
||
|
Processes: 8, Threads: 28
|
||
|
Processor1: 1091551349 Cortex A7 228MHz FPU
|
||
|
Processor2: 1091551349 Cortex A7 228MHz FPU
|
||
|
Processor3: 1091551349 Cortex A7 228MHz FPU
|
||
|
Processor4: 1091551349 Cortex A7 228MHz FPU
|
||
|
@endoutput
|
||
|
|
||
|
Для проверки функционирования на всех ядрах выполнить следующее:
|
||
|
|
||
|
@output{shell}
|
||
|
# for cpu in 0 1 2 3; do on -C$cpu pidin -P pidin -fl; done
|
||
|
@endoutput
|
||
|
|
||
|
Проверка считается выполненной успешно, если вывод содержит следующие строки:
|
||
|
|
||
|
@output{shell}
|
||
|
cpu
|
||
|
0
|
||
|
cpu
|
||
|
1
|
||
|
cpu
|
||
|
2
|
||
|
cpu
|
||
|
3
|
||
|
@endoutput
|
||
|
|
||
|
|
||
|
|
||
|
@group bsp
|
||
|
|
||
|
@group bsp_uart
|
||
|
|
||
|
Для работы с последовательным портом используется драйвер @l{devc-ser8250}. Настройки последовательного порта по умолчанию: скорость 115200, 8 бит, без контроля четности, 1 стоп-бит. В составе загрузочного образа драйвер запускается автоматически.
|
||
|
|
||
|
В случае успешного запуска драйвера в директории `/dev/` будет создано устройство @c ser1.
|
||
|
|
||
|
@output{shell}
|
||
|
# ls /dev/ser*
|
||
|
/dev/ser1
|
||
|
@endoutput
|
||
|
|
||
|
Для проверки функционирования драйвера UART подключить ПМ к ПК через преобразователь по USB в один из разъемов и запустить терминальную программу @a minicom. В последовательном или удалённом терминале выполнить следующую команду:
|
||
|
|
||
|
@output{shell}
|
||
|
# echo Test message > /dev/ser1
|
||
|
@endoutput
|
||
|
|
||
|
Проверка считается выполненной успешно, если в терминальной программе будет выведено сообщение:
|
||
|
|
||
|
@output{shell}
|
||
|
Test message
|
||
|
@endoutput
|
||
|
|
||
|
|
||
|
|
||
|
@group bsp_ethernet
|
||
|
|
||
|
Для работы с контроллером интерфейса Gigabit Ethernet используется драйвер @l{devnp-sun8i.so} и менеджер ресурсов @l{io-pkt-*|io-pkt-v4-hc-ksz}. В составе загрузочного образа драйвер запускается автоматически. Для вывода информации о сетевых интерфейсах выполнить команду @l{ifconfig}.
|
||
|
|
||
|
В случае успешного запуска драйвера будет создан сетевой интерфейс @a xzynq0 и в результате выполнения команды @l{ifconfig} на экран будут выведены данные, аналогичные следующим, с указанием текущего ip-адреса, маски и широковещательного адреса:
|
||
|
|
||
|
@output{shell}
|
||
|
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 33192
|
||
|
inet 127.0.0.1 netmask 0xff000000
|
||
|
sun0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
|
||
|
address: f2:b4:15:84:4c:8b
|
||
|
media: Ethernet autoselect (100baseTX full-duplex)
|
||
|
status: active
|
||
|
inet <ip адрес> netmask <маска> broadcast <широковещательный адрес>
|
||
|
@endoutput
|
||
|
|
||
|
Для проверки функционирования сетевого обмена выполнить следующую команду, инициирующую отправку ICMP пакетов существующему сетевому узлу:
|
||
|
|
||
|
@output{shell}
|
||
|
# 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
|
||
|
@endoutput
|
||
|
|
||
|
Проверка считается выполненной успешно, если все 3 пакета были успешно получены (процент потерь равен нулю).
|
||
|
|
||
|
@prev{./00-UserGuide.html|table_of_articles||11}
|