Как изменить частоту ОЗУ на Repka Pi

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. Изменяя его значение и пересобирая загрузчик, можно задать требуемую частоту работы оперативной памяти.

  1. Необходимо склонировать репозиторий себе на компьютер.
git clone https://gitflic.ru/project/npo_rbs/repka-os_boot-loader.git
  1. Внимательно ознакомиться в README.md какие зависимости необходимы для сборки загрузчика (речь про git, Docker, GNU Make - конкретные версии указаны в README.md) и при необходимости их установить.

  2. Перейти в склонированный репозиторий и скачать все необходимые подмодули.

    git submodule update --init --recursive
    
  3. После успешного скачивания всех необходимых подмодулей, необходимо найти файлы с конфигурацией загрузчика. Для Repka Pi 4 это два файла:

    1. u-boot-2020-04-rc3/configs/repka-pi4-silent_defconfig - для версии загрузчика с тихим режимом (с отключенными логами на этапе загрузки)
    2. u-boot-2020-04-rc3/configs/repka-pi4-not-silent_defconfig - для версии загрузчика без тихого режима (с включенными логами на этапе загрузки)
  4. В нужном файле конфигурации (или в обоих) необходимо указать нужную частоту ОЗУ. Обращаем внимание, что в качестве ОЗУ мы используем “H5TQ4G63AFR-PBC 256Mbx16 1600 (800Mhz)“, и рекомендованная частота для нее 800MHz. Указать 800 не получится, т.к. необходимо указывать число кратное 24 - либо 792, либо 816. В нашем дистрибутиве Repka OS мы используем разогнанное число 936MHz.

    CONFIG_DRAM_CLK=936
    
  5. После того, как вы указали нужную частоту ОЗУ можно приступить к сборке загрузчика.

    make REPKA_MODEL=pi4 build-loader
    
  6. Когда сборка успешно завершилась у вас появятся два файла загрузчика (путь к файлам описан ниже), которые необходимо будет перенести на устройство 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.

ПРЕДУПРЕЖДЕНИЕ

Важно учитывать, что некорректная запись загрузчика может привести к неработоспособности устройства, поэтому перед выполнением операции следует убедиться в правильности выбранного устройства и наличии резервной копии данных.

  1. Файлы загрузчика необходимо переместить по пути /boot/spl

    /boot
    └── spl
        ├── u-boot-sunxi-with-spl.bin
        └── u-boot-sunxi-with-spl-silent.bin
    
  2. После чего необходимо проверить с какого накопителя вы запущены: с 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

  3. После определения накопителя мы можем перезаписать загрузчик. Важно учесть, какой именно загрузчик нам нужен: с тихим режимом или без него. Ниже показана команда для загрузчика без тихого режима. Для загрузчика с тихим режимом значение аргумент if надо заменить с /boot/spl/u-boot-sunxi-with-spl.bin на /boot/spl/u-boot-sunxi-with-spl-silent.bin

    dd 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
    
  4. Если перезапись прошла успешно, можно перезагрузить устройство.

  5. После перезагрузки необходимо убедиться, что нужная частота ОЗУ действительно установлена.

    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, которую мы и установили в конфигурации загрузчика.


19 просмотров0 комментариев
0

Комментарии (0)

Для участия в обсуждении Вы должны быть авторизованным пользователем
Разделы

Навигация

ВойтиРегистрация