- •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.2.10.6 Язык программирования Esterel
Esterel – императивный и параллельный язык, который имеет хорошо
определенную формальную базу и законченную реализацию. Фундаментальная
концепция ESTEREL – событие. Событие соответствует посылке или
получению сигналов, которые передают данные.
Esterel основан на синхронной модели. Этот синхронизм упрощает
обоснование времени и гарантирует детерминизм.
Пример программы на языке Esterel:
module ABRO:
input A, B, R;
output O;
loop
[ await A || await B ];
emit O
each R
end module
Приведенная выше программа осуществляет генерацию события ‘О’
только при наличии обоих событий на входах ‘A’ и ‘B’. Сброс программы
осуществляется через вход ‘R’.
В настоящее время Esterel используется в системе программирования
Esterel Studio (Synfora), предназначенной для проектирования систем-на-
кристалле.
3.2.10.7 Язык программирования Lustre
Lustre – декларативный язык программирования, основанный на модели
SDF (synchronous dataflow) и предназначенный для программирования
реактивных систем. Язык начал разрабатываться в 1984 году, во Франции.
152
Рисунок 60. Внешний вид системы SCADE, в котрой используется язык Lustre
Язык Lustre активно используется для реализации ответственных
приложений
в
авиакосмической
промышленности.
На
рисунке
выше
представлен внешний вид системы SCADE, использующей в своей основе этот
язык.
3.3 Инструментальные средства отладки и тестирования
ВВС
3.3.1
Симулятор
Симулятор – система для полной или частичной имитации поведения и
структуры какого-либо объекта. Симулятор относится к инструментальным
средствам отладки, тестирования и верификации программных и аппаратных
компонент вычислительной системы.
153
		
В случае программной реализации симулятор можно исполнять на
инструментальной машине. В программировании встроенных систем и СнК
чаще всего используется симулятор процессора. Внешне такой симулятор
выглядит как обычный отладчик.
Рисунок 61: Внешний вид симулятора-отладчика Keil Sofrware
При симуляции различных ASIC, процессоров, графических акселераторов
используют программно-аппаратные симуляторы, выполненные на базе FPGA.
Такой подход позволяет существенно сократить время тестирования и
верификации по сравнению с чисто программной симуляцией. Стоимость
программно-аппаратного
симулятора
значительно
выше
стоимости
программного.
К достоинствам симулятора можно отнести возможность моделирования
окружающей среды исследуемой системы, что позволяет производить работу в
реальном масштабе времени с точки зрения наблюдателя, находящегося внутри
исследуемой системы.
К сожалению, в симуляторах всегда присутствует инструментальная
погрешность, возникающая из-за неточности моделирования, абстракции,
ошибок реализации и так далее.
	154
		
3.3.2
Внутрисхемный эмулятор
Внутрисхемный эмулятор – это аппаратное устройство, используемое при
отладке, обычно выполняемое в форме микропроцессора с дополнительными
контактами.
Внутрисхемные
эмуляторы
подключаются
к
отлаживаемой
или
тестируемой системе вместо целевого микропроцессора или микроконтроллера
и позволяют гибко управлять поведением системы на протяжении процесса
отладки, собирать данные о состоянии ее различных объектов, выполнять
программы пользователя в различных режимах: в режиме реального времени
(непрерывное выполнение программы с заданного адреса), в пошаговом
режиме, в режиме с остановками функционирования по заданному условию.
Зачастую они позволяют эмулировать не только целевой процессор, но и
память, тактовый генератор, устройства ввода-вывода.
Ри
сунок 62: Внутрисхемный
эмулятор для процессоров
фирмы Atmel
Применение внутрисхемных эмуляторов позволяет решить почти все
проблемы, связанные с отладкой и тестированием программного обеспечения и
аппаратуры. К сожалению, крупным недостатком внутрисхемных эмуляторов
является их очень высокая стоимость.
Внутрисхемные
эмуляторы
являются
средством,
заменяющим
на
аппаратном уровне часть целевой системы. В настоящее время распространены
два основных варианта:
 эмулятор процессора;
 эмулятор ПЗУ.
В последнее время, с появлением ОКМЭВМ со встроенной постоянной
памятью (в виде FLASH или ОТР), второй вариант эмуляторов начал
постепенно выходить из употребления. В принципе, внутрисхемный эмулятор
	155
		
имеет тот же набор функций, что и программный симулятор. Приведем
основные отличия:
 отладка возможна на реальном оборудовании (что не исключает
возможности программной имитации окружения);
 отладка может производиться в реальном времени.
Рисунок 63: Отладка с помощью бесплатного отладчика GDB-Insight
Интересным вариантом внутрисхемной эмуляции является JTAG. В
классических эмуляторах процессора для проведения отладки центральный
процессор заменяется на эмулирующую головку (у ряда новых процессоров
эмулирующую головку можно подключать непосредственно к впаянному
кристаллу). Это приводит к необходимости ставить на плату панель под
процессор, что уменьшает надежность системы. При использовании технологии
JTAG, эмулятор подключается к плате через специальный технологический
разъем. При этом процессор не вынимается. JTAG позволяет отключить ядро
процессора и управлять шиной адреса, данных и управления напрямую. К
сожалению,
для
управления
всеми
выводами
процессора
необходимо
передавать через порт JTAG большое количество информации. Поэтому
отладка в реальном времени (на частоте работы процессора) невозможна.
	156
		
Большим достоинством JTAG является аппаратная простота эмулятора.
Например, в самом простом случае, достаточно подключить порт JTAG к
параллельному LPT порту обычного ПК.
Рисунок 64: Адаптер Wiggler для отладки через JTAG. Схема электрическая
принципиальная.
3.3.3
