Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпора з романова.docx
Скачиваний:
6
Добавлен:
22.11.2019
Размер:
6.65 Mб
Скачать

20. Упрощенная схема и карта памяти целевой системы. Листинги использования директив Memory и Section на примере карты памяти целевой системы.

Рис.12.1. Упрощенная схема и карта памяти целевой системы

В примере, показанном на Рисунке 12.1, существуют адресные пространства трех физических блоков памяти:

- адресное пространство чипа ПЗУ (ROM), настроенное с нулевого адреса, размером в 32 байта,

- адресное пространство флеш-памяти (FLASH), настроенное с адреса 0x40, размером в 4,096 байт, и

- блок ОЗУ (RAM) объемом 65,536 байт, адреса которого начинаются с 0x10000.

Листинг 12.1 Карта памяти

MEMORY {

ROM: origin = OxOOOOh, length = 0x0020h

FLASH: origin = 0x0040h, length = OxlOOOh

RAM: origin = OxlOOOh, length = OxlOOOOh

}

Листинг 12.2 Директива SECTION.

SECTION {

output-section-name : { contents } > area-name

GROUP {

[ALIGN(expression)]

section-definition

} > area-name

}

21. Объеденение входных секций в исполняемом образе , пример (рисунок), код листинга примера.

Директива SECTION задает компоновщику следующую информацию: какие входные секции должны быть объединены, в какую выходную секцию; какие выходные секции должны быть сгруппированы вместе и размещены последовательно в памяти; где поместить каждую секцию; а также другую информацию. Общий формат директивы SECTION показан в Листинге 12.2.

Листинг 12.2 Директива SECTION.

SECTION {

output-section-name : { contents } > area-name

GROUP {

[ALIGN(expression)] section-definition

} > area-name }

22. Размещение исполняемого образа в памяти целевой системы. Рисунок, пояснение

  • Секция . rodata содержит параметры инициализации системы. Скорее всего, эти значения по умолчанию никогда не изменяются, следовательно, эту секцию можно разместить в ПЗУ.

  • Загрузчик - это обычно та часть программы, которая выполняется при загрузке. Поскольку код загрузчика может быть обновлен на более новые версии, которые различают больше форматов объектных файлов, секции loader и wflash размещены во флеш-памяти. Для обновления понадобится программатор флеш-памяти, который также может быть обновлен. Следовательно, секцию wflash тоже следует разместить во флеш-памяти.

  • Программист встроенной системы взаимодействует с монитором для получения данных о состоянии работы системы и облегчения отладки кода приложения; следовательно, монитор должен реагировать на команды пользователя. SDRAM быстрее DRAM, у нее меньшее время доступа. Поэтому секцию monitor следует разместить в RAMB0.

  • В RAMB0 по-прежнему достаточно места, чтобы разместить обе секции . sbss и . sdata. Стратегия размещения для этих двух секций - использовать оставшуюся память полностью.

  • Оставшиеся секции (.text, .bss и .data) размещаются в RAMB1, единственную память, в которой могут разместиться все эти большие секции.

23. Инициализация встроенной системы. Основные понятия и задачи.

Компоновщик выполняет разрешение символов и перемещение адресов символов в памяти.

• Программист встроенной системы должен понимать точную структуру памяти целевой системы, для которой ведется разработка.

• Целевой исполняемый образ состоит из нескольких программных секций.

• Программист может задать компоновщику параметры физической памяти, такие как ее размер и адреса размещений, используя командный файл компоновщика. Также используя командный файл компоновщика, программист может указать, каким образом объединять входные секции в выходные и как размещать в памяти выходные секции.

• Программная секция может размещаться в различных типах физической памяти, в зависимости от того, как эта секция используется. Код программы (или секция . text) может находиться в ПЗУ, флеш-памяти или ОЗУ во время выполнения. Данные программы (или .data section) должны находиться в ОЗУ во время выполнения.