Мне были предоставлены все значения регистров, такие как управляющий регистр SRAM Window 0, регистр адреса конфигурации PCI Express и множество других значений регистров для SoC Armada 370.
Теперь для запуска платы мне нужно установить все эти значения регистров в U-boot и Ядро Linux.
Есть ли способ сделать это легко?
Например, если я хочу установить регистр адреса конфигурации PCI Express, с чего мне начать?
Любое направление к хорошему ресурсу будет полезно. Спасибо.
Как установить значения регистров SoC в ядре Linux и U-boot?
Ответы (2)
1) В u-boot посмотрите подкаталог /board: там должны находиться файлы вашей платы. Представлено несколько платформ Marvell, но нет armada 370, поэтому, похоже, вы должны добавить ее самостоятельно. Может, у вас уже есть нормальный дистрибутив? Изучив существующий код, я думаю, вам следует использовать макрос GT_REG_WRITE (определенный в /board/Marvell/common/core.h). Но для армады 370 может отличаться.
2) В ядре Linux также есть место для кода, специфичного для платы: посмотрите в подкаталоге /arch. Armada 370 основан на ARM, поэтому его нужно поместить в /arch/arm. Существует блок общего кода для всех платформ ARM и специальные подкаталоги с именами «mach-» и «plat-». Ваш код должен быть устроен так. В подкаталогах "mach-" ищите файлы "board-", они содержат код, исполняемый при старте ядра linux.
Вы должны заглянуть в arch/arm/mach-mvebu ! (Я имею в виду ядро 3.16).
Free-Electrons также много работали над этим семейством SoC. Вы можете посмотреть их git здесь: https://github.com/MISL-EBU-System-SW/mainline-public/commits/3.16/cpuidle-v3