1
1
kpda-bsp-allwinner-h3-orang.../docs/11-Verification.dox

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}