- •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 Программирование жки
Ieee 1149.1 jtag - механизм граничного сканирования
JTAG предназначен для решения следующего перечня основных задач:
начальное тестирование, которое выявляет технологические дефекты
изготовления;
доставка
необходимой
конфигурации
для
программируемых
компонент;
поддержка различного рода отладочных механизмов (статических или
динамических) и режима мониторинга.
Гибкость
использования
механизма
граничного
сканирования
достигается рядом особенностей стандарта, основными из которых
являются:
157
возможность
устройств,
параллельной
поддерживающих
согласованной
данный
работы
стандарт
нескольких
(количество
ограничивается электрическими параметрами интерфейса);
возможность расширения самого механизма (введение дополнительных
команд и форматов данных).
Первое определяет возможность использования механизма граничного
сканирования при разработке многопроцессорных систем с гомогенной или
гетерогенной структурой. Второе расширяет круг задач, где может эффективно
применяться механизм, позволяя решать, например, задачи отладки, сбора
диагностики и мониторинга.
3.3.3.1 Реализация jtag-инструментария
Решая задачу схемотехнического проектирования встроенной системы,
проектировщики
закладывают
средства
начального
тестирования
и
внутрисхемной
инициализации.
Для
этого
разрабатывается
специализированное устройство или сервисный механизм инструментально-
технологического характера. Функциональность и состав инструментального
обеспечения определяются особенностями проекта. Инструментальные кросс-
средства представляют собой совокупность программных средств разработки и
аппаратных интерфейсов, которые обеспечивают доступ к целевому объекту с
инструментальной машины. Ресурсов инструментальной машины обычно
хватает для реализации интерпретатора языкового описания механизма
граничного сканирования при проведении большинства работ с макетным
образцом системы на этапах частичной инициализации и начальной отладки.
Иначе обстоит дело с опытными образцами системы, когда при проектировании
стараются сокращать выделенные инструментальные каналы, формируя
объединенные сервисные механизмы. При этом начальная инициализация
происходит с помощью ранее апробированных вычислительных компонент,
которые совмещают в себе целевую функциональность и поддержку
инструментального режима. Например, инструментальный канал и канал для
поддержки механизма граничного сканирования могут быть объединены. В
этом случае размещение интерпретатора на инструментальной машине
приведет к снижению эффективности работы из-за ограничений канала.
Актуальной становится реализация интерпретатора средствами “сервисного”
контроллера
в
составе
целевой
системы,
который
будет
выполнять
резидентную программу поддержки механизма граничного сканирования.
Решение в пользу такой резидентной реализации интерпретатора будет
зависеть
от
вычислительной
мощности
контроллера
и
сложности
интерпретируемого языка. На сегодняшний день многие производители
предоставляют такого рода интерпретаторы в исходных текстах, для различных
аппаратных платформ. Типовой вариант JTAG – системы приведен на рис. 5.
Эффективность использования технологии граничного сканирования во многом
зависит от решения двух вопросов: описания структуры цепочки JTAG и
158
формулировки алгоритма работы с описанной цепочкой. Под JTAG-цепочкой
(scan path)
понимается
полная
стандартная
тест-шина,
полученная
последовательным соединением сигналов TDI и TDO нескольких компонент.
Это понятие используется при решении следующих задач:
описания
отдельных
микросхем,
поддерживающих
механизм
граничного сканирования;
описания структуры целевой системы с точки зрения механизма
граничного сканирования;
описания
(выделения)
цели
работы
конкретного
алгоритма
(программирование, тестирование).
Обычно в реальной системе имеется несколько микросхем, связанных в
одну JTAG-цепочку. Как отмечалось выше, для описания цепочек и их
иерархии используются языки BSDL и HSDL. Как средства описания они
эффективны, но практически не поддержаны доступными инструментальными
средствами. В результате цепочку JTAG-устройств разработчик задает тем или
иным неформальным образом, что ведет к резкому росту трудоемкости при
использовании механизма граничного сканирования. Задача выделения цели не
входит в число стандартных задач описания структуры JTAG-цепочки. Однако
на практике приходится очень редко работать с регистром граничного
сканирования BSR (Boundary Scan Register), равным объединению BSR всей
цепочки. Обычно для конкретного теста или алгоритма требуется не более
десятка ячеек в BSR или только одна микросхема в составе цепочки.
Стандартного средства такого описания, по-видимому, не существует. Это
объясняется, скорее всего, спецификой описания (по факту) JTAG-цепочки и
кругом
решаемых
JTAG
задач.
Есть
упоминания
о
средствах
программирования, например, flash-памяти, с помощью JTAG, что требует
выделения линий адреса, данных и управления во всем BSR. Однако в
известных реализациях это делается неформальным образом. Справедливости
ради, необходимо отметить, что в стандарте HSDL имеется возможность
«выделять» отдельные ячейки BSR, назначая им произвольные имена. Но это
нельзя назвать выделением цели в чистом виде, поскольку алгоритм,
составленный по такому описанию, по-прежнему будет оперировать полным
BSR. Что касается разработчика, то ему при работе также придется
рассматривать всю JTAG-цепочку (явным или неявным образом), даже если
используется только несколько выводов одной из микросхем.
3.3.4
Измерение производительности программ
Профилировка (профилирование) – измерение производительности как
всей программы в целом, так и отдельных ее фрагментов, с целью нахождения
«горячих» точек (Hot Spots) – тех участков программы, на выполнение которых
расходуется наибольшее количество времени.
Профилировщик
(профайлер, profiler) –
основной
инструмент
оптимизатора программ. Программный код ведет себя как в известной
159
пословице самый медленный верблюд, который определяет скорость каравана,
то есть производительность приложения определяется самым узким его
участком. Программисты нуждаются в инструментальных средствах, чтобы
проанализировать их программы и идентифицировать критические участки
программы.
Профилировщики
помогают
определить,
как
долго
выполняются
определенные части программы, как часто они выполняются, или генерировать
дерево вызовов (call graph). Типично эта информация используется, чтобы
идентифицировать те части программы, которые работают больше всего. Эти
трудоёмкие части могут быть оптимизированы, чтобы выполняться быстрее.
Это общая методика для отладки.