- •1 Введение во встраиваемые вычислительные системы
- •1.1 Определения, особенности, классификация
- •1.1.6.1 Уровень предприятия (1)
- •1.1.6.2 Уровни объекта (2) и подсистемы (3)
- •1.1.6.3 Уровень функциональных узлов (4)
- •1.1.6.4 Уровень оборудования функциональных узлов (5)
- •1.1.6.4.1 Устройства ввода-вывода
- •1.1.6.4.2 Устройство сопряжения с объектом
- •1.2 Механизмы реального времени
- •1.2.4.1 Классификация прерываний
- •1.2.4.2 Функции системы прерываний и их реализация
- •1.2.5.1 Основные характеристики pcf8583
- •1.2.5.2 Описание
- •1.2.5.3 Режимы работы часов
- •1.2.5.4 Регистры-счетчики
- •1.2.5.5 Будильник
- •1.2.5.6 Регистры сигнализации
- •1.2.5.7 Таймер
- •1.2.5.8 Режим счетчика событий
- •1.2.5.9 Вывод прерывания int
- •2 Технические средства встраиваемых систем
- •2.1 Элементная база микропроцессорной техники для
- •2.2 Модульный принцип организации процессора ввс
- •2.2.4.1 Энергонезависимая память e2prom: историческая справка
- •2.2.4.2 Основные характеристики eeprom at24Cxx
- •2.2.4.3 Описание
- •2.2.4.4 Организация памяти
- •2.2.4.5 Адресация модулей eeprom
- •2.2.4.6 Операция записи
- •2.2.4.7 Операция чтения
- •2.2.5.1 Однонаправленные порты
- •2.2.5.2 Двунаправленные порты и порты с альтернативной функцией
- •2.2.6.1 Программируемые таймеры в микроконтроллере с ядром Intel
- •2.2.6.2 Модули таймеров-счетчиков со схемами входного захвата,
- •2.2.7.1 Классификация ацп
- •2.2.9.1 Контроллер последовательного интерфейса в
- •2.2.10 Подсистема синхронизации
- •2.2.11 Механизмы начальной инициализации встроенной памяти
- •2.2.11.1 Внешнее программирование встроенного пзу
- •2.3 Сетевые интерфейсы встраиваемых систем
- •2.3.1.1 Концепция шины I²c
- •2.3.1.2 Принцип работы шины I²c
- •2.3.1.3 Сигналы старт и стоп
- •2.3.1.4 Подтверждение
- •2.3.1.5 Синхронизация
- •2.3.1.6 Форматы обмена данными по шине I²c (7-битный адрес)
- •2.3.1.7 Арбитраж
- •2.3.1.8 Достоинства шины I²c
- •2.3.2.1 Согласование и конфигурация линии связи
- •2.3.2.2 Защитное смещение
- •2.3.2.3 Исключение приема при передаче в полудуплексном режиме
- •2.3.4.1 Протоколы реального времени
- •2.3.4.2 Резервирование каналов и кольцевая топология
- •2.3.4.3 Отличия от обычного Ethernet
- •2.3.6.1 Преимущества
- •2.3.6.2 Преимущества plc по сравнению с Wi-Fi
- •2.3.6.3 Недостатки
- •2.3.9.1 Физический уровень
- •2.3.9.2 Контроллер шины
- •2.3.9.3 Оконечные устройства
- •2.3.9.4 Монитор канала
- •3 Программное обеспечение и инструментальные
- •3.1 Особенности программного обеспечения ввс
- •3.1.4.1 Особенности плк
- •3.1.4.2 Варианты построения систем на базе плк
- •3.1.4.3 Особенности программирования плк
- •3.1.4.4 Варианты реализации плк
- •3.1.4.5 Цикл плк
- •3.1.4.6 Области применения плк
- •3.1.4.7 Сравнение с микроконтроллерами
- •3.2 Языки программирования
- •3.2.8.1 Удобочитаемость
- •3.2.8.2 Лёгкость создания программ
- •3.2.8.3 Надёжность
- •3.2.10 Краткий обзор языков, используемых при проектировании
- •3.2.10.1 Язык программирования Си
- •3.2.10.3 Платформа Java
- •3.2.10.4 Платформа .Net
- •3.2.10.5 Язык программирования ada
- •3.2.10.6 Язык программирования Esterel
- •3.2.10.7 Язык программирования Lustre
- •3.3 Инструментальные средства отладки и тестирования
- •Ieee 1149.1 jtag - механизм граничного сканирования
- •3.3.3.1 Реализация jtag-инструментария
- •3.3.4.1 Цели и задачи профилировки
- •3.3.4.2 Общее время исполнения
- •3.3.4.3 Удельное время выполнения
- •3.3.4.4 Определение количества вызовов
- •3.3.4.5 Определение степени покрытия
- •3.3.5.1 Обеспечение корректности программного кода: обзор
- •3.4 Разработка программного продукта
- •3.4.2.1 Сложность проектирования и разработчики- одиночки
- •3.4.2.2 Оценка времени проектирования
- •3.4.2.3 Использование новых технологий
- •3.4.4.1 Безопасность и перемены
- •3.4.4.6 Играй в защите
- •3.4.4.7 Сбор метрических данных
- •3.4.4.8 Что дает давление сверху
- •3.4.4.9 Сердитый начальник
- •3.4.4.10 Туманные спецификации
- •3.4.4.11 Конфликт
- •3.4.4.12 Кто такой катализатор проекта
- •3.4.4.13 Человеку свойственно ошибаться
- •3.4.4.14 О персонале
- •3.4.4.15 Проблемы социологии
- •3.4.4.16 О патологической политике (еще раз)
- •3.4.4.17 Злоба и скупость
- •3.4.4.18 Основы здравого смысла
- •4 Устройство современного контроллера на примере
- •4.1 Назначение стенда
- •4.2 Состав стенда
- •4.3 Разъемы стенда и назначение выводов
- •4.4 Обзор компонентов принципиальной электрической
- •4.4.3.1 Матричная клавиатура
- •4.4.3.2 Жидкокристаллический индикатор
- •4.4.3.3 Светодиодные индикаторы
- •4.4.3.4 Звукоизлучатель
- •4.4.3.5 Дискретные входы-выходы
- •4.4.10 Фильтрующие емкости
- •4.5 Микроконтроллер aDuC812
- •4.6 Расширитель портов ввода-вывода на базе плис
- •4.6.1 Регистр клавиатуры kb
- •4.6.2 Регистр шины данных жки data_ind
- •4.6.3 Регистр данных параллельного порта ext_lo
- •4.6.4 Регистр данных параллельного порта ext_hi
- •4.6.5 Регистр управления ena
- •4.6.6 Регистр управления жки c_ind
- •4.6.7 Регистр управления светодиодами sv
- •4.6.8 Логическая схема плис: доступ к периферийным устройствам
- •4.6.9 Жидкокристаллический индикатор
- •4.6.9.1 Историческая справка
- •4.6.9.2 Подключение жки
- •4.6.9.3 Контроллер жки
- •4.6.9.4 Память данных жки (ddram)
- •4.6.9.9 Таблица команд контроллера жки
- •4.6.9.10 Операции чтения и записи команд/данных
- •4.7 Внешняя память программ и данных
- •5 Инструментальные средства для работы со стендом
- •5.1 Программирование стенда sdk-1.1
- •5.2 Компилятор sdcc
- •5.2.10 Использование меток
- •5.2.11 Директива __naked
- •5.2.12 Формат Intel hex
- •5.3 Инструментальная система m3p
- •5.4 Утилита make
- •5.5 Система контроля версий
- •6 Примеры программирования стенда sdk-1.1
- •6.1 Приступаем к работе
- •6.2 Программирование светодиодных индикаторов
- •6.3 Программирование последовательного канала
- •6.4 Программирование таймера
- •6.5 Программирование жки
3 Программное обеспечение и инструментальные
средства встраиваемых систем
Данная глава посвящена обзору программного обеспечения (ПО)
встраиваемых систем, языков программирования, используемых для разработки
ПО ВВС, специализированных инструментальных средств. Особое внимание
уделяется обсуждению проблем проектирования программного проекта в
общем и в случае встраиваемых систем, особенностям управления такого рода
проектами.
3.1 Особенности программного обеспечения ввс
3.1.1
Основные определения
Программное обеспечение – незафиксированная (soft – мягкий) часть
системы, которую можно изменить. Неизменяемые системы (hard – твердый), к
примеру, сетевой коммутатор, имеющий в своем составе ПО (даже целые ОС),
тем не менее считается аппаратным обеспечением.
Операционная система реального времени (ОС РВ) – это средство
распределения и выделения ресурсов встроенной системы.
Программируемый логический контроллер (ПЛК, PLC) – контроллер,
программируемый конечным пользователем, а не профессионалом в области
программирования. ПЛК обычно выпускаются в виде наборов модулей –
конструкторов, из которых пользователь сам строит систему. В состав ПЛК
входит, как правило, процессорный модуль и несколько модулей ввода-вывода.
3.1.2
Особенности ПО ВВС
К особенностям программного обеспечения встроенных систем, как уже
говорилось, мы относим:
Реальное время;
Надёжность;
Безопасность;
Малые ресурсы аппаратуры (память, быстродействие, электропитание);
Тяжелые условия эксплуатации платформы.
Программное обеспечение встроенных систем может быть построено
следующими способами:
Специально под задачу (специализированное ПО);
На базе операционной системы реального времени;
На базе ОС общего назначения;
На базе виртуальной машины программируемого
контроллера.
129
логического
3.1.3
Операционные системы реального времени
ОС РВ в проектировании является некоторой постоянной составляющей,
вынесенной за скобки после анализа множества монолитных реализаций
программного обеспечения ВВС.
Что, по сути, дает применение ОС РВ во ВВС? Во-первых, это средство
распределения
ресурсов
между
прикладными
процессами
и
средство
организации этих процессов. Во-вторых, это отлаженный (то есть с
минимальным
количеством
ошибок)
программный
код
с
полезной
функциональностью. В-третьих, ОС РВ, как правило, является архитектурой с
заведомо известными плюсами и минусами. В-четвертых, это средство для
организации связи с достаточно большой номенклатурой аппаратных средств
(различных
контроллеров,
периферийных
устройств).
Самостоятельная
поддержка
множества
протоколов
обмена,
различных
процессоров
и
контроллеров, как правило, оказывается нерентабельной для большинства
компаний, создающих ВВС, что также определяет использование готовых ОС
РВ.
Какие минусы может принести использование ОС РВ во ВВС?
Естественно, большинство ОС РВ, присутствующие на рынке, разрабатывалась
как относительно универсальные системы. Универсальность, как правило,
означает
избыточность
функций
и,
следовательно,
необходимость
в
дополнительных аппаратных ресурсах для поддержки этих функций. При
использовании в проекте готовой ОС РВ существует возможность получения
закрытой системы, то есть системы со скрытой внутренней структурой. Против
использования такого "черного ящика" есть много аргументов. Самым сильным
из
них
является
невозможность
проверки
системы
(например,
при
сертификации) на отсутствие серьезных ошибок и разного рода неучтенного,
"шпионского" программного кода.
В последнее время популярен способ проектирования систем на базе
шаблонов. Так в частности, в HW/SW CoDesign проектах используют заготовки
ОС РВ (планировщики, переключатели процессов и другие). Эти шаблоны
используются на этапе архитектурного проектирования. В результате на выходе
системы проектирования разработчик получает монолитный код. Такой подход
лишен большинства недостатков, присущих использованию универсальных
(или покупных) ОС РВ.
Итак, основными причинами, заставляющими применять ОС РВ в составе
программного обеспечения ВВС, будем считать:
Необходимость использования готовой, надежной и предсказуемой
платформы
(выделение
из
множества
программ
стандартной
составляющей,
поддерживающей
унификацию,
стандартизацию,
модульность);
Необходимость
обеспечения
параллельного
функционирования
прикладных процессов;
130
Необходимость обеспечения защиты процессов друг от друга;
Необходимость в готовых драйверах периферийных устройств,
вычислительной сети [40].
3.1.4
Программируемые логические контроллеры
Программируемый логический контроллер (ПЛК, PLC) – контроллер,
программируемый конечным пользователем, а не профессионалом в области
программирования. ПЛК обычно выпускаются в виде наборов модулей –
конструкторов, из которых пользователь сам строит систему. В состав ПЛК
входит, как правило, процессорный модуль и несколько модулей ввода-вывода.