====== Использование отладочной системы из процессорного модуля 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)