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

21. Инициализация приоритетной/фоновой системы. Описание.

Инициализация приоритетной/фоновой системы состоит из следующих шагов:

  1. Запрещение прерываний

  2. Установка векторов прерывания и стеков

  3. Выполнение самотестирования

  4. Выполнение инициализации системы

  5. Разрешение прерываний

Фактически, инициализация является первой частью фонового процесса.

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

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

17. Обзор Компоновщиков и процесса компоновки. Создание файла образа для целевой системы. Рисунок, пояснения.

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

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

18. Таблица символов. Взаимосвязь между таблицей символов и таблицей перемещений (переадресации). Рисунок, пояснения.

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

При создании перемещаемого выходного файла, компилятор генерирует адрес, для каждого символа, в скомпилированном файле. Следовательно, эти адреса создаются со смещением равным 0.

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

Таблица перемещения указывает компоновщику, в каком месте кода программы необходимо провести перемещение. Каждая запись в таблице перемещения содержит ссылку на таблицу символов. Используя эту ссылку, компоновщик может найти фактический адрес символа и использовать его в программе, как указано в записи перемещения. Таблица перемещения может также содержать как адрес символа, так и информацию о перемещении. В этом случае, отсутствует связь между таблицей перемещения и таблицей символов.

19. Размещение исполняемых образов в памяти целевой встроенной системы. Командный файл компоновщика. Общее описание и примеры директив.

Для большинства доступных компоновщиков, которые исп. для создания встраиваемых приложений, существуют общие директивы. Двумя наиболее распространенными директивами, которые поддерживаются большинством компоновщиков являются MEMORY & SECTION.

Директива MEMORY определяет типы физической памяти, которые доступны в целевой системе и диапазон адресов, которые заняты каждым физическим блоком памяти, что представлено следующим обобщенным синтаксисом:

MEMORY {

area-name : org = start-address, len = number-of-bytes

}

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

MEMORY {

ROM: origin = OxOOOOh, length = 0x0020h

FLASH: origin = 0x0040h, length = OxlOOOh

RAM: origin = OxlOOOh, length = OxlOOOOh

}

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

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

SECTION {

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

GROUP {

[ALIGN(expression)]

section-definition

} > area-name

}