BSPv3: добавлен драйвер интегрированного графического контроллера, исправлен сетевой драйвер, обеспечена более плотная интеграция с КР
Этот коммит содержится в:
родитель
f0886cf582
Коммит
f30dee5603
@ -12,8 +12,8 @@
|
||||
|
||||
## Руководство пользователя и бинарная сборка
|
||||
|
||||
- [Бинарный релиз](https://git.kpda.ru/BSP/kpda-bsp-allwinner-h3-orangepipc/releases/tag/release-2021-v2)
|
||||
- [Руководство пользователя](https://git.kpda.ru/BSP/kpda-bsp-allwinner-h3-orangepipc/releases/download/release-2021-v2/UserManual.pdf)
|
||||
- [Бинарный релиз](https://git.kpda.ru/BSP/kpda-bsp-allwinner-h3-orangepipc/releases/tag/release-2021-v3)
|
||||
- [Руководство пользователя](https://git.kpda.ru/BSP/kpda-bsp-allwinner-h3-orangepipc/releases/download/release-2021-v3/UserManual.pdf)
|
||||
|
||||
## Поддерживаемые редакции Нейтрино
|
||||
|
||||
@ -96,3 +96,5 @@ echo "tftpboot 0x41000000 $image; go 0x41000000" > $TFTP_SERIAL
|
||||
| NET | + | + | |
|
||||
| SD | + | + | Версия исходного кода драйвера - 57d005663e |
|
||||
| MMC | + | + | Версия исходного кода драйвера - 57d005663e |
|
||||
| PCTL | + | + | Версия исходного кода: драйвер - ee2a55d5fd, сервис - 6427df4cac |
|
||||
| DC | + | + | Версия исходного кода драйвера - 7f993f4eb4 |
|
||||
|
@ -1,14 +1,14 @@
|
||||
@page "00-UserGuide" BSP для OrangePi-PC Allwinner-H3
|
||||
@page "00-UserGuide" BSP для OrangePi PC Allwinner H3
|
||||
@par Аннотация
|
||||
|
||||
@brief Данный документ представляет собой руководство пользователя для пакета поддержки платы OrangePi-PC на основе интегральной микросхемы Allwinner-H3 под ЗОСРВ «Нейтрино».
|
||||
@brief Данный документ представляет собой руководство пользователя для пакета поддержки платы OrangePi PC на основе интегральной микросхемы Allwinner H3 под ЗОСРВ «Нейтрино».
|
||||
|
||||
Процессорная архитектура: ARMv7 Little Endian
|
||||
@hide @arch{armv7} @endhide
|
||||
|
||||
Поддерживаемые устройства:
|
||||
- Одноплатный компьютер @link{http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/details/Orange-Pi-PC.html}OrangePi-PC(v1.3)@endlink
|
||||
- Одноплатный компьютер @link{http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/details/Orange-Pi-PC-Plus.html}OrangePi-PC-Plus(v1.1)@endlink
|
||||
- Одноплатный компьютер @link{http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/details/Orange-Pi-PC.html}OrangePi PC (v1.3)@endlink
|
||||
- Одноплатный компьютер @link{http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/details/Orange-Pi-PC-Plus.html}OrangePi PC Plus (v1.1)@endlink
|
||||
|
||||
Документ включает следующие разделы:
|
||||
@ul
|
||||
@ -17,6 +17,7 @@
|
||||
@item Состав и структура
|
||||
@item Установка и настройка
|
||||
@item Загрузка образа ОС
|
||||
@item Запуск тестового проекта
|
||||
@item Описание компонентов
|
||||
@item Проверка функционирования
|
||||
@item Известные особенности
|
||||
@ -33,11 +34,13 @@
|
||||
|
||||
В разделе «Загрузка образа ОС» приведены сведения о вариантах запуска загружаемого образа ЗОСРВ «Нейтрино» на целевой системе.
|
||||
|
||||
В разделе «Запуск тестового проекта» приведены указания по подключению к инструментальной системе по протоколу SSH, созданию и запуску тестового проекта.
|
||||
|
||||
В разделе «Описание компонентов» приведены описания компонентов ППМ.
|
||||
|
||||
В разделе «Проверка функционирования» приведены указания по проверке работоспособности пакета поддержки.
|
||||
|
||||
В разделе «Известные особенности» приведены известные особбености и ограничения текущей версии пакета поддержки.
|
||||
В разделе «Известные особенности» приведены известные особености и ограничения текущей версии пакета поддержки.
|
||||
|
||||
@group table_of_articles
|
||||
@@table[width:40:60:width] Раздел @| Описание
|
||||
|
@ -6,12 +6,15 @@
|
||||
@term ЗОСРВ
|
||||
@use защищенная операционная система реального времени
|
||||
|
||||
@term КР
|
||||
@use комплект разработчика
|
||||
|
||||
@term ПМ
|
||||
@use процессорный модуль
|
||||
|
||||
@term ППМ
|
||||
@term BSP
|
||||
@use пакет поддержки микропроцессора
|
||||
@use пакет поддержки модуля
|
||||
@enddl
|
||||
|
||||
@prev{./00-UserGuide.html|table_of_articles||1}
|
||||
|
@ -3,16 +3,16 @@
|
||||
@brief Общие сведения
|
||||
|
||||
@br
|
||||
Пакет поддержки платы OrangePi-PC (ППМ) предназначен для обеспечения запуска и функционирования ЗОСРВ «Нейтрино» на процессорном модуле (ПМ) на на основе интегральной микросхемы Allwinner-H3.
|
||||
Пакет поддержки платы (модуля) OrangePi PC (ППМ) предназначен для обеспечения запуска и функционирования ЗОСРВ «Нейтрино» на процессорном модуле (ПМ) на основе интегральной микросхемы Allwinner H3.
|
||||
|
||||
@br
|
||||
Для работы с ППМ необходим инструментальный ПК с установленным комплектом разработчика для ЗОСРВ «Нейтрино» в варианте _Linux Host_ и целевая плата OrangePi-PC на основе интегральной микросхемы Allwinner-H3.
|
||||
Для работы с ППМ необходим инструментальный ПК с установленным комплектом разработчика для ЗОСРВ «Нейтрино» в варианте Linux Host и целевая плата OrangePi PC на основе интегральной микросхемы Allwinner H3.
|
||||
|
||||
@br
|
||||
ППМ совместим со следующими редакциями ЗОСРВ «Нейтрино»: @b 2021, @b 2020 (ограниченно).
|
||||
|
||||
@br
|
||||
ППМ обеспечивает поддержку и функционирование следующих блоков и интерфейсов интегральной микросхемы Allwinner-H3:
|
||||
ППМ обеспечивает поддержку и функционирование следующих блоков и интерфейсов интегральной микросхемы Allwinner H3:
|
||||
@ul
|
||||
@item процессорнные ядра Cortex-A7 в режиме SMP
|
||||
@item контроллер прерываний GICv2
|
||||
@ -21,6 +21,7 @@
|
||||
@item USB (EHCI/OHCI)
|
||||
@item Ethernet
|
||||
@item SD/eMMC
|
||||
@item HDMI
|
||||
@endul
|
||||
|
||||
@prev{./00-UserGuide.html|table_of_articles||2}
|
||||
|
@ -6,9 +6,9 @@
|
||||
ППМ представляет собой архив, имеющий формат .tar.gz и имя вида «kpda-bsp-allwinner-h3-orangepipc-(версия-ОС)-(формат)-(дата)-(хэш-git).tar.gz».
|
||||
Назначение полей:
|
||||
@ul
|
||||
@item (версия-ОС) - версия ЗОСРВ для которой предназначен BSP
|
||||
@item (версия-ОС) - версия ЗОСРВ для которой предназначен ППМ
|
||||
@item (формат) - формат ППМ: @a src для версии с исходными кодами, @a bin для версии с бинарными компонентами
|
||||
@item (дата) - дата сборки и запаковки BSP в формате ГГГГММДД
|
||||
@item (дата) - дата сборки и запаковки ППМ в формате ГГГГММДД
|
||||
@item (хэш-git) - номер или хэш коммита системы контроля версией git
|
||||
@endul
|
||||
|
||||
|
@ -2,22 +2,103 @@
|
||||
|
||||
@brief Установка и настройка
|
||||
|
||||
@br
|
||||
Распаковывать архив с ППМ следует на инструментальной машине @a x86_64 c ОС @a Linux с установленным комплектом разработчика ЗОСРВ «Нейтрино».
|
||||
@@item Получение архива ППМ
|
||||
@@item Настройка SSH
|
||||
@@item Сборка загрузочного образа
|
||||
|
||||
Для распаковки ППМ следует скопировать архив в рабочий каталог и выполнить команду:
|
||||
@group bsp_get
|
||||
|
||||
@link{https://git.kpda.ru/BSP/kpda-bsp-allwinner-h3-orangepipc/releases}В публичном репозитории СВД ВС@endlink скачать архив с исходным кодом ППМ текущей версии в домашний каталог и распаковать его:
|
||||
|
||||
@output{shell}
|
||||
$ tar xzf kpda-bsp-allwinner-h3-orangepipc-*.tar.gz
|
||||
$ cd ~
|
||||
$ tar -xzf имя_архива.tar.gz
|
||||
@endoutput
|
||||
|
||||
Для сборки ППМ выполните следующие команды:
|
||||
@group ssh_setup
|
||||
|
||||
Приведенные в данном разделе действия необязательны и выполняются в случае последующей кросс-разработки в среде КР.
|
||||
|
||||
@br
|
||||
В файле построения образа ~/kpda-bsp-allwinner-h3-orangepipc/images/orangepi.build раскомментировать секцию "Конфигурация ssh" и строку запуска sshd:
|
||||
|
||||
@output{shell}
|
||||
$ cd kpda-bsp-allwinner-h3-orangepipc
|
||||
[argv0=/usr/sbin/sshd] sshd
|
||||
@endoutput
|
||||
|
||||
Также в файле построения в следующей строке:
|
||||
|
||||
@output{shell}
|
||||
ifconfig sun0 192.168.1.2/24 up
|
||||
@endoutput
|
||||
|
||||
заменить IP-адрес по умолчанию на требуемый IP-адрес.
|
||||
|
||||
@br
|
||||
Создать необходимые для работы SSH каталоги:
|
||||
|
||||
@output{shell}
|
||||
$ cd ~/kpda-bsp-allwinner-h3-orangepipc
|
||||
$ mkdir -p prebuilt/armle-v7/var/chroot/sshd
|
||||
$ mkdir -p prebuilt/armle-v7/root/.ssh
|
||||
$ mkdir -p prebuilt/armle-v7/etc/ssh
|
||||
@endoutput
|
||||
|
||||
Копировать конфигурационный файл сервера SSH в каталог с ППМ:
|
||||
|
||||
@output{shell}
|
||||
$ cp $KPDA_TARGET/etc/ssh/sshd_config prebuilt/armle-v7/etc/ssh
|
||||
@endoutput
|
||||
|
||||
Открыть файл prebuilt/armle-v7/etc/ssh/sshd_config и привести в соответствие указанные ниже параметры, т.е., раскомментировать и установить значение yes:
|
||||
|
||||
@output{shell}
|
||||
PermitRootLogin yes
|
||||
PubkeyAuthentication yes
|
||||
PermitUserEnvironment yes
|
||||
@endoutput
|
||||
|
||||
Создать серверные ключи:
|
||||
|
||||
@output{shell}
|
||||
$ ssh-keygen -t rsa -m pem -P "" -f kpda-bsp-allwinner-h3-orangepipc/prebuilt/armle-v7/etc/ssh/ssh_host_rsa_key
|
||||
$ ssh-keygen -t dsa -m pem -P "" -f kpda-bsp-allwinner-h3-orangepipc/prebuilt/armle-v7/etc/ssh/ssh_host_dsa_key
|
||||
@endoutput
|
||||
|
||||
Создать клиентские ключи:
|
||||
|
||||
@output{shell}
|
||||
$ ssh-keygen -t rsa -P "" -f ~/.ssh/orangepi-rsa
|
||||
@endoutput
|
||||
|
||||
Добавить публичный ключ в ППМ:
|
||||
|
||||
@output{shell}
|
||||
$ cat ~/.ssh/orangepi-rsa.pub >> kpda-bsp-allwinner-h3-orangepipc/prebuilt/armle-v7/root/.ssh/authorized_keys
|
||||
@endoutput
|
||||
|
||||
@group ifs_build
|
||||
|
||||
Сборка загрузочного образа ЗОСРВ «Нейтрино» выполняется в процессе сборки ППМ с помощью инструментов КР.
|
||||
|
||||
@br
|
||||
Для сборки в текстовом режиме необходимо в корневом каталоге ППМ выполнить команду make:
|
||||
|
||||
@output{shell}
|
||||
$ cd ~/kpda-bsp-allwinner-h3-orangepipc
|
||||
$ make
|
||||
@endoutput
|
||||
|
||||
В результате будет произведена сборка ППМ и подготовлен загрузочный образ ЗОСРВ «Нейтрино» @c ifs-h3-orangepi.bin.
|
||||
Для сборки ППМ в графической среде Qt Creator необходимо запустить скрипт run_qtcreator.sh из каталога установки КР, например:
|
||||
|
||||
@output{shell}
|
||||
$ /opt/kpda2021a/run_qtcreator.sh
|
||||
@endoutput
|
||||
|
||||
@br
|
||||
В среде Qt Creator в режиме «Начало» в разделе «Проекты» нажать кнопку «+Создать». Выбрать шаблон «Импортировать проект» и «Импорт существующего проекта». Указать название проекта, например, orangepi и размещение ~/kpda-bsp-allwinner-h3-orangepipc. В следующем окне установить флажок на каталоге ~/kpda-bsp-allwinner-h3-orangepipc (все компоненты должны быть выбраны), нажать «Далее» и завершить создание проекта.
|
||||
|
||||
@br
|
||||
В нижнем левом углу нажать на кнопку «Собрать проект». При отсутствии ошибок сборки в каталоге ~/kpda-bsp-allwinner-h3-orangepipc/images должен появиться файл образа ЗОСРВ «Нейтрино» ifs-h3-orangepi.bin.
|
||||
|
||||
@prev{./00-UserGuide.html|table_of_articles||4}
|
||||
|
163
docs/05-Boot.dox
163
docs/05-Boot.dox
@ -2,36 +2,110 @@
|
||||
|
||||
@brief Загрузка образа ОС
|
||||
|
||||
@@item Подготовка SD карты
|
||||
@@item Загрузка образа с SD карты
|
||||
@@item Загрузка образа по сети
|
||||
@@item Загрузка образа с SD карты памяти
|
||||
@@item Результат загрузки образа
|
||||
@@item Сохранение варианта загрузки по-умолчанию
|
||||
@@item Сохранение варианта загрузки по умолчанию
|
||||
|
||||
@group boot_net
|
||||
@group sd_prepare
|
||||
|
||||
Для загрузки образа ЗОСРВ «Нейтрино» на ПМ по сети используется протокол TFTP. На инструментальной системе необходимо настроить TFTP сервер и скопировать полученный загрузочный образ @c ifs-h3-orangepi.bin в каталог, использующийся TFTP сервером.
|
||||
Для обеспечения доступа к плате по интерфейсу UART и Ethernet, загрузки ЗОСРВ «Нейтрино» и работы с файловыми системами необходимо установить загрузчик U-Boot на SD-карту и создать на ней разделы. Для этого на инструментальной системе выполнить следующие действия:
|
||||
|
||||
@br
|
||||
Затем следует подключить отладочный USB-UART ПМ к USB порту инструментального ПК, проверить наличие устройства `/dev/ttyUSB*` и запустить терминальную программу, например, minicom со следующими параметрами: скорость 115200, 8 бит, без контроля четности, 1 стоп-бит, порт `/dev/ttyUSB0`.
|
||||
|
||||
@br
|
||||
После включения питания ПМ в терминальной программе должен присутствовать отладочный вывод загрузчика U-Boot. Например:
|
||||
Подключить SD карту к инструментальной системе и копировать на нее загрузчик U-Boot:
|
||||
|
||||
@output{shell}
|
||||
U-Boot SPL 2020.04-orangepi (Oct 26 2020 - 16:27:23 +0800)
|
||||
$ sudo dd if=u-boot-sunxi-with-spl.bin of=/dev/sdX bs=1k seek=8
|
||||
@endoutput
|
||||
|
||||
где sdX - имя SD карты в инструментальной системе, например, sdc.
|
||||
|
||||
@caution
|
||||
Файл загрузчика u-boot-sunxi-with-spl.bin предоставляется на условиях "как есть", т.е. без сопровождения, и может быть собран самостоятельно из исходных текстов, расположенных @link{https://github.com/orangepi-xunlong/u-boot-orangepi}в репозитории U-Boot@endlink
|
||||
@endcaution
|
||||
|
||||
Создать раздел FAT32 размером 100 Мб и Power-Safe размером 2 Гб:
|
||||
|
||||
@output{shell}
|
||||
$ echo -e "o\nn\np\n1\n2048\n206848\nt\nb\nn\np\n2\n206849\n4401153\nt\n2\nb3\nw\n" | sudo fdisk /dev/sdX
|
||||
@endoutput
|
||||
|
||||
Форматировать раздел FAT32:
|
||||
|
||||
@output{shell}
|
||||
$ sudo mkfs.vfat -F 32 /dev/sdX1
|
||||
@endoutput
|
||||
|
||||
Создать файл построения образа файловой системы Power-Safe powersafe.bld следующего содержания:
|
||||
|
||||
@output{shell}
|
||||
[blksize=512]
|
||||
[vol_name=kpda_fs]
|
||||
[+boot_cls]
|
||||
[+boot_quiet]
|
||||
[+boot_active]
|
||||
[-followlink]
|
||||
[num_sectors=4194304]
|
||||
[num_inodes=320000]
|
||||
[uid=0 gid=0]
|
||||
[boot_offset=2048]
|
||||
/usr/bin/=${KPDA_TARGET}/armle-v7/usr/bin
|
||||
@endoutput
|
||||
|
||||
Создать образ раздела с файловой системой Power-Safe:
|
||||
|
||||
@output{shell}
|
||||
$ mkqnx6fsimg2 -vvv powersafe.bld powersafe.qfs
|
||||
@endoutput
|
||||
|
||||
Записать полученный образ файловой системы Power-Safe в раздел Power-Safe SD карты:
|
||||
|
||||
@output{shell}
|
||||
$ sudo dd if=powersafe.qfs of=/dev/sdX2
|
||||
@endoutput
|
||||
|
||||
Копировать образ ЗОСРВ «Нейтрино» в раздел FAT32 SD карты:
|
||||
|
||||
@output{shell}
|
||||
$ cp ~/kpda-bsp-allwinner-h3-orangepipc/images/ifs-h3-orangepi.bin /точка_монтирования
|
||||
@endoutput
|
||||
|
||||
где точка_монтирования - это, как правило, каталог /media/имя_пользователя/метка_тома. Если после форматирования раздела FAT32 при подготовке SD карты не произошло автомонтирование раздела, то следует подключить его вручную.
|
||||
|
||||
|
||||
@group boot_sd
|
||||
|
||||
Вставить SD карту в слот на плате. Подключить плату к инструментальной системе через переходник USB-UART.
|
||||
|
||||
@br
|
||||
Установить и запустить программу minicom со следующими параметрами: скорость 115200, 8 бит, без контроля четности, 1 стоп-бит, порт `/dev/ttyUSB0`:
|
||||
|
||||
@output{shell}
|
||||
$ sudo apt install minicom
|
||||
$ sudo minicom -D /dev/ttyUSB0
|
||||
@endoutput
|
||||
|
||||
Включить плату. Дождаться запуска командной строки в отладочной консоли U-Boot в окне терминала инструментальной системы (для пропуска установленных ранее вариантов автозагрузки можно нажать любую клавишу), например:
|
||||
|
||||
@output{shell}
|
||||
U-Boot SPL 2022.04-rc5 (Apr 23 2024 - 17:57:50 +0300)
|
||||
DRAM: 1024 MiB
|
||||
Trying to boot from MMC1
|
||||
|
||||
|
||||
U-Boot 2020.04-orangepi (Oct 26 2020 - 16:27:23 +0800) Allwinner Technology
|
||||
U-Boot 2022.04-rc5 (Apr 23 2024 - 17:57:50 +0300) Allwinner Technology
|
||||
|
||||
CPU: Allwinner H3 (SUN8I 1680)
|
||||
Model: Xunlong Orange Pi PC
|
||||
DRAM: 1 GiB
|
||||
Core: 38 devices, 15 uclasses, devicetree: separate
|
||||
WDT: Not starting watchdog@1c20ca0
|
||||
MMC: mmc@1c0f000: 0
|
||||
Loading Environment from FAT... Unable to use mmc 0:1... In: serial@1c28000
|
||||
Out: serial@1c28000
|
||||
Err: serial@1c28000
|
||||
Loading Environment from FAT... OK
|
||||
In: serial
|
||||
Out: serial
|
||||
Err: serial
|
||||
Net: phy interface0
|
||||
eth0: ethernet@1c30000
|
||||
starting USB...
|
||||
@ -52,48 +126,47 @@ scanning bus usb@1c1c400 for devices... 1 USB Device(s) found
|
||||
scanning bus usb@1c1d000 for devices... 1 USB Device(s) found
|
||||
scanning bus usb@1c1d400 for devices... 1 USB Device(s) found
|
||||
scanning usb for storage devices... 0 Storage Device(s) found
|
||||
Autoboot in 1 seconds, press <Space> to stop
|
||||
Hit any key to stop autoboot: 0
|
||||
=>
|
||||
@endoutput
|
||||
|
||||
Загрузить и запустить образ ЗОСРВ «Нейтрино»:
|
||||
|
||||
@output{shell}
|
||||
=> fatload mmc 0 0x41000000 ifs-h3-orangepi.bin
|
||||
=> go 0x41000000
|
||||
@endoutput
|
||||
|
||||
|
||||
@group boot_net
|
||||
|
||||
Если для загрузки образа ЗОСРВ «Нейтрино» используется протокол TFTP, то на инструментальной системе необходимо настроить TFTP сервер и копировать загрузочный образ @c ifs-h3-orangepi.bin в каталог, использующийся TFTP сервером:
|
||||
|
||||
@output{shell}
|
||||
$ sudo apt install tftpd-hpa
|
||||
$ sudo cp ~/kpda-bsp-allwinner-h3-orangepipc/images/ifs-h3-orangepi.bin /srv/tftp
|
||||
$ sudo systemctl restart tftpd-hpa
|
||||
@endoutput
|
||||
|
||||
@br
|
||||
Для загрузки образа ЗОСРВ «Нейтрино» cледует остановить загрузку и в консоли загрузчика U-Boot выполнить следующие команды:
|
||||
@ul
|
||||
@item Указать IP-адрес TFTP сервера:
|
||||
Подключить плату через кабель Ethernet к локальной сети, в которой находится инструментальная система. В консоли загрузчика U-Boot указать IP-адрес TFTP-сервера и назначить IP-адрес клиента (платы):
|
||||
|
||||
@output{shell}
|
||||
=> setenv serverip 172.16.0.16
|
||||
=> setenv gatewayip 172.16.0.16
|
||||
=> setenv serverip <IP-адрес TFTP-сервера>
|
||||
=> setenv ipaddr <IP-адрес TFTP-клиента>
|
||||
@endoutput
|
||||
|
||||
@item Установить IP-адрес модулю, для организации обмена по протоколу TFTP:
|
||||
Загрузить образ ЗОСРВ «Нейтрино» по протоколу TFTP и запустить его:
|
||||
|
||||
@output{shell}
|
||||
=> setenv ipaddr 172.16.10.44
|
||||
@endoutput
|
||||
|
||||
@item Загрузить образ по протоколу TFTP и запустить его:
|
||||
|
||||
@output{shell}
|
||||
=> tftpboot 0x41000000 ifs-h3-orangepi.bin
|
||||
=> go 0x41000000
|
||||
@endoutput
|
||||
@endul
|
||||
|
||||
|
||||
@group boot_sd
|
||||
|
||||
Для загрузки образа ЗОСРВ «Нейтрино» с карты памяти SD/microSD, скопируйте заранее подготовленный загрузочный образ @c ifs-h3-orangepi.bin на FAT раздел карты памяти и после включения питания ПМ в консоли загрузчика U-Boot выполните следующие команды:
|
||||
|
||||
@output{shell}
|
||||
=> fatload mmc 0 0x41000000 ifs-h3-orangepi.bin
|
||||
=> tftpboot 0x41000000 ifs-h3-orangepi.bin
|
||||
=> go 0x41000000
|
||||
@endoutput
|
||||
|
||||
|
||||
@group boot_kpda
|
||||
|
||||
В результате выполнения приведенных выше команд должен запуститься образ ЗОСРВ, выведены сообщения о ходе загрузки и запущен командный интерпретатор. Пример вывода:
|
||||
В результате выполнения приведенных выше команд должен запуститься образ ЗОСРВ «Нейтрино», выведены сообщения о ходе загрузки и запущен командный интерпретатор. Пример вывода:
|
||||
|
||||
@output{shell}
|
||||
System page at phys:40022000 user:fc410000 kern:fc410000
|
||||
@ -112,14 +185,20 @@ Starting Network driver...
|
||||
#
|
||||
@endoutput
|
||||
|
||||
Все системные утилиты расположены в файловой системе загрузочного образа. При необходимости использования файловой системы Power-Safe SD карты с дополнительными утилитами из каталога `/usr/bin` можно подключить её следующей командой:
|
||||
|
||||
@output{shell}
|
||||
# mount -t qnx6 /dev/sd0t179 /
|
||||
@endoutput
|
||||
|
||||
|
||||
@group boot_auto
|
||||
|
||||
Для сохранения параметров загрузки и выполнения требуемого вариант загрузки по-умолчанию автоматически при включении питании модуля, в консоли U-Boot установите переменную окружения @b bootcmd и сохраните значение переменных c помощью команды @b saveenv, например:
|
||||
Для сохранения параметров загрузки и выполнения требуемого варианта загрузки по умолчанию автоматически при включении питании модуля в консоли U-Boot установите переменную окружения @b bootcmd и сохраните значение переменных c помощью команды @b saveenv, например:
|
||||
|
||||
@output{shell}
|
||||
=> setenv kpdaboot_net “tftpboot 0x41000000 ifs-h3-orangepi.bin; go 0x41000000”
|
||||
=> setenv bootcmd run kpdaboot_net
|
||||
=> setenv kpdaboot “fatload mmc 0 0x41000000 ifs-h3-orangepi.bin; go 0x41000000”
|
||||
=> setenv bootcmd run kpdaboot
|
||||
=> saveenv
|
||||
@endoutput
|
||||
|
||||
|
40
docs/06-Connect.dox
Обычный файл
40
docs/06-Connect.dox
Обычный файл
@ -0,0 +1,40 @@
|
||||
@page "Connect" Запуск тестового проекта
|
||||
|
||||
@brief Запуск тестового проекта
|
||||
|
||||
@@item Подключение к инструментальной системе по протоколу SSH
|
||||
@@item Создание и запуск тестового проекта
|
||||
|
||||
@group ssh_connect
|
||||
|
||||
На инструментальной системе в главном меню Qt Creator выбрать «Инструменты», затем «Параметры» и «Устройства». На вкладке «Устройства» выбрать устройство Unconfigured (по умолчанию для ЗОСРВ «Нейтрино») и нажать «Добавить». Выбрать «Устройство под управлением ЗОСРВ «Нейтрино» и нажать «Начать настройку».
|
||||
|
||||
@br
|
||||
В появившемся окне указать название конфигурации (например, orangepi), IP-адрес целевой системы и имя пользователя root. Далее с помощью кнопки «Обзор» указать ключ orangepi_rsa в домашнем каталоге. По завершении настройки будет проведена проверка связи с устройством.
|
||||
|
||||
|
||||
@group test_create
|
||||
|
||||
В домашнем каталоге инструментальной системы создать каталог helloworld:
|
||||
|
||||
@output{shell}
|
||||
$ mkdir ~/helloworld
|
||||
@endoutput
|
||||
|
||||
@br
|
||||
В среде Qt Creator в режиме «Начало» в разделе «Проекты» нажать кнопку «+Создать». Выбрать «Примеры для ЗОСРВ «Нейтрино» и «Приложение «Hello, World». Указать название проекта helloworld и путь размещения ~/helloworld. Далее указать систему сборки Cmake и выбрать комплект для ARMv7.
|
||||
|
||||
@br
|
||||
Перейти в режим «Проекты» и в разделе «Сборка и запуск» проекта helloworld выбрать «Запуск». В настройках запуска в разделе «Развертывание» необходимо удалить этап «Проверить место на диске».
|
||||
|
||||
@br
|
||||
В нижнем левом углу нажать на кнопку «Запустить». В окне «Вывод приложения» должен отобразиться текст «Добро пожаловать в ЗОСРВ «Нейтрино».
|
||||
|
||||
@br
|
||||
Дополнительно можно проверить работу проекта, нажав кнопку «Управление», далее в разделе «Устройства» нажать «Открыть удаленную оболочку» и выполнить команду:
|
||||
|
||||
@output{shell}
|
||||
# /tmp/helloworld
|
||||
@endoutput
|
||||
|
||||
@prev{./00-UserGuide.html|table_of_articles||5}
|
@ -23,6 +23,8 @@
|
||||
@tr @center @l{devu-ehci.so} @endcenter @| Драйвер для USB-контроллеров с усовершенствованным интерфейсом хост-контроллера (EHCI)
|
||||
@tr @center @l{devu-ohci.so} @endcenter @| Драйвер для USB-контроллеров с открытым интерфейсом хост-контроллера (Open Host Controller Interface, OHCI)
|
||||
@tr @center @l{devb-sdmmc} @endcenter @| Драйвер для SD/eMMC контроллеров
|
||||
@tr @center @l{devp-sunxi} @endcenter @| Драйвер управления общими элементами платформы SUNXI
|
||||
@tr @center @l{devg-sunxi} @endcenter @| Драйвер графического контроллера Allwinner SoC
|
||||
@endtable
|
||||
|
||||
@hint
|
||||
|
@ -1,6 +1,6 @@
|
||||
@page "Verification" Проверка функционирования
|
||||
|
||||
@brief Проверка функционирования ППМ OrangePi-PC Allwinner-H3 под ЗОСРВ «Нейтрино».
|
||||
@brief Проверка функционирования ППМ OrangePi PC Allwinner H3 под ЗОСРВ «Нейтрино».
|
||||
|
||||
|
||||
@br
|
||||
@ -11,33 +11,35 @@
|
||||
@@@item Проверка функционирования контроллера DDR памяти
|
||||
@@@item Проверка функционирования контроллера прерываний
|
||||
@@@item Проверка функционирования таймера
|
||||
@@@item Проверка функционирования подсистемы управления общими элементами платформ
|
||||
@@@item Проверка работы ЗОСРВ на ЦП в режиме симметричной мультипроцессорности (SMP) с поддержкой всех CPU ядер типа Cortex-A7
|
||||
@@item Проверки интерфейсов
|
||||
@@@item Проверка драйвера контроллера UART
|
||||
@@@item Проверка драйвера контроллера Gigabit Ethernet
|
||||
@@@item Проверка драйвера контроллера USB
|
||||
@@@item Проверка драйвера контроллера SD/MMC
|
||||
@@@item Проверка драйвера контроллера HDMI
|
||||
|
||||
|
||||
|
||||
@par Тестовый стенд
|
||||
|
||||
Тестовый стенд представляет из себя отладочный модуль OrangePi-PC, соединённый с инструментальным ПК по интерфейсам RS-232 и Ethernet.
|
||||
Тестовый стенд представляет из себя отладочный модуль OrangePi PC, соединённый с инструментальным ПК по интерфейсам RS-232 и Ethernet.
|
||||
|
||||
@br
|
||||
На инструментальный ПК должно быть установлено:
|
||||
@ul
|
||||
@item ОС семейства GNU Linux, например, Ubuntu 20.04
|
||||
@item Комплект разработчика для ЗОСРВ «Нейтрино»
|
||||
@item ППМ OrangePi-PC Allwinner-H3
|
||||
@item Терминальная программа для отладочной консоли модуля OrangePi-PC, например, minicom
|
||||
@item ППМ OrangePi PC Allwinner H3
|
||||
@item Терминальная программа для отладочной консоли модуля OrangePi PC, например, minicom
|
||||
@endul
|
||||
|
||||
|
||||
|
||||
@par Подготовка
|
||||
|
||||
Перед проведением проверок необходимо запустить ЗОСРВ «Нейтрино» на отладочном модуле OrangePi-PC в соответствии с главой документации @link{./Boot.html}Загрузка образа ОС@endlink.
|
||||
Перед проведением проверок необходимо запустить ЗОСРВ «Нейтрино» на отладочном модуле OrangePi PC в соответствии с главой документации @link{./Boot.html}Загрузка образа ОС@endlink.
|
||||
|
||||
@br
|
||||
Дополнительные тестовые программы @a rr, @a ticksize и другие не входят в состав ППМ и должны быть самостоятельно загружены из @link{https://git.kpda.ru/utils/hw}публичного git-репозитория@endlink и собраны командой:
|
||||
@ -47,7 +49,7 @@ $ cd utils
|
||||
$ make install
|
||||
@endoutput
|
||||
|
||||
Затем следует скопировать @a armle-v7 версии тестовых программ на SD карту памяти и подключить её к OrangePi-PC или передать файлы по сети с помощью @l{Настройка FTP сервера|FTP} или @l{Настройка NFS сервера|NFS}.
|
||||
Затем следует скопировать @a armle-v7 версии тестовых программ на SD карту памяти и подключить её к OrangePi PC или передать файлы по сети с помощью @l{Настройка FTP сервера|FTP} или @l{Настройка NFS сервера|NFS}.
|
||||
|
||||
|
||||
|
||||
@ -73,14 +75,20 @@ $ make install
|
||||
1 procnto-smp -vvv -ae
|
||||
2 slogger -s 16384k
|
||||
3 pipe
|
||||
4 devc-ser8250 -e -F -b115200 -c24000000/16 0x01C28000^2,32
|
||||
5 io-usb -dehci ioport=0x01c1b000,irq=106 -dohci ioport=0x01c1b400,irq=107
|
||||
-dehci ioport=0x01c1c000,irq=108 -dohci ioport=0x01c1c400,irq=109
|
||||
-dehci ioport=0x01c1d000,irq=110 -dohci ioport=0x01c1d400,irq=111
|
||||
6 random -t
|
||||
7 io-pkt-v4-hc-ksz -dsun8i
|
||||
4103 sh
|
||||
4104 pidin ar
|
||||
4 platform-control -dsunxi
|
||||
5 devc-ser8250 -e -F -b115200 -c24000000/16 0x01C28000^2,32
|
||||
6 io-usb -dehci ioport=0x01c1b000,irq=106
|
||||
-dohci ioport=0x01c1b400,irq=107
|
||||
-dehci ioport=0x01c1c000,irq=108
|
||||
-dohci ioport=0x01c1c400,irq=109
|
||||
-dehci ioport=0x01c1d000,irq=110
|
||||
-dohci ioport=0x01c1d400,irq=111
|
||||
7 devb-sdmmc mem name=/below4G blk memory=/below4G,cache=8m
|
||||
sdio hc=sunxi,addr=0x01C0F000,irq=92 disk name=sd cam pnp,quiet
|
||||
8 random -t
|
||||
9 io-pkt-v4-hc-ksz -dsun8i
|
||||
4106 sh
|
||||
4107 pidin ar
|
||||
@endoutput
|
||||
|
||||
|
||||
@ -119,8 +127,7 @@ Processor4: 1091551349 Cortex A7 228MHz FPU
|
||||
1 2 procnto-smp
|
||||
1 3 procnto-smp
|
||||
1 4 procnto-smp
|
||||
0 0x1b 0 -P- @0xfe08a2c4:0x0
|
||||
1 5 procnto-smp
|
||||
0 0x1b 0 -P- @0xfe08a4b8:0x0
|
||||
1 6 procnto-smp
|
||||
1 7 procnto-smp
|
||||
1 8 procnto-smp
|
||||
@ -131,39 +138,44 @@ Processor4: 1091551349 Cortex A7 228MHz FPU
|
||||
1 13 procnto-smp
|
||||
1 14 procnto-smp
|
||||
1 15 procnto-smp
|
||||
1 17 procnto-smp
|
||||
1 16 procnto-smp
|
||||
2 1 slogger
|
||||
3 1 pipe
|
||||
3 2 pipe
|
||||
3 3 pipe
|
||||
4 1 devc-ser8250
|
||||
4 1 platform-control
|
||||
4 2 platform-control
|
||||
5 1 devc-ser8250
|
||||
1 0x20 0 --- @0x804ab6c:0x805d1c0
|
||||
5 1 io-usb
|
||||
6 1 io-usb
|
||||
2 0x6a 0 TP- =PULSE 0x40000008:21 0:0
|
||||
3 0x6b 0 TP- =PULSE 0x4000000b:21 0:0
|
||||
4 0x6c 0 TP- =PULSE 0x4000000e:21 0:0
|
||||
5 0x6d 0 TP- =PULSE 0x40000011:21 0:0
|
||||
6 0x6e 0 TP- =PULSE 0x40000014:21 0:0
|
||||
7 0x6f 0 TP- =PULSE 0x40000017: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
|
||||
5 9 io-usb
|
||||
5 10 io-usb
|
||||
5 11 io-usb
|
||||
6 1 random
|
||||
6 2 random
|
||||
6 3 random
|
||||
7 1 io-pkt-v4-hc-ksz
|
||||
7 2 io-pkt-v4-hc-ksz
|
||||
8 0x72 0 T-- @0x78002d5c:0x818f2c0
|
||||
7 3 io-pkt-v4-hc-ksz
|
||||
4104 1 sh
|
||||
4105 1 pidin
|
||||
3 0x6c 0 TP- =PULSE 0x4000000e:21 0:0
|
||||
4 0x6e 0 TP- =PULSE 0x40000014:21 0:0
|
||||
6 2 io-usb
|
||||
6 3 io-usb
|
||||
6 4 io-usb
|
||||
6 5 io-usb
|
||||
6 6 io-usb
|
||||
6 7 io-usb
|
||||
6 8 io-usb
|
||||
7 1 devb-sdmmc
|
||||
5 0x5c 1 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
|
||||
8 1 random
|
||||
8 2 random
|
||||
8 3 random
|
||||
9 1 io-pkt-v4-hc-ksz
|
||||
9 2 io-pkt-v4-hc-ksz
|
||||
6 0x72 0 T-- @0x78002d5c:0x818f2c0
|
||||
9 3 io-pkt-v4-hc-ksz
|
||||
4106 1 sh
|
||||
12299 1 pidin
|
||||
@endoutput
|
||||
|
||||
Проверка считается пройденной успешно, если вывод утилиты @l{pidin|pidin ir} содержит информацию об обработчиках прерывания, принадлежащих выполняемым процессам, в формате
|
||||
@ -194,6 +206,40 @@ System Timer Latency = 0.54 mks
|
||||
|
||||
|
||||
|
||||
@group base_platform
|
||||
|
||||
Для вывода информации о запущенных компонентов выполнить команду @l{pidin|pidin ar}:
|
||||
|
||||
@output{shell}
|
||||
# pidin ar
|
||||
pid Arguments
|
||||
1 procnto-smp -vvv -ae
|
||||
2 slogger -s 16384k
|
||||
3 pipe
|
||||
4 platform-control -dsunxi
|
||||
5 devc-ser8250 -e -F -b115200 -c24000000/16 0x01C28000^2,32
|
||||
6 io-usb -dehci ioport=0x01c1b000,irq=106
|
||||
-dohci ioport=0x01c1b400,irq=107
|
||||
-dehci ioport=0x01c1c000,irq=108
|
||||
-dohci ioport=0x01c1c400,irq=109
|
||||
-dehci ioport=0x01c1d000,irq=110
|
||||
-dohci ioport=0x01c1d400,irq=111
|
||||
7 devb-sdmmc mem name=/below4G blk memory=/below4G,cache=8m
|
||||
sdio hc=sunxi,addr=0x01C0F000,irq=92 disk name=sd cam pnp,quiet
|
||||
8 random -t
|
||||
9 io-pkt-v4-hc-ksz -dsun8i
|
||||
4106 sh
|
||||
4107 pidin ar
|
||||
@endoutput
|
||||
|
||||
Проверка считается пройденной успешно, если вывод утилиты @l{pidin|pidin ar} содержит информацию о запуске @l{platform-control|менеджера управления общими элементами платформ} с аргументом @l{devp-sunxi.so|-dsunxi}:
|
||||
|
||||
@output{shell}
|
||||
4 platform-control -dsunxi
|
||||
@endoutput
|
||||
|
||||
|
||||
|
||||
@group base_smp
|
||||
|
||||
Для вывода информации о количестве процессоров выполнить команду @l{pidin|pidin info}:
|
||||
@ -292,7 +338,7 @@ round-trip min/avg/max = 0/0/0 ms variance = 0 ms^2
|
||||
|
||||
@group bsp_usb
|
||||
|
||||
Для работы с контроллером интерфейса USB используется драйвера @l{devu-ehci.so}, @l{devu-ohci.so} и менеджер ресурсов @l{io-usb}. В составе загрузочного образа драйвер запускается автоматически. Для вывода информации о доступных интерфейсах выполнить команду @l{usb}.
|
||||
Для работы с контроллером интерфейса USB используются драйвера @l{devu-ehci.so}, @l{devu-ohci.so} и менеджер ресурсов @l{io-usb}. В составе загрузочного образа драйвер запускается автоматически.
|
||||
|
||||
В случае успешного запуска драйвера в директории `/dev/` будет создано устройство @c io-usb.
|
||||
|
||||
@ -301,7 +347,7 @@ round-trip min/avg/max = 0/0/0 ms variance = 0 ms^2
|
||||
devu-ehci.so devu-ohci.so io-usb
|
||||
@endoutput
|
||||
|
||||
Для проверки функционирования драйвера UART подключить ПМ к ПК через преобразователь по USB в один из разъемов и запустить терминальную программу @a minicom. В последовательном или удалённом терминале выполнить следующую команду:
|
||||
Для получения списка подключенных @a usb устройств может быть использована утилита @a usb:
|
||||
|
||||
@output{shell}
|
||||
# usb
|
||||
@ -323,7 +369,7 @@ USB 4 (EHCI) v1.10, v1.01 DDK, v1.01 HCD
|
||||
USB 5 (OHCI) v1.10, v1.01 DDK, v1.01 HCD
|
||||
@endoutput
|
||||
|
||||
После подключения должно появиться новое устройство:
|
||||
После подключения USB flash накопителя к ПМ должно появиться новое устройство:
|
||||
|
||||
@output{shell}
|
||||
# usb
|
||||
@ -396,4 +442,46 @@ USB 5 (OHCI) v1.10, v1.01 DDK, v1.01 HCD
|
||||
@endoutput
|
||||
|
||||
|
||||
|
||||
@group bsp_hdmi
|
||||
|
||||
Проверка HDMI производится с использованием утилиты @l{gf-vsync}. Перед выполнением проверки необходимо подключить к OrangePi PC монитор через разъем HDMI. Для корректной проверки на устройстве должен размещаться файл @l{display.conf|/etc/system/config/display.conf} следующего содержания:
|
||||
|
||||
@code
|
||||
device {
|
||||
drivername=sunxi
|
||||
vid=0x0
|
||||
did=0x0
|
||||
deviceindex=0
|
||||
display {
|
||||
xres=1920
|
||||
yres=1080
|
||||
refresh=60
|
||||
pixel_format=argb8888
|
||||
}
|
||||
}
|
||||
@endcode
|
||||
|
||||
В конфигурационном файле @l{sunxi.conf|/etc/system/config/sunxi.conf} раскомментировать соответствующую строку:
|
||||
|
||||
@code
|
||||
# Allwinner H3 configuration sample
|
||||
irq=118,memory=64,verbose=debug
|
||||
#base=0x01C0C000:0x01000000:0x01EE0000,irq=118,memory=64,verbose=debug
|
||||
@endcode
|
||||
|
||||
Затем необходимо запустить @l{io-display}
|
||||
|
||||
@output{shell}
|
||||
# io-display -dvid=0,did=0
|
||||
@endoutput
|
||||
|
||||
После — воспользоваться утилитой @l{gf-vsync}
|
||||
|
||||
@output{shell}
|
||||
# gf-vsync -l0
|
||||
@endoutput
|
||||
|
||||
Проверка считается пройденной успешно, если на экране отображается корректное изображение, соответствующее документации на утилиту @l{gf-vsync}.
|
||||
|
||||
@prev{./00-UserGuide.html|table_of_articles||11}
|
||||
|
@ -1,5 +1,21 @@
|
||||
@page "ReleaseNotes" Журнал изменений BSP для OrangePi-PC Allwinner-H3
|
||||
@page "ReleaseNotes" Журнал изменений ППМ для OrangePi PC Allwinner H3
|
||||
|
||||
@brief Журнал и история изменений компонентов пакета поддержки
|
||||
|
||||
@par 20240617-de72907e60
|
||||
@ul
|
||||
@item devg-sunxi
|
||||
@ul
|
||||
@item Добавлен драйвер графического контроллера Allwinner SoC
|
||||
@endul
|
||||
@endul
|
||||
|
||||
@par 20240507-e02227891b
|
||||
@ul
|
||||
@item devp-sunxi
|
||||
@ul
|
||||
@item Добавлен драйвер управления общими элементами платформы SUNXI
|
||||
@endul
|
||||
@endul
|
||||
|
||||
@prev{./00-UserGuide.html|table_of_articles||21}
|
||||
|
@ -5,7 +5,7 @@
|
||||
################################################################
|
||||
|
||||
export GENDOC_PROJECT_NAME="Руководство пользователя"
|
||||
export GENDOC_PROJECT_BRIEF="Руководство пользователя пакета поддержки платы OrangePi-PC на основе интегральной микросхемы Allwinner-H3 под ЗОСРВ «Нейтрино»"
|
||||
export GENDOC_PROJECT_BRIEF="Руководство пользователя пакета поддержки платы OrangePi PC на основе интегральной микросхемы Allwinner H3 под ЗОСРВ «Нейтрино»"
|
||||
|
||||
export GENDOC_PROJECT_VERSION=""
|
||||
export GENDOC_IGNORE_MISSING_AUTOLINK_ERRORS="yes"
|
||||
|
@ -26,7 +26,7 @@
|
||||
|
||||
startup-orangepi -vvv
|
||||
|
||||
PATH=:/proc/boot:/bin:/usr/bin:/sbin:/usr/sbin LD_LIBRARY_PATH=:/proc/boot:/lib:/usr/lib:/lib/dll procnto-smp -vvv -ae
|
||||
PATH=/proc/boot:/bin:/usr/bin:/sbin:/usr/sbin LD_LIBRARY_PATH=/proc/boot:/lib:/usr/lib:/lib/dll procnto-smp -vvv -ae
|
||||
}
|
||||
|
||||
[+script] .script = {
|
||||
@ -40,6 +40,12 @@
|
||||
slogger -s 16384k
|
||||
pipe
|
||||
|
||||
#######################################################################
|
||||
## Platform driver
|
||||
#######################################################################
|
||||
display_msg Starting Platform driver...
|
||||
platform-control -dsunxi &
|
||||
waitfor /dev/platform
|
||||
|
||||
#######################################################################
|
||||
## UART driver
|
||||
@ -74,10 +80,12 @@
|
||||
SYSNAME=nto
|
||||
TERM=qansi
|
||||
HOME=/
|
||||
PATH=:/proc/boot:/bin:/usr/bin:/sbin:/usr/sbin:/opt/bin:/usr/photon/bin
|
||||
LD_LIBRARY_PATH=:/proc/boot:/lib:/usr/lib:/lib/dll:/opt/lib
|
||||
PATH=/proc/boot:/bin:/usr/bin:/sbin:/usr/sbin:/opt/bin:/usr/photon/bin
|
||||
LD_LIBRARY_PATH=/proc/boot:/lib:/usr/lib:/lib/dll:/opt/lib
|
||||
|
||||
random -t
|
||||
|
||||
devc-pty
|
||||
|
||||
#######################################################################
|
||||
## Network driver
|
||||
@ -85,6 +93,8 @@
|
||||
display_msg Starting Network driver...
|
||||
io-pkt-v4-hc-ksz -dsun8i
|
||||
ifconfig sun0 192.168.1.2/24 up
|
||||
waitfor /dev/random
|
||||
# [argv0=/usr/sbin/sshd] sshd
|
||||
|
||||
[+session] sh &
|
||||
}
|
||||
@ -106,11 +116,14 @@ libc.so
|
||||
libm.so
|
||||
libz.so
|
||||
libc.so.3
|
||||
libcrypto.so.2
|
||||
[type=link] /lib/libc.so=/proc/boot/libc.so.3
|
||||
[type=link] /lib/libc.so.2=/proc/boot/libc.so.3
|
||||
[type=link] /lib/libc.so.3=/proc/boot/libc.so.3
|
||||
[type=link] /usr/lib/ldqnx.so.2=/proc/boot/libc.so.3
|
||||
|
||||
[type=link] /usr/lib/libcrypto.so=/proc/boot/libcrypto.so.2
|
||||
[type=link] /usr/lib/libcrypto.so.1=/proc/boot/libcrypto.so.2
|
||||
[type=link] /usr/lib/libcrypto.so.2=/proc/boot/libcrypto.so.2
|
||||
|
||||
###########################################################################
|
||||
## Библиотеки работы с диском и файловые системы
|
||||
@ -146,6 +159,13 @@ devnp-sun8i.so
|
||||
|
||||
|
||||
[data=c]
|
||||
|
||||
###########################################################################
|
||||
## Platform driver
|
||||
###########################################################################
|
||||
platform-control
|
||||
devp-sunxi.so
|
||||
|
||||
#######################################################################
|
||||
## Драйверы последовательных портов
|
||||
#######################################################################
|
||||
@ -207,7 +227,12 @@ sloginfo
|
||||
sleep
|
||||
date
|
||||
df
|
||||
|
||||
sshd
|
||||
awk
|
||||
cut
|
||||
printf
|
||||
sed
|
||||
tail
|
||||
|
||||
###########################################################################
|
||||
## Менеджеры ресурсов: PCI, сеть, графика, аудио, драйвер диска и т.д.
|
||||
@ -237,6 +262,34 @@ netstat
|
||||
route
|
||||
random
|
||||
|
||||
###########################################################################
|
||||
## Конфигурация ssh
|
||||
###########################################################################
|
||||
|
||||
#/root/.ssh/environment = {
|
||||
#PATH=/proc/boot:/bin:/usr/bin:/sbin:/usr/sbin
|
||||
#}
|
||||
|
||||
#/etc/passwd = {
|
||||
#root::0:0:Supervisor:/root:/bin/sh
|
||||
#sshd:x:15:6:sshd:/var/chroot/sshd:/bin/false
|
||||
#}
|
||||
|
||||
#/etc/ssh/sshd_config=../install/armle-v7/etc/ssh/sshd_config
|
||||
|
||||
#[perms=600 gid=0 uid=0] /etc/ssh/ssh_host_rsa_key=../install/armle-v7/etc/ssh/ssh_host_rsa_key
|
||||
#[perms=600 gid=0 uid=0] /etc/ssh/ssh_host_dsa_key=../install/armle-v7/etc/ssh/ssh_host_dsa_key
|
||||
#[perms=644 gid=0 uid=0] /etc/ssh/ssh_host_rsa_key.pub=../install/armle-v7/etc/ssh/ssh_host_rsa_key.pub
|
||||
#[perms=644 gid=0 uid=0] /etc/ssh/ssh_host_dsa_key.pub=../install/armle-v7/etc/ssh/ssh_host_dsa_key.pub
|
||||
|
||||
#[type=dir perms=750 gid=0 uid=0] /root/.ssh=../install/armle-v7/root/.ssh
|
||||
#[type=dir perms=755 gid=0 uid=0] /var/chroot/sshd=../install/armle-v7/var/chroot/sshd
|
||||
#[perms=600 gid=0 uid=0] /root/.ssh/authorized_keys=../install/armle-v7/root/.ssh/authorized_keys
|
||||
|
||||
#[type=link] /var/run=/tmp
|
||||
|
||||
#/usr/libexec/sftp-server=${KPDA_TARGET}/armle-v7/usr/libexec/sftp-server
|
||||
|
||||
###########################################################################
|
||||
## END OF BUILD SCRIPT
|
||||
###########################################################################
|
||||
|
16
prebuilt/armle-v7/etc/system/config/sunxi.conf
Обычный файл
16
prebuilt/armle-v7/etc/system/config/sunxi.conf
Обычный файл
@ -0,0 +1,16 @@
|
||||
# devg-sunxi.so parameters
|
||||
#
|
||||
# base Display controller registers base phys-address in format: "tcon:de:hdmi"
|
||||
# (default - auto-select)
|
||||
# irq Display controller interrupt id (default - polling mode)
|
||||
# memory Video memory size. Default/minimum GPU memory size - 64 Mb. This option causes
|
||||
# increasing initialization time.
|
||||
# verbose Verbosity level: "silent" (default), "info", "warn", "debug"
|
||||
#
|
||||
# The driver will use the first un-commented entry.
|
||||
|
||||
|
||||
# Allwinner H3 configuration sample
|
||||
irq=118,memory=64,verbose=debug
|
||||
#base=0x01C0C000:0x01000000:0x01EE0000,irq=118,memory=64,verbose=debug
|
||||
|
Двоичные данные
prebuilt/armle-v7/lib/dll/devg-sunxi.so
Исполняемый файл
Двоичные данные
prebuilt/armle-v7/lib/dll/devg-sunxi.so
Исполняемый файл
Двоичный файл не отображается.
Двоичные данные
prebuilt/armle-v7/lib/dll/devp-sunxi.so
Исполняемый файл
Двоичные данные
prebuilt/armle-v7/lib/dll/devp-sunxi.so
Исполняемый файл
Двоичный файл не отображается.
Двоичные данные
prebuilt/armle-v7/sbin/platform-control
Исполняемый файл
Двоичные данные
prebuilt/armle-v7/sbin/platform-control
Исполняемый файл
Двоичный файл не отображается.
@ -4,6 +4,12 @@
|
||||
|
||||
@remark io-pkt-* -d sun8i [опция[,опция ...]] ...
|
||||
|
||||
@param phy=число
|
||||
Адрес подключенного контроллера физического уровня (PHY).
|
||||
|
||||
@param priority=N
|
||||
Приоритет потока событий драйвера. Значение по умолчанию – `21`.
|
||||
|
||||
@caution
|
||||
Для разделения опций используется запятая (но не пробелы).
|
||||
@endcaution
|
||||
|
@ -193,26 +193,6 @@ int sun8i_entry(void *dll_hdl, struct _iopkt_self *iopkt, char *options)
|
||||
val |= BUS_SOFT_RST_REG2_EPHY_RST;
|
||||
out32(sun8i_args.clk_base + BUS_SOFT_RST_REG2, val);
|
||||
|
||||
// Set up system configuration for EMAC
|
||||
val = in32(sun8i_args.syscon_base + EMAC_CLK_REG);
|
||||
if (sun8i_args.use_internal_phy)
|
||||
{
|
||||
val &= ~H3_EPHY_DEFAULT_MASK;
|
||||
val |= H3_EPHY_DEFAULT_VALUE;
|
||||
val |= sun8i_args.phy_addr << H3_EPHY_ADDR_SHIFT;
|
||||
val &= ~H3_EPHY_SHUTDOWN;
|
||||
val |= H3_EPHY_SELECT;
|
||||
val |= H3_EPHY_LED_POL;
|
||||
val |= H3_EPHY_CLK_SEL;
|
||||
}
|
||||
else
|
||||
{
|
||||
val &= ~H3_EPHY_SELECT;
|
||||
}
|
||||
val &= ~(SC_ETCS_MASK | SC_EPIT);
|
||||
val &= ~SC_RMII_EN;
|
||||
out32(sun8i_args.syscon_base + EMAC_CLK_REG, val);
|
||||
|
||||
if (dev_attach("sun", NULL, &sun8i_ca, &sun8i_args, NULL, &dev, NULL) != EOK)
|
||||
{
|
||||
return ENODEV;
|
||||
@ -246,7 +226,7 @@ void sun8i_mdi_callback(void *handle, uint8_t phyaddr, uint8_t linkstate)
|
||||
struct ifnet *ifp = &sun8i->ec.ec_if;
|
||||
nic_config_t *cfg = &sun8i->cfg;
|
||||
|
||||
slogf(_SLOGC_NETWORK, _SLOG_INFO, "%s:%d phyaddr = %d linkstate = %d devidx = %d", __func__, __LINE__, phyaddr, linkstate, cfg->device_index);
|
||||
slogf(_SLOGC_NETWORK, _SLOG_INFO, "%s:%d phyaddr = %d linkstate = %#x devidx = %d", __func__, __LINE__, phyaddr, linkstate, cfg->device_index);
|
||||
|
||||
switch (linkstate)
|
||||
{
|
||||
@ -300,9 +280,9 @@ void sun8i_mdi_callback(void *handle, uint8_t phyaddr, uint8_t linkstate)
|
||||
|
||||
break;
|
||||
}
|
||||
slogf(_SLOGC_NETWORK, _SLOG_INFO, "%s:%d - Link up (%s) if=%d mode = %d", __func__, __LINE__, s, cfg->device_index, mode);
|
||||
slogf(_SLOGC_NETWORK, _SLOG_INFO, "%s:%d - Link up (%s) if=%d mode = %#x", __func__, __LINE__, s, cfg->device_index, mode);
|
||||
|
||||
val = (sun8i->emac_base + EMAC_CTL0);
|
||||
val = in32(sun8i->emac_base + EMAC_CTL0);
|
||||
if (cfg->duplex)
|
||||
{
|
||||
val |= EMAC_CTL0_FULL_DUPLEX;
|
||||
@ -428,14 +408,15 @@ int sun8i_attach(struct device *parent __attribute__((unused)), struct device *s
|
||||
sun8i->cfg.duplex = -1;
|
||||
sun8i->cfg.mtu = ETHERMTU;
|
||||
sun8i->cfg.mru = ETHERMTU;
|
||||
sun8i->cfg.flags |= NIC_FLAG_MULTICAST;
|
||||
sun8i->cfg.phy_addr = sun8i_args->phy_addr;
|
||||
// sun8i->cfg.flags |= NIC_FLAG_MULTICAST;
|
||||
|
||||
strcpy(ifp->if_xname, sun8i->dev.dv_xname);
|
||||
strcpy((char *) sun8i->cfg.uptype, "en");
|
||||
strcpy((char *) sun8i->cfg.device_description, "sun8i");
|
||||
|
||||
ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST;
|
||||
ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX;
|
||||
// ifp->if_flags = | IFF_MULTICAST;
|
||||
ifp->if_ioctl = sun8i_ioctl;
|
||||
ifp->if_start = sun8i_start;
|
||||
ifp->if_init = sun8i_init;
|
||||
@ -455,11 +436,29 @@ int sun8i_attach(struct device *parent __attribute__((unused)), struct device *s
|
||||
slogf(_SLOGC_NETWORK, _SLOG_ERROR, "devnp-sun8i: error parsing options");
|
||||
return err;
|
||||
}
|
||||
if (!sun8i->cfg.num_irqs)
|
||||
|
||||
sun8i->cfg.irq[0] = SUN8I_H3_INTERRUPT;
|
||||
sun8i->cfg.num_irqs = 1;
|
||||
|
||||
// Set up system configuration for EMAC
|
||||
val = in32(sun8i_args->syscon_base + EMAC_CLK_REG);
|
||||
if (sun8i_args->use_internal_phy)
|
||||
{
|
||||
sun8i->cfg.irq[0] = SUN8I_H3_INTERRUPT;
|
||||
++sun8i->cfg.num_irqs;
|
||||
val &= ~H3_EPHY_DEFAULT_MASK;
|
||||
val |= H3_EPHY_DEFAULT_VALUE;
|
||||
val |= sun8i->cfg.phy_addr << H3_EPHY_ADDR_SHIFT;
|
||||
val &= ~H3_EPHY_SHUTDOWN;
|
||||
val |= H3_EPHY_SELECT;
|
||||
val |= H3_EPHY_LED_POL;
|
||||
val |= H3_EPHY_CLK_SEL;
|
||||
}
|
||||
else
|
||||
{
|
||||
val &= ~H3_EPHY_SELECT;
|
||||
}
|
||||
val &= ~(SC_ETCS_MASK | SC_EPIT);
|
||||
val &= ~SC_RMII_EN;
|
||||
out32(sun8i_args->syscon_base + EMAC_CLK_REG, val);
|
||||
|
||||
val = in32(sun8i->emac_base + EMAC_CTL1);
|
||||
|
||||
@ -596,6 +595,9 @@ int sun8i_init(struct ifnet *ifp)
|
||||
ifp->if_flags_tx |= IFF_OACTIVE;
|
||||
NW_SIGUNLOCK_P(&ifp->if_snd_ex, iopkt, wtp);
|
||||
|
||||
sun8i->cfg.mtu = ETHERMTU;
|
||||
sun8i->cfg.mru = ETHERMTU;
|
||||
|
||||
sun8i_stop(ifp, 0);
|
||||
|
||||
// Clean EMAC registers
|
||||
@ -779,8 +781,9 @@ void sun8i_stop(struct ifnet *ifp, int disable)
|
||||
desc = SUN8I_DESC(&sun8i->rxb, i);
|
||||
desc->addr = 0;
|
||||
desc->status = 0;
|
||||
desc->size = 0;
|
||||
|
||||
if (!sun8i->rxb.mbufs_set[i])
|
||||
if (sun8i->rxb.mbufs_set[i])
|
||||
{
|
||||
m_freem(sun8i->rxb.mbufs_set[i]);
|
||||
sun8i->rxb.mbufs_set[i] = NULL;
|
||||
@ -794,7 +797,7 @@ void sun8i_stop(struct ifnet *ifp, int disable)
|
||||
desc->status = 0;
|
||||
desc->size = 0;
|
||||
|
||||
if (!sun8i->txb.mbufs_set[i])
|
||||
if (sun8i->txb.mbufs_set[i])
|
||||
{
|
||||
m_freem(sun8i->txb.mbufs_set[i]);
|
||||
sun8i->txb.mbufs_set[i] = NULL;
|
||||
@ -809,12 +812,12 @@ void sun8i_reap(sun8i_dev_t *sun8i)
|
||||
sun8i_desc_t *desc = NULL;
|
||||
desc_buffer_t *txb = &sun8i->txb;
|
||||
|
||||
cnt = txb->cnt;
|
||||
if (txb->free_cnt == txb->cnt)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
cnt = txb->cnt - txb->free_cnt;
|
||||
while (cnt)
|
||||
{
|
||||
desc = SUN8I_DESC(txb, txb->tail);
|
||||
@ -850,10 +853,6 @@ void sun8i_reap(sun8i_dev_t *sun8i)
|
||||
txb->tail = (txb->tail + 1) % txb->cnt;
|
||||
++txb->free_cnt;
|
||||
|
||||
if (!txb->free_cnt)
|
||||
{
|
||||
break;
|
||||
}
|
||||
--cnt;
|
||||
}
|
||||
}
|
||||
@ -881,7 +880,7 @@ void sun8i_start(struct ifnet *ifp)
|
||||
|
||||
for (;;)
|
||||
{
|
||||
if (txb->free_cnt < CONFIG_TX_DESCR_NUM / 2)
|
||||
if (txb->free_cnt < SUN8I_UNUSED_DESCR)
|
||||
{
|
||||
sun8i_reap(sun8i);
|
||||
}
|
||||
@ -899,10 +898,10 @@ void sun8i_start(struct ifnet *ifp)
|
||||
}
|
||||
}
|
||||
|
||||
if ((num_frag) > txb->free_cnt)
|
||||
if (num_frag > txb->free_cnt)
|
||||
{
|
||||
sun8i_reap(sun8i);
|
||||
if ((num_frag + 2) > txb->free_cnt)
|
||||
if (num_frag > txb->free_cnt)
|
||||
{
|
||||
ifp->if_flags_tx |= IFF_OACTIVE;
|
||||
sun8i->start_running = 0;
|
||||
@ -1125,7 +1124,7 @@ void sun8i_receive(sun8i_dev_t *sun8i)
|
||||
|
||||
while (!(desc->status & RX_DESC_CTL))
|
||||
{
|
||||
if (rxb->cnt - rxb->free_cnt > CONFIG_RX_DESCR_NUM / 2)
|
||||
if (rxb->cnt - rxb->free_cnt > SUN8I_UNUSED_DESCR)
|
||||
{
|
||||
sun8i_alloc_mbufs(sun8i);
|
||||
}
|
||||
@ -1139,6 +1138,7 @@ void sun8i_receive(sun8i_dev_t *sun8i)
|
||||
desc->addr = 0;
|
||||
|
||||
rm = rxb->mbufs_set[rxb->head];
|
||||
rxb->mbufs_set[rxb->head] = NULL;
|
||||
rm->m_len = len;
|
||||
rm->m_pkthdr.rcvif = ifp;
|
||||
|
||||
@ -1233,7 +1233,7 @@ int sun8i_process_interrupt(void *arg, struct nw_work_thread *wtp)
|
||||
if (!sun8i->start_running)
|
||||
{
|
||||
NW_SIGLOCK_P(&ifp->if_snd_ex, iopkt, wtp);
|
||||
if (sun8i->txb.free_cnt < CONFIG_TX_DESCR_NUM / 2)
|
||||
if (sun8i->txb.free_cnt < SUN8I_UNUSED_DESCR)
|
||||
{
|
||||
sun8i_reap(sun8i);
|
||||
}
|
||||
|
@ -151,6 +151,8 @@
|
||||
#define RX_DESC_FRM_SIZE_MASK GENMASK32(16, 29)
|
||||
#define RX_DESC_FRM_SIZE(status) (((status) & RX_DESC_FRM_SIZE_MASK) >> 16)
|
||||
|
||||
#define SUN8I_UNUSED_DESCR 2
|
||||
|
||||
#define CONFIG_SYS_HZ 1000
|
||||
#define CONFIG_MDIO_TIMEOUT (3 * CONFIG_SYS_HZ)
|
||||
#define EMAC_SOFT_RESET_TIMEOUT_USEC (100 * 1000)
|
||||
|
Загрузка…
Ссылка в новой задаче
Block a user