====== Использование отладочной системы из процессорного модуля rk3568-rhos и несущей платы KitSBiMX8 ======
Минимально необходимая инструкция по работе с указанным отладочным набором.
Выполняемые действия
* Прошивка начальных загрузчиков
* Загрузка системы с внешних накопителей и из сети
* базовая проверка основных накопителей и интерфейсов
Полная проверка может требовать дополнительных работ по конфигурированию (установки джамперов) отладочной платы KitSBiMX8 и не описана в данном документе.
===== Минимально необходимый комплект оборудования =====
Проверьте наличие и исправность следующих элементов
- Плата KitSBiMX8 с предварительно установленными конфигурационными переключателями (по возможности и ее схема электрическая принципиальная)
- Плата процессорного модуля rk3568-rhos (по возможности и ее схема электрическая принципиальная)
- Источник питания на напряжение в диапазоне от 12 до 25 Вольт, мощностью не мене 25 Ватт
- Персональный компьютер с установленной операционной системой Linux (рекомендуется последний из доступных LTS релизов Ubuntu Linux)
- Кабель с разъемом для соединения платы KitSBiMX8 и источника питания собранный с соблюдением требований полярности подключения
- Кабель USB 2.0 A-B для подключения отладочной консоли
- Кабель USB 2.0 A-microB для прошивки модуля
Дополнительное рекомендуемое оборудование
- Кабель HDMI
- Монитор с видеовходом HDMI
- NVMe накопитель, способный работать с 2-lane PCIe 3.0 интерфейсом
- microSD карта памяти
- проводное сетевое соединение с комплектом необходимых кабелей
- плата в форм-факторе PCIe x4, поддерживающая OS Linux
- ЖКИ монитор с интерфейсом LVDS, с комплектом кабелей для подключения
===== Проверка и установка конфигурационных переключателей =====
Поверьте наличие, и при необходимости установите два конфигурационных переключателя на XP14 в позиции 1-2 и 3-4 (системная консоль на USB type B интерфейсе).
Проверьте возможность временно замыкать конфигурационный переключатель XP43 (используется для перевода RK3568 в MaskRom режим, для загрузки через USB интерфейс).
Проверьте наличие, и при необходимости установите два конфигурационных переключателя на XP67 в позиции 1-2 и 3-4 (I2C интерфейс для базовой периферии - RTC, Audio Codec).
Проверьте наличие и при необходимости установите конфигурационные переключатели для правильной работы USB-концентратора
* XP74 в позиции 1-2
* XP61 установлен
* XP15 в позиции 1-2
todo: description
XP62 1-2 - LCD_EN_12V
XP23 2-3 - LCD_RL/UL
XP24 1-2 - LCD_LVDS_SEL
XP25 1-2 - LCD_EN_3V3
XP60 2-3 - LCD_PWM
XP63 2-3 - LCD_BL_EN
XP78 установлен DSI_EN
XP71 1-2 - SPI conncted to FLASH
XP34 1-2, 3-4 - SMB I2C connect to bus multiplexer
XP69 1-2,3-4,5-6,7-8 - SPI connect to level shifter
XP68 1-2,3-4 - I2C connected to EEPROM
XP28 и XP45 сняты (PCIe CLKREQn принудительно ноль - отключено).
XP56 установлен (GPIO_PWR_OFF)
XP57 установлен (DIS AUTO ON)
XP58 установлен (PWR_INT)
===== Первое включение =====
Подключите плату KitSBiMX8 к источнику питания, включите источник питания. Кратко нажмите кнопку SB2.
Должны загореться контрольные светодиоды VD132, VD133, VD139 расположенные рядом с разъемом питания и кнопкой SB1. Потребляемая мощность при этом не должна превышать 50мВт.
Нажмите и удерживайте нажатой кнопку SB2, В течении 5-10 секунд светодиоды должны погаснуть.
Подключите кабель USB 2.0 A-B к плате KitSBiMX8 (XS13) и персональной ЭВМ. На персональной ЭВМ должен обнаружиться устройство "Future Technology Devices International, Ltd FT232 Serial (UART) IC". Запустите терминал с параметрами соединения 115200n8 на обнаруженном порту.
Подключите кабель USB 2.0 A-microB к плате KitSBiMX8 (XS12) и персональной ЭВМ. На плате должен загореться светодиод VD32, расположенный рядом с разъемом XS12.
Установите модуль rk3568-rhos в слот на плате KitSBiMX8. Включите плату с процессорным модулем кратко нажав и отпустив кнопку SB2. Проконтролируйте сообщения в терминале. При их наличии установлен "прошитый" модуль, при отсутствии - чистый. Обратите внимание - в ряде случаев сообщения появляются при изменении настроек терминала на 1500000n8 - это показатель того, что модуль содержит штатную программу от производителя.
===== Перевод в MaskRom режим =====
При установки "чистого" модуля, после подачи питания на персональной ЭВМ должно обнаружиться устройство "Fuzhou Rockchip Electronics Company" с VID 0x2207 и PID 0x350a. При установке прошитого модуля, его необходимо перевести в режим загрузки. Для этого отключите плату удерживая кнопку SB2 до момента выключения светодиодов VD132, VD133, VD139. Замкните и удерживайте замкнутыми контакты 1-2 XP43. Включите плату кратким нажатием на кнопку SB2 (VD132, VD133, VD139 должны загореться). Проконтролируйте перевод в MaskRom режим отсутствием сообщений о загрузке в терминале и появлении устройства "Fuzhou Rockchip Electronics Company" на персональной ЭВМ. Разомкните контакты 1-2 XP43. Модуль rk3568-rhos готов к установке прошивки.
===== Сборка и установка начального загрузчика U-Boot =====
==== Сборка ====
$ git clone https://github.com/MinimumLaw/rkbin.git
$ git clone https://github.com/MinimumLaw/ravion-uboot.git -b ravion-v2-2024.04
$ cd ravion-uboot
Подготовительный этап завершен. На данный момент далее необходимо применить патч для работы интерфейса Ethernet
diff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c
index 63b3e46f1..161cb6b05 100644
--- a/drivers/net/phy/phy.c
+++ b/drivers/net/phy/phy.c
@@ -755,6 +755,15 @@ int phy_reset(struct phy_device *phydev)
return -1;
}
+ reg = phy_read(phydev, devad, 0x0467);
+ if ((reg & 0x0300) != 0x0200) {
+ pr_err("PHY Strap failed (0x%04x), set correct!\n", reg);
+ reg = (phy_read(phydev, devad, 0x0017) | (1<<9)); /* RGMII mode */
+ phy_write(phydev, devad, 0x0017, reg);
+ reg = (phy_read(phydev, devad, 0x0019) | (1<<15)); /* Auto-MDX mode */
+ phy_write(phydev, devad, 0x0019, reg);
+ }
+
return 0;
}
Применить указанный патч можно с помощью команды
$ patch -p1 < phy-fixup.patch
Контролируем правильность применения патча по диагностическим сообщениям и по выводу команды
$ git diff
После применения указанного патча необходимо выполнить сборку загрузчика. Для этого запускаем сборочный скрипт.
$ ./build_rk3568j_rhos.sh
Проконтролировать правильность сборки по отсутствию сообщений о критических ошибках в терминале и наличию итогового файла "u-boot-rockchip.bin"
==== Установка ====
Убедитесь, что устройство находится в MasRom режиме и позволяет контролировать системную консоль через терминал.
$ sudo ./rk3568_flash.sh
Процесс загрузки контролировать через сообщения на ЭВМ, а так же в терминале.
==== Работа с загрузчиком U-Boot ====
ToDo: Переменные среды в загрузчике не рабочие. Необходима персонализация модуля и указание правильных переменных среды для загрузки. Это надо описать отдельно.
===== Сборка и установка начального загрузчика EDK II =====
Клонируем локально репозитарий [[https://github.com/MinimumLaw/rhos-rk3568-uefi.git | RHOS-RK3568]]
$ git clone https://github.com/MinimumLaw/rhos-rk3568-uefi.git
Инициализируем необходимые подмодули, для этого переходим в созданный каталог
$ cd rhos-rk3568-uefi/
и запускаем
$ git submodule update --init --recursive
Дожидаемся завершения синхронизации субмодулей. Все готово для сборки EDKII.
==== Сборка прошивки EDKII ====
Для сборки отладочной версии необходимо запустить
$ ./build-debug-rk3568-rhos.sh
Для сборки релизной версии необходимо запустить
$ ./build-release-rk3568-rhos.sh
В любом случае мы получим файл "RK3568-RHOS_EFI.img" в текущем каталоге. Это и есть итоговый файл прошивки.
==== Загрузка прошивки в плату ====
Загрузка собранной прошивки в плату осуществляется с помощью скрипта
flash-rk3568-rhos.sh
Убедитесь, что плата находится в MaskRom режиме. Контролируйте процесс загрузки по сообщениям скрипта и информации в терминале.
===== Сборка ядра Linux =====
$ git checkout https://github.com/MinimumLaw/ravion-kernel.git
$ cd ravion-kernel
Поправить скрипт build64.sh в части используемого кросс-компилятора, пути до корневого каталога целевой системы и других необходимых параметров сборки. Запустить сборку ядра.
$ ./build64.sh
Проконтролировать правильность сборки ядра по диагностическим сообщениям сборочной системы.
===== Известные проблемы =====
- На данный момент работоспособность Ethernet интерфейса в U-Boot без применения патча не гарантируется. Нужен либо патч, либо аппаратная доработка модулей. Предположительная причина - проблемы с элементной базой.
- На данный момент загрузчики U-Boot и EDKII работают с основного аппаратного раздела eMMC накопителя. Необходимо перенести их на аппаратные разделы BOOT0/BOOT1 и обеспечить работу с них
- На данный момент в EDKII поддерживается только HDMI и последовательная консоль. Необходимо обеспечить работу видеоинтерфейса MIPI DSI
- На данный момент в EDKII поддерживаются не все накопители NVMe (в частности не поддерживается Patriot P300)