Получить макет основной памяти, не относящийся только к одной реализации RISCV - PullRequest
0 голосов
/ 08 декабря 2018

Я работаю над ядром операционной системы для riscv isa, в основном используя язык ассемблера.Мне нравится использовать спецификацию riscv и спецификацию SiFive FU540.

Мне нужно сообщить ядру, какие диапазоны адресов не зарезервированы для других компонентов и, следовательно, доступны для ядра и его процессов.Это должно происходить способом, применимым к как можно большему количеству будущих реализаций riscv.Однако я смог найти только карту памяти, специфичную для реализации SiFive FU540.

В главе 8 в спецификации привилегированной архитектуры версии 1.10 указано, что существует дерево устройств для связи платформыинформация для ядра, но я не смог найти достаточно информации о том, как оно функционирует.

Чтобы уменьшить усилия по портированию для загрузки ОС, мы вернулись к использованию деревьев устройств для передачи информации о платформе ядру, поэтомуэта глава устарела.Кроме того, строка cong была разработана для других целей, но сейчас мы остановились на стандартной модели дерева устройств.

Теперь мои вопросы:

  1. Есть лидокумент, в котором подробно рассказывается о дереве устройств RISCV ISA?

  2. Является ли модель дерева устройств временным решением, так что я должен просто подождать, пока его заменят?

Ответы [ 2 ]

0 голосов
/ 02 января 2019

Сам по себе стандарт дерева устройств немного странный: devicetree.org поддерживает стандарт дерева устройств , но он больше сфокусирован на двоичных кодировках, а не на том, что на самом деле узлыmean.

Определение узла дерева устройств является специфическим для конкретной совместимой строки и лучшая документация для этих жизней рядом с исходным кодом Linux, в Documentation / devicetree / bindings .Лучше всего - просто найти подходящую строку.Документация довольно приличная, но мы, конечно, будем рады услышать любые проблемы, которые у вас есть - или даже лучше, патчи:).

Привязки дерева устройств в репозитории Linux должны быть общими (т.е.(не специфично для Linux), но поскольку они находятся в том же репозитории, что и исходный код Linux, в них, как правило, проникают некоторые Linux-измы. В среде RISC-V мы пытаемся обеспечить совместимость записей нашего дерева устройств между всеми работающимисистемы, но это постоянный кусок работы.Я знаю, что наш порт Zephyr также использует дерево устройств, и хотя он в основном совместим с деревьями устройств Linux, есть некоторые различия.

Мы планируем использовать дерево устройств в обозримом будущем в качестве части порта RISC-V Linux.Наша цель состоит в том, чтобы деревья устройств рассматривались как стабильный ABI, как и все остальные.Другими словами: если привязка находится в дереве исходных текстов Linux, мы не будем изменять ее в двоичном несовместимом виде.Насколько хорошо это запланировано, еще неизвестно.

0 голосов
/ 08 декабря 2018

Дерево устройств - это в основном концепция ядра Linux.Тогда для документации дерева устройств Risc-V вы должны посмотреть документацию ядра здесь , по моему мнению.Весь код, принадлежащий Risc-V, можно найти в arch / riscv / directory .

...