Как установить значения регистров SoC в ядре Linux и U-boot?

Мне были предоставлены все значения регистров, такие как управляющий регистр SRAM Window 0, регистр адреса конфигурации PCI Express и множество других значений регистров для SoC Armada 370.
Теперь для запуска платы мне нужно установить все эти значения регистров в U-boot и Ядро Linux.
Есть ли способ сделать это легко?
Например, если я хочу установить регистр адреса конфигурации PCI Express, с чего мне начать?
Любое направление к хорошему ресурсу будет полезно. Спасибо.


person New to Rails    schedule 28.03.2014    source источник
comment
Вы на самом деле должны установить их из загрузчика, в вашем случае u-boot. Большинство настроек пишутся очень рано и, возможно, на ассемблере. Некоторые из этих значений уже были установлены загрузчиком, вам нужно проверить, есть ли у вас какие-либо другие настройки. В настройке этих регистров нет ничего особенного, просто будьте осторожны с зависимостями.   -  person sessyargc.jp    schedule 02.04.2014


Ответы (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.

person Konstantin Utkin    schedule 08.04.2014

Вы должны заглянуть в arch/arm/mach-mvebu ! (Я имею в виду ядро ​​3.16).

Free-Electrons также много работали над этим семейством SoC. Вы можете посмотреть их git здесь: https://github.com/MISL-EBU-System-SW/mainline-public/commits/3.16/cpuidle-v3

person Syf Illis    schedule 01.08.2014