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/tag/release-2021-v3)
|
||||||
- [Руководство пользователя](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/download/release-2021-v3/UserManual.pdf)
|
||||||
|
|
||||||
## Поддерживаемые редакции Нейтрино
|
## Поддерживаемые редакции Нейтрино
|
||||||
|
|
||||||
@ -96,3 +96,5 @@ echo "tftpboot 0x41000000 $image; go 0x41000000" > $TFTP_SERIAL
|
|||||||
| NET | + | + | |
|
| NET | + | + | |
|
||||||
| SD | + | + | Версия исходного кода драйвера - 57d005663e |
|
| SD | + | + | Версия исходного кода драйвера - 57d005663e |
|
||||||
| MMC | + | + | Версия исходного кода драйвера - 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 Аннотация
|
@par Аннотация
|
||||||
|
|
||||||
@brief Данный документ представляет собой руководство пользователя для пакета поддержки платы OrangePi-PC на основе интегральной микросхемы Allwinner-H3 под ЗОСРВ «Нейтрино».
|
@brief Данный документ представляет собой руководство пользователя для пакета поддержки платы OrangePi PC на основе интегральной микросхемы Allwinner H3 под ЗОСРВ «Нейтрино».
|
||||||
|
|
||||||
Процессорная архитектура: ARMv7 Little Endian
|
Процессорная архитектура: ARMv7 Little Endian
|
||||||
@hide @arch{armv7} @endhide
|
@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.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-Plus.html}OrangePi PC Plus (v1.1)@endlink
|
||||||
|
|
||||||
Документ включает следующие разделы:
|
Документ включает следующие разделы:
|
||||||
@ul
|
@ul
|
||||||
@ -17,6 +17,7 @@
|
|||||||
@item Состав и структура
|
@item Состав и структура
|
||||||
@item Установка и настройка
|
@item Установка и настройка
|
||||||
@item Загрузка образа ОС
|
@item Загрузка образа ОС
|
||||||
|
@item Запуск тестового проекта
|
||||||
@item Описание компонентов
|
@item Описание компонентов
|
||||||
@item Проверка функционирования
|
@item Проверка функционирования
|
||||||
@item Известные особенности
|
@item Известные особенности
|
||||||
@ -33,11 +34,13 @@
|
|||||||
|
|
||||||
В разделе «Загрузка образа ОС» приведены сведения о вариантах запуска загружаемого образа ЗОСРВ «Нейтрино» на целевой системе.
|
В разделе «Загрузка образа ОС» приведены сведения о вариантах запуска загружаемого образа ЗОСРВ «Нейтрино» на целевой системе.
|
||||||
|
|
||||||
|
В разделе «Запуск тестового проекта» приведены указания по подключению к инструментальной системе по протоколу SSH, созданию и запуску тестового проекта.
|
||||||
|
|
||||||
В разделе «Описание компонентов» приведены описания компонентов ППМ.
|
В разделе «Описание компонентов» приведены описания компонентов ППМ.
|
||||||
|
|
||||||
В разделе «Проверка функционирования» приведены указания по проверке работоспособности пакета поддержки.
|
В разделе «Проверка функционирования» приведены указания по проверке работоспособности пакета поддержки.
|
||||||
|
|
||||||
В разделе «Известные особенности» приведены известные особбености и ограничения текущей версии пакета поддержки.
|
В разделе «Известные особенности» приведены известные особености и ограничения текущей версии пакета поддержки.
|
||||||
|
|
||||||
@group table_of_articles
|
@group table_of_articles
|
||||||
@@table[width:40:60:width] Раздел @| Описание
|
@@table[width:40:60:width] Раздел @| Описание
|
||||||
|
@ -6,12 +6,15 @@
|
|||||||
@term ЗОСРВ
|
@term ЗОСРВ
|
||||||
@use защищенная операционная система реального времени
|
@use защищенная операционная система реального времени
|
||||||
|
|
||||||
|
@term КР
|
||||||
|
@use комплект разработчика
|
||||||
|
|
||||||
@term ПМ
|
@term ПМ
|
||||||
@use процессорный модуль
|
@use процессорный модуль
|
||||||
|
|
||||||
@term ППМ
|
@term ППМ
|
||||||
@term BSP
|
@term BSP
|
||||||
@use пакет поддержки микропроцессора
|
@use пакет поддержки модуля
|
||||||
@enddl
|
@enddl
|
||||||
|
|
||||||
@prev{./00-UserGuide.html|table_of_articles||1}
|
@prev{./00-UserGuide.html|table_of_articles||1}
|
||||||
|
@ -3,16 +3,16 @@
|
|||||||
@brief Общие сведения
|
@brief Общие сведения
|
||||||
|
|
||||||
@br
|
@br
|
||||||
Пакет поддержки платы OrangePi-PC (ППМ) предназначен для обеспечения запуска и функционирования ЗОСРВ «Нейтрино» на процессорном модуле (ПМ) на на основе интегральной микросхемы Allwinner-H3.
|
Пакет поддержки платы (модуля) OrangePi PC (ППМ) предназначен для обеспечения запуска и функционирования ЗОСРВ «Нейтрино» на процессорном модуле (ПМ) на основе интегральной микросхемы Allwinner H3.
|
||||||
|
|
||||||
@br
|
@br
|
||||||
Для работы с ППМ необходим инструментальный ПК с установленным комплектом разработчика для ЗОСРВ «Нейтрино» в варианте _Linux Host_ и целевая плата OrangePi-PC на основе интегральной микросхемы Allwinner-H3.
|
Для работы с ППМ необходим инструментальный ПК с установленным комплектом разработчика для ЗОСРВ «Нейтрино» в варианте Linux Host и целевая плата OrangePi PC на основе интегральной микросхемы Allwinner H3.
|
||||||
|
|
||||||
@br
|
@br
|
||||||
ППМ совместим со следующими редакциями ЗОСРВ «Нейтрино»: @b 2021, @b 2020 (ограниченно).
|
ППМ совместим со следующими редакциями ЗОСРВ «Нейтрино»: @b 2021, @b 2020 (ограниченно).
|
||||||
|
|
||||||
@br
|
@br
|
||||||
ППМ обеспечивает поддержку и функционирование следующих блоков и интерфейсов интегральной микросхемы Allwinner-H3:
|
ППМ обеспечивает поддержку и функционирование следующих блоков и интерфейсов интегральной микросхемы Allwinner H3:
|
||||||
@ul
|
@ul
|
||||||
@item процессорнные ядра Cortex-A7 в режиме SMP
|
@item процессорнные ядра Cortex-A7 в режиме SMP
|
||||||
@item контроллер прерываний GICv2
|
@item контроллер прерываний GICv2
|
||||||
@ -21,6 +21,7 @@
|
|||||||
@item USB (EHCI/OHCI)
|
@item USB (EHCI/OHCI)
|
||||||
@item Ethernet
|
@item Ethernet
|
||||||
@item SD/eMMC
|
@item SD/eMMC
|
||||||
|
@item HDMI
|
||||||
@endul
|
@endul
|
||||||
|
|
||||||
@prev{./00-UserGuide.html|table_of_articles||2}
|
@prev{./00-UserGuide.html|table_of_articles||2}
|
||||||
|
@ -6,9 +6,9 @@
|
|||||||
ППМ представляет собой архив, имеющий формат .tar.gz и имя вида «kpda-bsp-allwinner-h3-orangepipc-(версия-ОС)-(формат)-(дата)-(хэш-git).tar.gz».
|
ППМ представляет собой архив, имеющий формат .tar.gz и имя вида «kpda-bsp-allwinner-h3-orangepipc-(версия-ОС)-(формат)-(дата)-(хэш-git).tar.gz».
|
||||||
Назначение полей:
|
Назначение полей:
|
||||||
@ul
|
@ul
|
||||||
@item (версия-ОС) - версия ЗОСРВ для которой предназначен BSP
|
@item (версия-ОС) - версия ЗОСРВ для которой предназначен ППМ
|
||||||
@item (формат) - формат ППМ: @a src для версии с исходными кодами, @a bin для версии с бинарными компонентами
|
@item (формат) - формат ППМ: @a src для версии с исходными кодами, @a bin для версии с бинарными компонентами
|
||||||
@item (дата) - дата сборки и запаковки BSP в формате ГГГГММДД
|
@item (дата) - дата сборки и запаковки ППМ в формате ГГГГММДД
|
||||||
@item (хэш-git) - номер или хэш коммита системы контроля версией git
|
@item (хэш-git) - номер или хэш коммита системы контроля версией git
|
||||||
@endul
|
@endul
|
||||||
|
|
||||||
|
@ -2,22 +2,103 @@
|
|||||||
|
|
||||||
@brief Установка и настройка
|
@brief Установка и настройка
|
||||||
|
|
||||||
@br
|
@@item Получение архива ППМ
|
||||||
Распаковывать архив с ППМ следует на инструментальной машине @a x86_64 c ОС @a Linux с установленным комплектом разработчика ЗОСРВ «Нейтрино».
|
@@item Настройка SSH
|
||||||
|
@@item Сборка загрузочного образа
|
||||||
|
|
||||||
Для распаковки ППМ следует скопировать архив в рабочий каталог и выполнить команду:
|
@group bsp_get
|
||||||
|
|
||||||
|
@link{https://git.kpda.ru/BSP/kpda-bsp-allwinner-h3-orangepipc/releases}В публичном репозитории СВД ВС@endlink скачать архив с исходным кодом ППМ текущей версии в домашний каталог и распаковать его:
|
||||||
|
|
||||||
@output{shell}
|
@output{shell}
|
||||||
$ tar xzf kpda-bsp-allwinner-h3-orangepipc-*.tar.gz
|
$ cd ~
|
||||||
|
$ tar -xzf имя_архива.tar.gz
|
||||||
@endoutput
|
@endoutput
|
||||||
|
|
||||||
Для сборки ППМ выполните следующие команды:
|
@group ssh_setup
|
||||||
|
|
||||||
|
Приведенные в данном разделе действия необязательны и выполняются в случае последующей кросс-разработки в среде КР.
|
||||||
|
|
||||||
|
@br
|
||||||
|
В файле построения образа ~/kpda-bsp-allwinner-h3-orangepipc/images/orangepi.build раскомментировать секцию "Конфигурация ssh" и строку запуска sshd:
|
||||||
|
|
||||||
@output{shell}
|
@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
|
$ make
|
||||||
@endoutput
|
@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}
|
@prev{./00-UserGuide.html|table_of_articles||4}
|
||||||
|
163
docs/05-Boot.dox
163
docs/05-Boot.dox
@ -2,36 +2,110 @@
|
|||||||
|
|
||||||
@brief Загрузка образа ОС
|
@brief Загрузка образа ОС
|
||||||
|
|
||||||
|
@@item Подготовка SD карты
|
||||||
|
@@item Загрузка образа с SD карты
|
||||||
@@item Загрузка образа по сети
|
@@item Загрузка образа по сети
|
||||||
@@item Загрузка образа с SD карты памяти
|
|
||||||
@@item Результат загрузки образа
|
@@item Результат загрузки образа
|
||||||
@@item Сохранение варианта загрузки по-умолчанию
|
@@item Сохранение варианта загрузки по умолчанию
|
||||||
|
|
||||||
@group boot_net
|
@group sd_prepare
|
||||||
|
|
||||||
Для загрузки образа ЗОСРВ «Нейтрино» на ПМ по сети используется протокол TFTP. На инструментальной системе необходимо настроить TFTP сервер и скопировать полученный загрузочный образ @c ifs-h3-orangepi.bin в каталог, использующийся TFTP сервером.
|
Для обеспечения доступа к плате по интерфейсу UART и Ethernet, загрузки ЗОСРВ «Нейтрино» и работы с файловыми системами необходимо установить загрузчик U-Boot на SD-карту и создать на ней разделы. Для этого на инструментальной системе выполнить следующие действия:
|
||||||
|
|
||||||
@br
|
@br
|
||||||
Затем следует подключить отладочный USB-UART ПМ к USB порту инструментального ПК, проверить наличие устройства `/dev/ttyUSB*` и запустить терминальную программу, например, minicom со следующими параметрами: скорость 115200, 8 бит, без контроля четности, 1 стоп-бит, порт `/dev/ttyUSB0`.
|
Подключить SD карту к инструментальной системе и копировать на нее загрузчик U-Boot:
|
||||||
|
|
||||||
@br
|
|
||||||
После включения питания ПМ в терминальной программе должен присутствовать отладочный вывод загрузчика U-Boot. Например:
|
|
||||||
|
|
||||||
@output{shell}
|
@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
|
DRAM: 1024 MiB
|
||||||
Trying to boot from MMC1
|
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)
|
CPU: Allwinner H3 (SUN8I 1680)
|
||||||
Model: Xunlong Orange Pi PC
|
Model: Xunlong Orange Pi PC
|
||||||
DRAM: 1 GiB
|
DRAM: 1 GiB
|
||||||
|
Core: 38 devices, 15 uclasses, devicetree: separate
|
||||||
|
WDT: Not starting watchdog@1c20ca0
|
||||||
MMC: mmc@1c0f000: 0
|
MMC: mmc@1c0f000: 0
|
||||||
Loading Environment from FAT... Unable to use mmc 0:1... In: serial@1c28000
|
Loading Environment from FAT... OK
|
||||||
Out: serial@1c28000
|
In: serial
|
||||||
Err: serial@1c28000
|
Out: serial
|
||||||
|
Err: serial
|
||||||
Net: phy interface0
|
Net: phy interface0
|
||||||
eth0: ethernet@1c30000
|
eth0: ethernet@1c30000
|
||||||
starting USB...
|
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@1c1d000 for devices... 1 USB Device(s) found
|
||||||
scanning bus usb@1c1d400 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
|
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
|
@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
|
@br
|
||||||
Для загрузки образа ЗОСРВ «Нейтрино» cледует остановить загрузку и в консоли загрузчика U-Boot выполнить следующие команды:
|
Подключить плату через кабель Ethernet к локальной сети, в которой находится инструментальная система. В консоли загрузчика U-Boot указать IP-адрес TFTP-сервера и назначить IP-адрес клиента (платы):
|
||||||
@ul
|
|
||||||
@item Указать IP-адрес TFTP сервера:
|
|
||||||
|
|
||||||
@output{shell}
|
@output{shell}
|
||||||
=> setenv serverip 172.16.0.16
|
=> setenv serverip <IP-адрес TFTP-сервера>
|
||||||
=> setenv gatewayip 172.16.0.16
|
=> setenv ipaddr <IP-адрес TFTP-клиента>
|
||||||
@endoutput
|
@endoutput
|
||||||
|
|
||||||
@item Установить IP-адрес модулю, для организации обмена по протоколу TFTP:
|
Загрузить образ ЗОСРВ «Нейтрино» по протоколу TFTP и запустить его:
|
||||||
|
|
||||||
@output{shell}
|
@output{shell}
|
||||||
=> setenv ipaddr 172.16.10.44
|
=> tftpboot 0x41000000 ifs-h3-orangepi.bin
|
||||||
@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
|
|
||||||
=> go 0x41000000
|
=> go 0x41000000
|
||||||
@endoutput
|
@endoutput
|
||||||
|
|
||||||
|
|
||||||
@group boot_kpda
|
@group boot_kpda
|
||||||
|
|
||||||
В результате выполнения приведенных выше команд должен запуститься образ ЗОСРВ, выведены сообщения о ходе загрузки и запущен командный интерпретатор. Пример вывода:
|
В результате выполнения приведенных выше команд должен запуститься образ ЗОСРВ «Нейтрино», выведены сообщения о ходе загрузки и запущен командный интерпретатор. Пример вывода:
|
||||||
|
|
||||||
@output{shell}
|
@output{shell}
|
||||||
System page at phys:40022000 user:fc410000 kern:fc410000
|
System page at phys:40022000 user:fc410000 kern:fc410000
|
||||||
@ -112,14 +185,20 @@ Starting Network driver...
|
|||||||
#
|
#
|
||||||
@endoutput
|
@endoutput
|
||||||
|
|
||||||
|
Все системные утилиты расположены в файловой системе загрузочного образа. При необходимости использования файловой системы Power-Safe SD карты с дополнительными утилитами из каталога `/usr/bin` можно подключить её следующей командой:
|
||||||
|
|
||||||
|
@output{shell}
|
||||||
|
# mount -t qnx6 /dev/sd0t179 /
|
||||||
|
@endoutput
|
||||||
|
|
||||||
|
|
||||||
@group boot_auto
|
@group boot_auto
|
||||||
|
|
||||||
Для сохранения параметров загрузки и выполнения требуемого вариант загрузки по-умолчанию автоматически при включении питании модуля, в консоли U-Boot установите переменную окружения @b bootcmd и сохраните значение переменных c помощью команды @b saveenv, например:
|
Для сохранения параметров загрузки и выполнения требуемого варианта загрузки по умолчанию автоматически при включении питании модуля в консоли U-Boot установите переменную окружения @b bootcmd и сохраните значение переменных c помощью команды @b saveenv, например:
|
||||||
|
|
||||||
@output{shell}
|
@output{shell}
|
||||||
=> setenv kpdaboot_net “tftpboot 0x41000000 ifs-h3-orangepi.bin; go 0x41000000”
|
=> setenv kpdaboot “fatload mmc 0 0x41000000 ifs-h3-orangepi.bin; go 0x41000000”
|
||||||
=> setenv bootcmd run kpdaboot_net
|
=> setenv bootcmd run kpdaboot
|
||||||
=> saveenv
|
=> saveenv
|
||||||
@endoutput
|
@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-ehci.so} @endcenter @| Драйвер для USB-контроллеров с усовершенствованным интерфейсом хост-контроллера (EHCI)
|
||||||
@tr @center @l{devu-ohci.so} @endcenter @| Драйвер для USB-контроллеров с открытым интерфейсом хост-контроллера (Open Host Controller Interface, OHCI)
|
@tr @center @l{devu-ohci.so} @endcenter @| Драйвер для USB-контроллеров с открытым интерфейсом хост-контроллера (Open Host Controller Interface, OHCI)
|
||||||
@tr @center @l{devb-sdmmc} @endcenter @| Драйвер для SD/eMMC контроллеров
|
@tr @center @l{devb-sdmmc} @endcenter @| Драйвер для SD/eMMC контроллеров
|
||||||
|
@tr @center @l{devp-sunxi} @endcenter @| Драйвер управления общими элементами платформы SUNXI
|
||||||
|
@tr @center @l{devg-sunxi} @endcenter @| Драйвер графического контроллера Allwinner SoC
|
||||||
@endtable
|
@endtable
|
||||||
|
|
||||||
@hint
|
@hint
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
@page "Verification" Проверка функционирования
|
@page "Verification" Проверка функционирования
|
||||||
|
|
||||||
@brief Проверка функционирования ППМ OrangePi-PC Allwinner-H3 под ЗОСРВ «Нейтрино».
|
@brief Проверка функционирования ППМ OrangePi PC Allwinner H3 под ЗОСРВ «Нейтрино».
|
||||||
|
|
||||||
|
|
||||||
@br
|
@br
|
||||||
@ -11,33 +11,35 @@
|
|||||||
@@@item Проверка функционирования контроллера DDR памяти
|
@@@item Проверка функционирования контроллера DDR памяти
|
||||||
@@@item Проверка функционирования контроллера прерываний
|
@@@item Проверка функционирования контроллера прерываний
|
||||||
@@@item Проверка функционирования таймера
|
@@@item Проверка функционирования таймера
|
||||||
|
@@@item Проверка функционирования подсистемы управления общими элементами платформ
|
||||||
@@@item Проверка работы ЗОСРВ на ЦП в режиме симметричной мультипроцессорности (SMP) с поддержкой всех CPU ядер типа Cortex-A7
|
@@@item Проверка работы ЗОСРВ на ЦП в режиме симметричной мультипроцессорности (SMP) с поддержкой всех CPU ядер типа Cortex-A7
|
||||||
@@item Проверки интерфейсов
|
@@item Проверки интерфейсов
|
||||||
@@@item Проверка драйвера контроллера UART
|
@@@item Проверка драйвера контроллера UART
|
||||||
@@@item Проверка драйвера контроллера Gigabit Ethernet
|
@@@item Проверка драйвера контроллера Gigabit Ethernet
|
||||||
@@@item Проверка драйвера контроллера USB
|
@@@item Проверка драйвера контроллера USB
|
||||||
@@@item Проверка драйвера контроллера SD/MMC
|
@@@item Проверка драйвера контроллера SD/MMC
|
||||||
|
@@@item Проверка драйвера контроллера HDMI
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@par Тестовый стенд
|
@par Тестовый стенд
|
||||||
|
|
||||||
Тестовый стенд представляет из себя отладочный модуль OrangePi-PC, соединённый с инструментальным ПК по интерфейсам RS-232 и Ethernet.
|
Тестовый стенд представляет из себя отладочный модуль OrangePi PC, соединённый с инструментальным ПК по интерфейсам RS-232 и Ethernet.
|
||||||
|
|
||||||
@br
|
@br
|
||||||
На инструментальный ПК должно быть установлено:
|
На инструментальный ПК должно быть установлено:
|
||||||
@ul
|
@ul
|
||||||
@item ОС семейства GNU Linux, например, Ubuntu 20.04
|
@item ОС семейства GNU Linux, например, Ubuntu 20.04
|
||||||
@item Комплект разработчика для ЗОСРВ «Нейтрино»
|
@item Комплект разработчика для ЗОСРВ «Нейтрино»
|
||||||
@item ППМ OrangePi-PC Allwinner-H3
|
@item ППМ OrangePi PC Allwinner H3
|
||||||
@item Терминальная программа для отладочной консоли модуля OrangePi-PC, например, minicom
|
@item Терминальная программа для отладочной консоли модуля OrangePi PC, например, minicom
|
||||||
@endul
|
@endul
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@par Подготовка
|
@par Подготовка
|
||||||
|
|
||||||
Перед проведением проверок необходимо запустить ЗОСРВ «Нейтрино» на отладочном модуле OrangePi-PC в соответствии с главой документации @link{./Boot.html}Загрузка образа ОС@endlink.
|
Перед проведением проверок необходимо запустить ЗОСРВ «Нейтрино» на отладочном модуле OrangePi PC в соответствии с главой документации @link{./Boot.html}Загрузка образа ОС@endlink.
|
||||||
|
|
||||||
@br
|
@br
|
||||||
Дополнительные тестовые программы @a rr, @a ticksize и другие не входят в состав ППМ и должны быть самостоятельно загружены из @link{https://git.kpda.ru/utils/hw}публичного git-репозитория@endlink и собраны командой:
|
Дополнительные тестовые программы @a rr, @a ticksize и другие не входят в состав ППМ и должны быть самостоятельно загружены из @link{https://git.kpda.ru/utils/hw}публичного git-репозитория@endlink и собраны командой:
|
||||||
@ -47,7 +49,7 @@ $ cd utils
|
|||||||
$ make install
|
$ make install
|
||||||
@endoutput
|
@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
|
1 procnto-smp -vvv -ae
|
||||||
2 slogger -s 16384k
|
2 slogger -s 16384k
|
||||||
3 pipe
|
3 pipe
|
||||||
4 devc-ser8250 -e -F -b115200 -c24000000/16 0x01C28000^2,32
|
4 platform-control -dsunxi
|
||||||
5 io-usb -dehci ioport=0x01c1b000,irq=106 -dohci ioport=0x01c1b400,irq=107
|
5 devc-ser8250 -e -F -b115200 -c24000000/16 0x01C28000^2,32
|
||||||
-dehci ioport=0x01c1c000,irq=108 -dohci ioport=0x01c1c400,irq=109
|
6 io-usb -dehci ioport=0x01c1b000,irq=106
|
||||||
-dehci ioport=0x01c1d000,irq=110 -dohci ioport=0x01c1d400,irq=111
|
-dohci ioport=0x01c1b400,irq=107
|
||||||
6 random -t
|
-dehci ioport=0x01c1c000,irq=108
|
||||||
7 io-pkt-v4-hc-ksz -dsun8i
|
-dohci ioport=0x01c1c400,irq=109
|
||||||
4103 sh
|
-dehci ioport=0x01c1d000,irq=110
|
||||||
4104 pidin ar
|
-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
|
@endoutput
|
||||||
|
|
||||||
|
|
||||||
@ -119,8 +127,7 @@ Processor4: 1091551349 Cortex A7 228MHz FPU
|
|||||||
1 2 procnto-smp
|
1 2 procnto-smp
|
||||||
1 3 procnto-smp
|
1 3 procnto-smp
|
||||||
1 4 procnto-smp
|
1 4 procnto-smp
|
||||||
0 0x1b 0 -P- @0xfe08a2c4:0x0
|
0 0x1b 0 -P- @0xfe08a4b8:0x0
|
||||||
1 5 procnto-smp
|
|
||||||
1 6 procnto-smp
|
1 6 procnto-smp
|
||||||
1 7 procnto-smp
|
1 7 procnto-smp
|
||||||
1 8 procnto-smp
|
1 8 procnto-smp
|
||||||
@ -131,39 +138,44 @@ Processor4: 1091551349 Cortex A7 228MHz FPU
|
|||||||
1 13 procnto-smp
|
1 13 procnto-smp
|
||||||
1 14 procnto-smp
|
1 14 procnto-smp
|
||||||
1 15 procnto-smp
|
1 15 procnto-smp
|
||||||
1 17 procnto-smp
|
1 16 procnto-smp
|
||||||
2 1 slogger
|
2 1 slogger
|
||||||
3 1 pipe
|
3 1 pipe
|
||||||
3 2 pipe
|
3 2 pipe
|
||||||
3 3 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
|
1 0x20 0 --- @0x804ab6c:0x805d1c0
|
||||||
5 1 io-usb
|
6 1 io-usb
|
||||||
2 0x6a 0 TP- =PULSE 0x40000008:21 0:0
|
2 0x6a 0 TP- =PULSE 0x40000008:21 0:0
|
||||||
3 0x6b 0 TP- =PULSE 0x4000000b:21 0:0
|
3 0x6c 0 TP- =PULSE 0x4000000e:21 0:0
|
||||||
4 0x6c 0 TP- =PULSE 0x4000000e:21 0:0
|
4 0x6e 0 TP- =PULSE 0x40000014:21 0:0
|
||||||
5 0x6d 0 TP- =PULSE 0x40000011:21 0:0
|
6 2 io-usb
|
||||||
6 0x6e 0 TP- =PULSE 0x40000014:21 0:0
|
6 3 io-usb
|
||||||
7 0x6f 0 TP- =PULSE 0x40000017:21 0:0
|
6 4 io-usb
|
||||||
5 2 io-usb
|
6 5 io-usb
|
||||||
5 3 io-usb
|
6 6 io-usb
|
||||||
5 4 io-usb
|
6 7 io-usb
|
||||||
5 5 io-usb
|
6 8 io-usb
|
||||||
5 6 io-usb
|
7 1 devb-sdmmc
|
||||||
5 7 io-usb
|
5 0x5c 1 TP- =PULSE 0x40000005:21 0x3:0
|
||||||
5 8 io-usb
|
7 2 devb-sdmmc
|
||||||
5 9 io-usb
|
7 3 devb-sdmmc
|
||||||
5 10 io-usb
|
7 4 devb-sdmmc
|
||||||
5 11 io-usb
|
7 5 devb-sdmmc
|
||||||
6 1 random
|
7 6 devb-sdmmc
|
||||||
6 2 random
|
7 7 devb-sdmmc
|
||||||
6 3 random
|
7 8 devb-sdmmc
|
||||||
7 1 io-pkt-v4-hc-ksz
|
8 1 random
|
||||||
7 2 io-pkt-v4-hc-ksz
|
8 2 random
|
||||||
8 0x72 0 T-- @0x78002d5c:0x818f2c0
|
8 3 random
|
||||||
7 3 io-pkt-v4-hc-ksz
|
9 1 io-pkt-v4-hc-ksz
|
||||||
4104 1 sh
|
9 2 io-pkt-v4-hc-ksz
|
||||||
4105 1 pidin
|
6 0x72 0 T-- @0x78002d5c:0x818f2c0
|
||||||
|
9 3 io-pkt-v4-hc-ksz
|
||||||
|
4106 1 sh
|
||||||
|
12299 1 pidin
|
||||||
@endoutput
|
@endoutput
|
||||||
|
|
||||||
Проверка считается пройденной успешно, если вывод утилиты @l{pidin|pidin ir} содержит информацию об обработчиках прерывания, принадлежащих выполняемым процессам, в формате
|
Проверка считается пройденной успешно, если вывод утилиты @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
|
@group base_smp
|
||||||
|
|
||||||
Для вывода информации о количестве процессоров выполнить команду @l{pidin|pidin info}:
|
Для вывода информации о количестве процессоров выполнить команду @l{pidin|pidin info}:
|
||||||
@ -292,7 +338,7 @@ round-trip min/avg/max = 0/0/0 ms variance = 0 ms^2
|
|||||||
|
|
||||||
@group bsp_usb
|
@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.
|
В случае успешного запуска драйвера в директории `/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
|
devu-ehci.so devu-ohci.so io-usb
|
||||||
@endoutput
|
@endoutput
|
||||||
|
|
||||||
Для проверки функционирования драйвера UART подключить ПМ к ПК через преобразователь по USB в один из разъемов и запустить терминальную программу @a minicom. В последовательном или удалённом терминале выполнить следующую команду:
|
Для получения списка подключенных @a usb устройств может быть использована утилита @a usb:
|
||||||
|
|
||||||
@output{shell}
|
@output{shell}
|
||||||
# usb
|
# 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
|
USB 5 (OHCI) v1.10, v1.01 DDK, v1.01 HCD
|
||||||
@endoutput
|
@endoutput
|
||||||
|
|
||||||
После подключения должно появиться новое устройство:
|
После подключения USB flash накопителя к ПМ должно появиться новое устройство:
|
||||||
|
|
||||||
@output{shell}
|
@output{shell}
|
||||||
# usb
|
# usb
|
||||||
@ -396,4 +442,46 @@ USB 5 (OHCI) v1.10, v1.01 DDK, v1.01 HCD
|
|||||||
@endoutput
|
@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}
|
@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 Журнал и история изменений компонентов пакета поддержки
|
@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}
|
@prev{./00-UserGuide.html|table_of_articles||21}
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
################################################################
|
################################################################
|
||||||
|
|
||||||
export GENDOC_PROJECT_NAME="Руководство пользователя"
|
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_PROJECT_VERSION=""
|
||||||
export GENDOC_IGNORE_MISSING_AUTOLINK_ERRORS="yes"
|
export GENDOC_IGNORE_MISSING_AUTOLINK_ERRORS="yes"
|
||||||
|
@ -26,7 +26,7 @@
|
|||||||
|
|
||||||
startup-orangepi -vvv
|
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 = {
|
[+script] .script = {
|
||||||
@ -40,6 +40,12 @@
|
|||||||
slogger -s 16384k
|
slogger -s 16384k
|
||||||
pipe
|
pipe
|
||||||
|
|
||||||
|
#######################################################################
|
||||||
|
## Platform driver
|
||||||
|
#######################################################################
|
||||||
|
display_msg Starting Platform driver...
|
||||||
|
platform-control -dsunxi &
|
||||||
|
waitfor /dev/platform
|
||||||
|
|
||||||
#######################################################################
|
#######################################################################
|
||||||
## UART driver
|
## UART driver
|
||||||
@ -74,10 +80,12 @@
|
|||||||
SYSNAME=nto
|
SYSNAME=nto
|
||||||
TERM=qansi
|
TERM=qansi
|
||||||
HOME=/
|
HOME=/
|
||||||
PATH=:/proc/boot:/bin:/usr/bin:/sbin:/usr/sbin:/opt/bin:/usr/photon/bin
|
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
|
LD_LIBRARY_PATH=/proc/boot:/lib:/usr/lib:/lib/dll:/opt/lib
|
||||||
|
|
||||||
random -t
|
random -t
|
||||||
|
|
||||||
|
devc-pty
|
||||||
|
|
||||||
#######################################################################
|
#######################################################################
|
||||||
## Network driver
|
## Network driver
|
||||||
@ -85,6 +93,8 @@
|
|||||||
display_msg Starting Network driver...
|
display_msg Starting Network driver...
|
||||||
io-pkt-v4-hc-ksz -dsun8i
|
io-pkt-v4-hc-ksz -dsun8i
|
||||||
ifconfig sun0 192.168.1.2/24 up
|
ifconfig sun0 192.168.1.2/24 up
|
||||||
|
waitfor /dev/random
|
||||||
|
# [argv0=/usr/sbin/sshd] sshd
|
||||||
|
|
||||||
[+session] sh &
|
[+session] sh &
|
||||||
}
|
}
|
||||||
@ -106,11 +116,14 @@ libc.so
|
|||||||
libm.so
|
libm.so
|
||||||
libz.so
|
libz.so
|
||||||
libc.so.3
|
libc.so.3
|
||||||
|
libcrypto.so.2
|
||||||
[type=link] /lib/libc.so=/proc/boot/libc.so.3
|
[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.2=/proc/boot/libc.so.3
|
||||||
[type=link] /lib/libc.so.3=/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/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]
|
[data=c]
|
||||||
|
|
||||||
|
###########################################################################
|
||||||
|
## Platform driver
|
||||||
|
###########################################################################
|
||||||
|
platform-control
|
||||||
|
devp-sunxi.so
|
||||||
|
|
||||||
#######################################################################
|
#######################################################################
|
||||||
## Драйверы последовательных портов
|
## Драйверы последовательных портов
|
||||||
#######################################################################
|
#######################################################################
|
||||||
@ -207,7 +227,12 @@ sloginfo
|
|||||||
sleep
|
sleep
|
||||||
date
|
date
|
||||||
df
|
df
|
||||||
|
sshd
|
||||||
|
awk
|
||||||
|
cut
|
||||||
|
printf
|
||||||
|
sed
|
||||||
|
tail
|
||||||
|
|
||||||
###########################################################################
|
###########################################################################
|
||||||
## Менеджеры ресурсов: PCI, сеть, графика, аудио, драйвер диска и т.д.
|
## Менеджеры ресурсов: PCI, сеть, графика, аудио, драйвер диска и т.д.
|
||||||
@ -237,6 +262,34 @@ netstat
|
|||||||
route
|
route
|
||||||
random
|
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
|
## 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 [опция[,опция ...]] ...
|
@remark io-pkt-* -d sun8i [опция[,опция ...]] ...
|
||||||
|
|
||||||
|
@param phy=число
|
||||||
|
Адрес подключенного контроллера физического уровня (PHY).
|
||||||
|
|
||||||
|
@param priority=N
|
||||||
|
Приоритет потока событий драйвера. Значение по умолчанию – `21`.
|
||||||
|
|
||||||
@caution
|
@caution
|
||||||
Для разделения опций используется запятая (но не пробелы).
|
Для разделения опций используется запятая (но не пробелы).
|
||||||
@endcaution
|
@endcaution
|
||||||
|
@ -193,26 +193,6 @@ int sun8i_entry(void *dll_hdl, struct _iopkt_self *iopkt, char *options)
|
|||||||
val |= BUS_SOFT_RST_REG2_EPHY_RST;
|
val |= BUS_SOFT_RST_REG2_EPHY_RST;
|
||||||
out32(sun8i_args.clk_base + BUS_SOFT_RST_REG2, val);
|
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)
|
if (dev_attach("sun", NULL, &sun8i_ca, &sun8i_args, NULL, &dev, NULL) != EOK)
|
||||||
{
|
{
|
||||||
return ENODEV;
|
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;
|
struct ifnet *ifp = &sun8i->ec.ec_if;
|
||||||
nic_config_t *cfg = &sun8i->cfg;
|
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)
|
switch (linkstate)
|
||||||
{
|
{
|
||||||
@ -300,9 +280,9 @@ void sun8i_mdi_callback(void *handle, uint8_t phyaddr, uint8_t linkstate)
|
|||||||
|
|
||||||
break;
|
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)
|
if (cfg->duplex)
|
||||||
{
|
{
|
||||||
val |= EMAC_CTL0_FULL_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.duplex = -1;
|
||||||
sun8i->cfg.mtu = ETHERMTU;
|
sun8i->cfg.mtu = ETHERMTU;
|
||||||
sun8i->cfg.mru = ETHERMTU;
|
sun8i->cfg.mru = ETHERMTU;
|
||||||
sun8i->cfg.flags |= NIC_FLAG_MULTICAST;
|
|
||||||
sun8i->cfg.phy_addr = sun8i_args->phy_addr;
|
sun8i->cfg.phy_addr = sun8i_args->phy_addr;
|
||||||
|
// sun8i->cfg.flags |= NIC_FLAG_MULTICAST;
|
||||||
|
|
||||||
strcpy(ifp->if_xname, sun8i->dev.dv_xname);
|
strcpy(ifp->if_xname, sun8i->dev.dv_xname);
|
||||||
strcpy((char *) sun8i->cfg.uptype, "en");
|
strcpy((char *) sun8i->cfg.uptype, "en");
|
||||||
strcpy((char *) sun8i->cfg.device_description, "sun8i");
|
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_ioctl = sun8i_ioctl;
|
||||||
ifp->if_start = sun8i_start;
|
ifp->if_start = sun8i_start;
|
||||||
ifp->if_init = sun8i_init;
|
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");
|
slogf(_SLOGC_NETWORK, _SLOG_ERROR, "devnp-sun8i: error parsing options");
|
||||||
return err;
|
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;
|
val &= ~H3_EPHY_DEFAULT_MASK;
|
||||||
++sun8i->cfg.num_irqs;
|
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);
|
val = in32(sun8i->emac_base + EMAC_CTL1);
|
||||||
|
|
||||||
@ -596,6 +595,9 @@ int sun8i_init(struct ifnet *ifp)
|
|||||||
ifp->if_flags_tx |= IFF_OACTIVE;
|
ifp->if_flags_tx |= IFF_OACTIVE;
|
||||||
NW_SIGUNLOCK_P(&ifp->if_snd_ex, iopkt, wtp);
|
NW_SIGUNLOCK_P(&ifp->if_snd_ex, iopkt, wtp);
|
||||||
|
|
||||||
|
sun8i->cfg.mtu = ETHERMTU;
|
||||||
|
sun8i->cfg.mru = ETHERMTU;
|
||||||
|
|
||||||
sun8i_stop(ifp, 0);
|
sun8i_stop(ifp, 0);
|
||||||
|
|
||||||
// Clean EMAC registers
|
// Clean EMAC registers
|
||||||
@ -779,8 +781,9 @@ void sun8i_stop(struct ifnet *ifp, int disable)
|
|||||||
desc = SUN8I_DESC(&sun8i->rxb, i);
|
desc = SUN8I_DESC(&sun8i->rxb, i);
|
||||||
desc->addr = 0;
|
desc->addr = 0;
|
||||||
desc->status = 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]);
|
m_freem(sun8i->rxb.mbufs_set[i]);
|
||||||
sun8i->rxb.mbufs_set[i] = NULL;
|
sun8i->rxb.mbufs_set[i] = NULL;
|
||||||
@ -794,7 +797,7 @@ void sun8i_stop(struct ifnet *ifp, int disable)
|
|||||||
desc->status = 0;
|
desc->status = 0;
|
||||||
desc->size = 0;
|
desc->size = 0;
|
||||||
|
|
||||||
if (!sun8i->txb.mbufs_set[i])
|
if (sun8i->txb.mbufs_set[i])
|
||||||
{
|
{
|
||||||
m_freem(sun8i->txb.mbufs_set[i]);
|
m_freem(sun8i->txb.mbufs_set[i]);
|
||||||
sun8i->txb.mbufs_set[i] = NULL;
|
sun8i->txb.mbufs_set[i] = NULL;
|
||||||
@ -809,12 +812,12 @@ void sun8i_reap(sun8i_dev_t *sun8i)
|
|||||||
sun8i_desc_t *desc = NULL;
|
sun8i_desc_t *desc = NULL;
|
||||||
desc_buffer_t *txb = &sun8i->txb;
|
desc_buffer_t *txb = &sun8i->txb;
|
||||||
|
|
||||||
cnt = txb->cnt;
|
|
||||||
if (txb->free_cnt == txb->cnt)
|
if (txb->free_cnt == txb->cnt)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cnt = txb->cnt - txb->free_cnt;
|
||||||
while (cnt)
|
while (cnt)
|
||||||
{
|
{
|
||||||
desc = SUN8I_DESC(txb, txb->tail);
|
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->tail = (txb->tail + 1) % txb->cnt;
|
||||||
++txb->free_cnt;
|
++txb->free_cnt;
|
||||||
|
|
||||||
if (!txb->free_cnt)
|
|
||||||
{
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
--cnt;
|
--cnt;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -881,7 +880,7 @@ void sun8i_start(struct ifnet *ifp)
|
|||||||
|
|
||||||
for (;;)
|
for (;;)
|
||||||
{
|
{
|
||||||
if (txb->free_cnt < CONFIG_TX_DESCR_NUM / 2)
|
if (txb->free_cnt < SUN8I_UNUSED_DESCR)
|
||||||
{
|
{
|
||||||
sun8i_reap(sun8i);
|
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);
|
sun8i_reap(sun8i);
|
||||||
if ((num_frag + 2) > txb->free_cnt)
|
if (num_frag > txb->free_cnt)
|
||||||
{
|
{
|
||||||
ifp->if_flags_tx |= IFF_OACTIVE;
|
ifp->if_flags_tx |= IFF_OACTIVE;
|
||||||
sun8i->start_running = 0;
|
sun8i->start_running = 0;
|
||||||
@ -1125,7 +1124,7 @@ void sun8i_receive(sun8i_dev_t *sun8i)
|
|||||||
|
|
||||||
while (!(desc->status & RX_DESC_CTL))
|
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);
|
sun8i_alloc_mbufs(sun8i);
|
||||||
}
|
}
|
||||||
@ -1139,6 +1138,7 @@ void sun8i_receive(sun8i_dev_t *sun8i)
|
|||||||
desc->addr = 0;
|
desc->addr = 0;
|
||||||
|
|
||||||
rm = rxb->mbufs_set[rxb->head];
|
rm = rxb->mbufs_set[rxb->head];
|
||||||
|
rxb->mbufs_set[rxb->head] = NULL;
|
||||||
rm->m_len = len;
|
rm->m_len = len;
|
||||||
rm->m_pkthdr.rcvif = ifp;
|
rm->m_pkthdr.rcvif = ifp;
|
||||||
|
|
||||||
@ -1233,7 +1233,7 @@ int sun8i_process_interrupt(void *arg, struct nw_work_thread *wtp)
|
|||||||
if (!sun8i->start_running)
|
if (!sun8i->start_running)
|
||||||
{
|
{
|
||||||
NW_SIGLOCK_P(&ifp->if_snd_ex, iopkt, wtp);
|
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);
|
sun8i_reap(sun8i);
|
||||||
}
|
}
|
||||||
|
@ -151,6 +151,8 @@
|
|||||||
#define RX_DESC_FRM_SIZE_MASK GENMASK32(16, 29)
|
#define RX_DESC_FRM_SIZE_MASK GENMASK32(16, 29)
|
||||||
#define RX_DESC_FRM_SIZE(status) (((status) & RX_DESC_FRM_SIZE_MASK) >> 16)
|
#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_SYS_HZ 1000
|
||||||
#define CONFIG_MDIO_TIMEOUT (3 * CONFIG_SYS_HZ)
|
#define CONFIG_MDIO_TIMEOUT (3 * CONFIG_SYS_HZ)
|
||||||
#define EMAC_SOFT_RESET_TIMEOUT_USEC (100 * 1000)
|
#define EMAC_SOFT_RESET_TIMEOUT_USEC (100 * 1000)
|
||||||
|
Загрузка…
Ссылка в новой задаче
Block a user