Недавно я включил MMU на более низких уровнях EL (EL1/EL0) в нашей тестовой среде ARMv8A на «голом железе», которая работает поверх TF-A. Включение MMU требует создания таблиц перевода, которые представляют собой сильно отформатированный набор данных, и его сложно создать с нуля. Оказалось, что библиотека TF-A имеет очень хорошо оснащенный набор функций, облегчающих создание этих таблиц для любого режима трансляции и позволяющих включить MMU. Но мне потребовалось некоторое время, чтобы добраться до нужной последовательности. Поэтому я задаю этот вопрос и отвечаю на него своим собственным ответом. Я хочу, чтобы этот вопрос был легким ответом для людей, ищущих ту же информацию, что быстро направит их в правильном направлении и, надеюсь, сэкономит некоторое время.
Это было бы полезно для разработчиков, которые хотят создавать свои собственные таблицы MMU, используя библиотеку TF-A для пользовательских целей. Для этой темы есть предоставленная ARM документация, которая очень хороша. Этот ответ призван стать отправной точкой, указывающей на все необходимые концепции для выполнения задачи.
Имена функций и макросов могут измениться в будущем выпуске TF-A, но я ожидаю, что используемые концепции останутся неизменными.