
- •Ввод-вывод на уровне технических средств компьютера. Программируемы ввол-вывод. Фрагмент программы управления скоростью двигателя. Пояснения
- •Прямой доступ к памяти (пдп – dma). Компоновка схемы пдп с использованием внешнего контроллера. Временная диаграмма пдп. Пояснения.
- •Побитное отображение устройств. Побитая карта устройств ввода-вывода в управляющем слове для выделенной памяти. Рисунок, пояснения
- •Обработка прерываний на уровне технических средств компьютера. Основные понятия и определения. Поддержка прерываний командами процессора.
- •Процесс обработки прерываний в системе с единственным прерыванием. Рисунок, пояснения.
- •Программируемый контроллер прерываний. Назначение. Рисунок, пояснение.
- •Обработка нескольких прерываний с использованием внешнего контроллера прерываний. Рисунок, пояснения. Фрагмент кода обслуживания на псевдоассемблере для 2х адресной архитектуры.
- •Согласование устройство и цп с помощью прерываний. Контроллер единственного периферийного устройства. Рисунок, пояснения.
- •Согласований устройство и ца с помощью прерываний. Несколько контроллеров соединенные с цп через пкп (программируемый контроллер прерываний)
- •Прерываемые инструкции. Сторожевые таймеры (Watchdog Timers)
- •Основы разработки встроенных систем. Типовая среда разработки с использованием кросс-платформы. Рисунок, пояснения.
- •Обзор компоновщиков и процесса компоновки. Создание файла образа для целевой системы. Рисунок, пояснения.
- •Основные функции компоновщика. Взаимосвязь между таблицей символов и таблицей перемещений (переадресации). Рисунок, пояснения.
- •Форматы исполняемых и компонуемых файлов. Рисунок, пояснения.
- •Форматы исполняемых и компонуемых файлов. Раздел заголовка и заголовок программы. Листинг, таблица типов разделов, пояснения.
- •Размещение исполняемых образов в памяти целевой встроенной системы. Командный файл компоновщика. Упрощенная схема и карта памяти целевой системы. Рисунок, пояснения.
- •Директивы компоновщика section и memory. Форматы директив, примеры использования
- •Инициализация встроенной системы. Общие положения.
- •Инструменты целевой системы передача образа. Общий вид целевой встроенной системы, размещенной на плате.
- •Встроенный загрузчик.
- •Встроенный монитор и целевое средство отладки.
- •Последовательность загрузки и выполнения образа после его перемещения из пзу в озу. Рисунок, пояснения
- •Последовательность загрузки и выполнения образа из озу после его передачи из хост системы. Рисунок, пояснения.
- •Инициализация программного обеспечения целевой системы. Программные компоненты целевой системы. Рисунок, пояснения.
- •Процесс инициализации программного обеспечения. Рисунок, пояснения.
- •Инициализация ос рв целевой системы.
- •Внутрисхемная отладка (отладка на чипе) целевой системы.
Обзор компоновщиков и процесса компоновки. Создание файла образа для целевой системы. Рисунок, пояснения.
Рисунок 11.2 показывает, каким образом различные средства разработки получают входные файлы и создают соответствующие выходные файлы которые будут использоваться при построении исполняемого образа.
Файл сборки программы (Make file)
Утилита сборки (Make Utility)
Файлы заголовков (Header Files)
Разработчик создает файл программы и файл-заголовок в исходном коде на
языке C/C++.
Часть программы может быть написана на Ассемблере и помещена в соответствующий исходный файл Ассемблера.
Разработчик также создает Makefile для утилиты Make, которая помогает ему легко отслеживать изменения файлов и вызвать компилятор Ассемблера для исходных файлов, когда это необходимо.
Из этих исходных файлов, компилятор и Ассемблер создают объектные файлы, которые содержат как машинный код, так и данные программы.
Архиватор (библиотекарь) объединяет набор объектных файлов для формирования библиотеки.
Компоновщик принимает все эти объектные файлы в качестве входных данных и производит либо исполняемый образ, либо объектный файл, который можно использовать для дополнительных связей с другими объектными файлами.
Командный файл компоновщика указывает компоновщику, как объединить объектные файлы и где разместить двоичный код и данные в целевой встроенной системе.
Основные функции компоновщика. Взаимосвязь между таблицей символов и таблицей перемещений (переадресации). Рисунок, пояснения.
Основная функция компоновщика – объединение нескольких объектных файлов в больший перемещаемый объектный файл, либо разделяемый объектный файл (файл коллективного доступа), либо окончательный исполняемый образ. В типовой программе, часть кода в одном исходном файле может ссылаться на переменные, определенные в другом исходном файле. Функция в одном исходном файле может вызвать функцию из другого исходного файла.
Глобальные переменные и не статические функции обычно относятся к глобальным символам. В исходных файлах, эти символы имеют различные названия, например, глобальная переменная называется foo_bar или глобальная функция называется func_a. В окончательном исполняемом двоичном образе, символ указывает на размещение по адресу памяти. Содержимым этого адреса памяти является либо данные для переменных или исполняемый код функции.
Компилятор создает таблицу символов, как часть выходного объектного файла, содержащую символьные имена для адресации отображений объектного файла.
При создании перемещаемого выходного файла, компилятор генерирует адрес, для каждого символа, в скомпилированном файле. Следовательно, эти адреса создаются со смещением равным 0.
Таблица символов содержит глобальные символы, определенные в скомпилированном файле , также как и внешние символы определенные в файле которые компоновщику необходимо разрешить (связать друг с другом, скомпоновать).
Процесс компоновки, выполняемый компоновщиком, включает связывание (разрешение) символов и их перемещение.
Разрешение символов – это процесс при котором компоновщик обрабатывает каждый объектный файл и определяет (для каждого объектного файла) в каких (других) объектных файлах определены внешние символы.
Иногда компоновщику необходимо обрабатывать список объектных файлов по нескольку раз при попытке разрешения всех внешних символов. Если внешние символы определены в статической библиотеке, компоновщик копирует объектные файлы из библиотеки и создает из них окончательный образ.
Перемещение символа – это процесс, в котором компоновщик связывает ссылку символа и его описание. Компоновщик изменяет машинный код связываемого объектного файла так, чтобы ссылки кода на символы отражали фактические адреса, присвоенные этим символам. Для многих символов относительное смещение изменяется после объединения нескольких объектных файлов. Перемещение символов требует изменения машинного кода программы, поскольку компоновщик корректирует в машинном коде ссылки на объект, для того что бы они соответствовали их фактическому адресу. Таблица перемещения указывает компоновщику, в каком месте кода программы необходимо провести перемещение. Каждая запись в таблице перемещения содержит ссылку на таблицу символов. Используя эту ссылку, компоновщик может найти фактический адрес символа и использовать его в программе, как указано в записи перемещения. Таблица перемещения может также содержать как адрес символа, так и информацию перемещении. В этом случае, отсутствует связь между таблицей перемещения и таблицей символов. Рисунок 11.3 отображает эти две концепции в упрощенном виде.