Repka Pi 4 #
К СВЕДЕНИЮ
В разделе описано, как установить нужную вам частоту ОЗУ с помощью пересборки загрузчика U-Boot. Но у нас есть в планах добавление такого функционала в repka-config.
В данный момент для Repka Pi 4 частота оперативной памяти (ОЗУ) задаётся на этапе инициализации оборудования загрузчиком U-Boot. Это означает, что изменить частоту ОЗУ невозможно средствами ядра или Device Tree — необходима пересборка загрузчика с нужными параметрами.
В данном разделе описан процесс изменения частоты ОЗУ для Repka Pi 4 путём модификации конфигурации U-Boot, его пересборки и последующей перезаписи на носитель. Все действия предполагают, что пользователь понимает риски, связанные с заменой загрузчика, и выполняет их осознанно.
Сборка загрузчика #
Для изменения частоты ОЗУ требуется пересобрать загрузчик U-Boot с новым значением частоты памяти. Исходные файлы загрузчика находятся в официальном репозитории Boot Loader for Repka Pi. В конфигурационных файлах U-Boot для Repka Pi 4 предусмотрен параметр, отвечающий за частоту контроллера DRAM. Изменяя его значение и пересобирая загрузчик, можно задать требуемую частоту работы оперативной памяти.
- Необходимо склонировать репозиторий себе на компьютер.
git clone https://gitflic.ru/project/npo_rbs/repka-os_boot-loader.git
-
Внимательно ознакомиться в
README.mdкакие зависимости необходимы для сборки загрузчика (речь проgit,Docker,GNU Make- конкретные версии указаны вREADME.md) и при необходимости их установить. -
Перейти в склонированный репозиторий и скачать все необходимые подмодули.
git submodule update --init --recursive -
После успешного скачивания всех необходимых подмодулей, необходимо найти файлы с конфигурацией загрузчика. Для Repka Pi 4 это два файла:
u-boot-2020-04-rc3/configs/repka-pi4-silent_defconfig- для версии загрузчика с тихим режимом (с отключенными логами на этапе загрузки)u-boot-2020-04-rc3/configs/repka-pi4-not-silent_defconfig- для версии загрузчика без тихого режима (с включенными логами на этапе загрузки)
-
В нужном файле конфигурации (или в обоих) необходимо указать нужную частоту ОЗУ. Обращаем внимание, что в качестве ОЗУ мы используем “H5TQ4G63AFR-PBC 256Mbx16 1600 (800Mhz)“, и рекомендованная частота для нее
800MHz. Указать800не получится, т.к. необходимо указывать число кратное24- либо792, либо816. В нашем дистрибутивеRepka OSмы используем разогнанное число936MHz.CONFIG_DRAM_CLK=936 -
После того, как вы указали нужную частоту ОЗУ можно приступить к сборке загрузчика.
make REPKA_MODEL=pi4 build-loader -
Когда сборка успешно завершилась у вас появятся два файла загрузчика (путь к файлам описан ниже), которые необходимо будет перенести на устройство Repka Pi 4.
src-pi4 └── spl ├── u-boot-sunxi-with-spl.bin (загрузчик с включенным логированием в UART0) └── u-boot-sunxi-with-spl-silent.bin (загрузчик с тихим режимом)
Перезапись загрузчика #
После успешной сборки U-Boot необходимо записать новый загрузчик на загрузочный носитель Repka Pi 4. Запись выполняется напрямую на устройство хранения данных с помощью утилиты dd.
ПРЕДУПРЕЖДЕНИЕ
Важно учитывать, что некорректная запись загрузчика может привести к неработоспособности устройства, поэтому перед выполнением операции следует убедиться в правильности выбранного устройства и наличии резервной копии данных.
-
Файлы загрузчика необходимо переместить по пути
/boot/spl/boot └── spl ├── u-boot-sunxi-with-spl.bin └── u-boot-sunxi-with-spl-silent.bin -
После чего необходимо проверить с какого накопителя вы запущены: с
SD-картыилиeMMC.cat /proc/cmdlineВывод будет примерно следующим:
console=ttyS0,115200 console=tty6 earlyprintk loglevel=7 root=/dev/mmcblk0p1 rw rootwait panic=10Для нас интересен аргумент root и его значение
/dev/mmcblk0p1- это означает, что мы запущены с устройства/dev/mmcblk0 -
После определения накопителя мы можем перезаписать загрузчик. Важно учесть, какой именно загрузчик нам нужен: с тихим режимом или без него. Ниже показана команда для загрузчика без тихого режима. Для загрузчика с тихим режимом значение аргумент
ifнадо заменить с/boot/spl/u-boot-sunxi-with-spl.bin на /boot/spl/u-boot-sunxi-with-spl-silent.bindd if=/boot/spl/u-boot-sunxi-with-spl.bin of=/dev/mmcblk0 bs=1024 seek=8 conv=notruncПосле выполнения данной команды в терминале должно быть примерно следующее:
604+1 записей получено 604+1 записей отправлено 618780 байт (619 kB, 604 KiB) скопирован, 0,0422415 s, 14,6 MB/s -
Если перезапись прошла успешно, можно перезагрузить устройство.
-
После перезагрузки необходимо убедиться, что нужная частота ОЗУ действительно установлена.
cat /sys/kernel/debug/clk/clk_summary | grep pll-ddrВывод команды будет примерно следующим:
pll-ddr0 1 1 0 1872000000 0 0 50000 Y deviceless no_connection_idНас интересует значение пятого столбца. Это значение равно
1872000000и означает, что установлена частота1 872 000 000 Hz (1872 MHz), но т.к. данные передаются два раза за такт (DDR - Double Data Rate) необходимо разделить это значение на 2. После деления получится значение тактовой частоты936MHz, которую мы и установили в конфигурации загрузчика.