
- •Ввод-вывод на уровне технических средств компьютера. Программируемы ввол-вывод. Фрагмент программы управления скоростью двигателя. Пояснения
- •Прямой доступ к памяти (пдп – dma). Компоновка схемы пдп с использованием внешнего контроллера. Временная диаграмма пдп. Пояснения.
- •Побитное отображение устройств. Побитая карта устройств ввода-вывода в управляющем слове для выделенной памяти. Рисунок, пояснения
- •Обработка прерываний на уровне технических средств компьютера. Основные понятия и определения. Поддержка прерываний командами процессора.
- •Процесс обработки прерываний в системе с единственным прерыванием. Рисунок, пояснения.
- •Программируемый контроллер прерываний. Назначение. Рисунок, пояснение.
- •Обработка нескольких прерываний с использованием внешнего контроллера прерываний. Рисунок, пояснения. Фрагмент кода обслуживания на псевдоассемблере для 2х адресной архитектуры.
- •Согласование устройство и цп с помощью прерываний. Контроллер единственного периферийного устройства. Рисунок, пояснения.
- •Согласований устройство и ца с помощью прерываний. Несколько контроллеров соединенные с цп через пкп (программируемый контроллер прерываний)
- •Прерываемые инструкции. Сторожевые таймеры (Watchdog Timers)
- •Основы разработки встроенных систем. Типовая среда разработки с использованием кросс-платформы. Рисунок, пояснения.
- •Обзор компоновщиков и процесса компоновки. Создание файла образа для целевой системы. Рисунок, пояснения.
- •Основные функции компоновщика. Взаимосвязь между таблицей символов и таблицей перемещений (переадресации). Рисунок, пояснения.
- •Форматы исполняемых и компонуемых файлов. Рисунок, пояснения.
- •Форматы исполняемых и компонуемых файлов. Раздел заголовка и заголовок программы. Листинг, таблица типов разделов, пояснения.
- •Размещение исполняемых образов в памяти целевой встроенной системы. Командный файл компоновщика. Упрощенная схема и карта памяти целевой системы. Рисунок, пояснения.
- •Директивы компоновщика section и memory. Форматы директив, примеры использования
- •Инициализация встроенной системы. Общие положения.
- •Инструменты целевой системы передача образа. Общий вид целевой встроенной системы, размещенной на плате.
- •Встроенный загрузчик.
- •Встроенный монитор и целевое средство отладки.
- •Последовательность загрузки и выполнения образа после его перемещения из пзу в озу. Рисунок, пояснения
- •Последовательность загрузки и выполнения образа из озу после его передачи из хост системы. Рисунок, пояснения.
- •Инициализация программного обеспечения целевой системы. Программные компоненты целевой системы. Рисунок, пояснения.
- •Процесс инициализации программного обеспечения. Рисунок, пояснения.
- •Инициализация ос рв целевой системы.
- •Внутрисхемная отладка (отладка на чипе) целевой системы.
Последовательность загрузки и выполнения образа после его перемещения из пзу в озу. Рисунок, пояснения
Для выполнения распаковки загрузчику нужно рабочее пространство в ОЗУ. Общепринятой и хорошей практикой является проверка контрольной суммы загрузочного образа для того, чтобы убедиться в целостности образа перед загрузкой и его исполнением.
Процесс загрузки осуществляется следующим образом:
- Сжатый образ приложения копируется из ПЗУ в ОЗУ.
- Выполняются шаги инициализации, которые входят в процедуру распаковки.
- Загрузчик передает управление образу. Это осуществляется «перепрыгиванием» на начальный адрес инициализированного образа с помощью команды “jump”, детали которой зависят от используемого процессора. В сущности, команда “jump” устанавливает новое значение в счетчик команд.
- Как показано на Рисунке 15.1, участок памяти, который занимал загрузчик, используется заново. В частности, указатель стека переопределяется на этот участок (см. пунктирную линию) так, что участок памяти может быть использован в качестве стека для новой программы. Рабочее пространство памяти, использованное во время распаковки, также полностью становится доступным
Загрузчик по-прежнему остается доступным, поскольку он хранится в ПЗУ. То, что загрузчик остается доступным для дальнейшего использования – часто намеренное решение со стороны разработчика. Представьте ситуацию, в которой управляющая программа (монитор) встроена в загрузчик. Одна из частей процесса загрузки управляющей программы – установка обработчиков прерываний по умолчанию. Это особенно важно, поскольку во время разработки программы, разрабатываемая программа часто неполна и подвергается постоянным обновлениям. В таком случае, эта программа может оказаться неспособна обработать определенные системные прерывания и исключительные ситуации. Предпочтительно, чтобы по умолчанию монитор выполнял обработку в таких случаях. Например, программа не устанавливает обработчик исключений доступа к памяти и таким образом не обрабатывает возникающие исключительные ситуации. В таком случае, монитор возьмет на себя управление системой, если выполнение программы вызовет исключение, например, если программа аварийно завершит свою работу. Теперь разработчик может отладить и проследить последовательность выполнения программы, используя интерфейс монитора. Как отмечалось ранее, монитор позволяет разработчику изменять значение регистров процессора. Следовательно, как только ошибка найдена и создан новый образ программы, разработчик может изменить счетчик команд таким образом, чтобы он указывал на начальный адрес загрузчика в ПЗУ – в сущности, передать ему управление. В результате, загрузчик скачивает новый образ и заново инициализирует всю систему, без необходимости перезагрузки выключением-включением системы. Так же, еще одно преимущество выполнения кода загрузчика из ПЗУ состоит в том, что плохо работающая программа не сможет испортить код загрузчика в системах, в которых отсутствует блок управления памятью.
В этом примере, образ загрузчика сохранен в формате исполняемых машинных кодов. Образ приложения сохранен в формате ELF, но зашифрован с помощью алгоритма, который работает независимо от формата объектного файла. Образ приложения сохранен в формате ELF так, что загрузчик может быть написан, в качестве универсальной утилиты, способной загружать различные образы приложений. Если образ приложения сохранен в формате ELF, загрузчик может извлечь необходимую для инициализации информацию из образа приложения.