====== Что можно сделать с rkbin? ====== ===== Установка базовых параметров системы ===== # get ddr params from DDR blob ./tools/ddrbin_tool rk3568 -g params.txt bin/rk35/rk3568_ddr_1560MHz_v1.21.bin Получить **текстовый конфигурационный файл** с базовыми параметрами параметрами системы (настройки памяти DDR, настройки системной консоли). # Write params back to DDR blob ./tools/ddrbin_tool rk3568 rhos.txt bin/rk35/rk3568_ddr_1560MHz_v1.21.bin Записать конфигурационные данные из **текстового файла** в двоичный. Эти команды могут быть использованы как для изменения скорости системной консоли (по умолчанию 1500000 бод или 1,5мегабода) так и для указания параметров использованных микросхем памяти в случае создания собственного процессорного модуля с данным чипом. Параметры в конфигурационном файле, связанные с системной консолью интуитивно понятны uart id=2 uart iomux=0 uart baudrate=115200 * id - номер UART'а в соответствии с документацией * iomux - раскладка по пинам чипа * baudrate - скорость. Остальные параметры всегда 8 бит данных, без проверки четности, 1 стоп-бит ===== Подготовка загрузчика (TPL) ===== # Prepare U-Boot TPL ./tools/boot_merger RKBOOT/RK3568MINIALL.ini Загрузчик содержит файл настроек из предыдущего абзаца и закрытый двоичный загрузчик, реализующий базовые операции по загрузке и обновлению системы, выпущенные RockChip'ом. Штука необходимая на первом этапе создания системы, когда кроме оперативной памяти и основных интерфейсов накопителей (как правило SPI, MMC, USB) не ничего другого. ===== Подготовка OP-TEE в виде ELF файла ===== RockChip поставляет предварительно собранную редакцию OP-TEE в виде двоичного файла. Современный U-Boot (по состоянию на май 2024 года) требует ее в виде ELF'а. Проблема решается следующим образом # Prepare TEE elf image for U-Boot aarch64-linux-gnu-ld -T tee.ld -o tee.elf Содержимое файла tee.ld ############################################################################## # Simplest convert Rockchip TEE (bl32) binary image into ELF format # # Just place this file as tee.ld into rkbin directory, then run # $ aarch64-linux-gnu-ld -T tee.ld -o tee.elf # Then build vanilla u-boot with TEE=/tee.elf start_addr = 0x08400000; TARGET(binary) INPUT( ./bin/rk35/rk3568_bl32_v2.11.bin ) OUTPUT_FORMAT(elf64-littleaarch64) ENTRY(start_addr) MEMORY { RAM (rwx) : org = 0x08400000, len = 1M } SECTIONS { .data : { ./bin/rk35/rk3568_bl32_v2.11.bin } > RAM } Используем простой трюк - пишем линкер-скрипт, который разместит данный двоичный файл по фиксированному адресу и назначит ночку входа. После это с помощью ликера из комплекта кросс-компиляции собираем ELF-файл.