3.3 Карта памяти

Предыдущая  Содержание  Следующая V*D*V

Карта памяти определяет схему адресного пространства процессора. Определение карты памяти является одним из наиболее важных этапов и должно быть сделано в начале процесса переноса. Карта памяти необходима по следующим причинам:

 

Она фиксирует адресное пространство, выделенное для разных аппаратных компонентов, таких как ОЗУ, флеш-память и отображённые на память периферийные устройства ввода-вывода.

Она отмечает распределение памяти на плате для разных программных компонентов, таких как загрузчик и ядро. Это имеет решающее значение для сборки программных компонентов; эта информация обычно передаётся во время сборки через скрипт компоновщика.

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

 

Есть три адреса, которые видны во встраиваемой системе на Linux:

 

Не транслируемый процессором или физический адрес: это адрес, который виден на реальной шине памяти.

Транслируемый процессором адрес или виртуальный адрес: это диапазон адресов, который распознаётся процессором как действительный диапазон адресов. Например, основной распределитель памяти ядра kmalloc() возвращает виртуальный адрес. Для перевода в физический адрес виртуальный адрес проходит через MMU.

Адрес шины: это адрес памяти с точки зрения устройства, кроме процессора. Этот адрес может меняться в зависимости от шины.

 

Карта памяти связывает схему памяти системы с точки зрения процессора, устройства памяти (ОЗУ, флеш-память и так далее) и внешние устройства; эта карта показывает, как должны взаимодействовать устройства, имеющие разные взгляды на адресное пространство. На большинстве платформ шинный адрес совпадает с физическим адресом, но это не является обязательным. Для уверенности, что драйверы устройств переносимыми между всеми платформами, ядро Linux предоставляет макросы.

Определение карты памяти требует понимание следующего:

 

Понимание адресации памяти и ввода-вывода аппаратными компонентами на плате. Это часто требует понимания того, как сконфигурированы контроллеры шин памяти и ввода-вывода.

Понимание того, как процессор выполняет управление памятью.

 

Создание карты памяти для системы может быть разбито на следующие задачи:

 

Карта памяти процессора: это первая карта памяти, которая должна быть создана. Она объясняет политики управления памятью процессора, например, как процессор обрабатывает различные адресные пространства (пользовательский режим, режим ядра), каковы политики кэширования для различных областей памяти, и так далее.

Карта встроенной памяти: раз есть представление о том, как процессор видит различные области памяти, следующим шагом будет соотнести различные встроенные устройства с областью памяти процессора. Это требует понимания работы различных встроенных устройств и контроллеров шины.

Карта памяти программного обеспечения: затем следует выделить часть памяти для различных компонентов программного обеспечения, таких как загрузчик и ядро Linux. Ядро Linux настраивает свою собственную карту памяти и решает, где будут располагаться различные разделы ядра, такие как код и "куча".

 

В следующих разделах подробно объясняется каждая из этих карт памяти по отношению к плате EUREKA.

 

Предыдущая  Содержание  Следующая