- •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 Программирование жки
1.2.4.2 Функции системы прерываний и их реализация
Функции системы прерываний:
1. Прием и хранение запросов прерываний от многих источников.
2. Выделение
наиболее
приоритетного
запроса
из
множества
поступивших.
3. Проверка возможности обработки запросов центральным процессором
(проверка
замаскированности
запросов
или
сравнение
уровня
приоритетности запросов с так называемым порогом прерываний).
4. Сохранение состояния (контекста) прерываемой программы.
5. Вызов обработчика прерываний.
6. Собственно обработка прерываний (выполнение программы обработки
прерываний).
7. Восстановление состояния (контекста) прерванной программы и
возобновление ее выполнения.
Этапы
1-5
выполняются
аппаратными
средствами
компьютера
автоматически при появлении запроса прерывания. Этап 7 также выполняется
аппаратно по команде возврата из обработчика прерывания.
25
Процедура опроса источников прерываний с целью выделения наиболее
приоритетного (полинг/polling) может быть реализована как на аппаратном, так
и на программном уровнях.
Программный полинг реализуется специальной программой, которая
последовательно опрашивает триггеры запросов, объединенных, как правило, в
единый регистр с целью поиска первого установленного бита.
Аппаратный полинг может быть реализован либо на основе многотактной
схемы, в основу которой положен двоичный счетчик, либо с помощью
однотактной схемы, которую обычно называют дейзи-цепочка.
Отношение процессора к поступившим запросам прерываний может быть
выражено с помощью одного из двух механизмов:
механизм масок;
порог прерываний.
1.2.5
Часы реального времени
Во многих, сравнительно мощных микроконтроллерах есть встроенный
блок часов реального времени (Real-Time Clock, RTC). Часы позволяют
автоматически отслеживать переход через границу минут, часов, суток,
отслеживают високосные года и автоматически переходят на летнее время [5].
Как правило, блок RTC создают на элементной базе, обеспечивающей
пониженное энергопотребление. Для подсчета времени в RTC используются
специальные
кварцевые
резонаторы
с
частотой
32,768
кГц.
У
микроконтроллера
обычно
существует
возможность
подключения
дополнительного
электропитания
(например,
литиевой
батарейки
или
ионистора). Пример микроконтроллера со встроенным RTC – Philips LPC 2000,
на базе ядра ARM7. На этом контроллере построен учебный стенд SDK-2.0.
Для того, чтобы часы реального времени могли выдавать точное
астрономическое время, должны быть соблюдены следующие условия:
1. У часов должно быть собственное автономное питание, чтобы
кратковременные или длительные перебои с питанием не приводили к
сбросу астрономического времени.
2. Для обеспечения точности хода, часы должны калиброваться, так как у
кварцевых резонаторов есть некоторый разброс параметров.
3. Точность хода часов зависит от параметров окружающей среды. Больше
всего на точность хода влияет температура, так как при изменении
температуры немного изменяется частота кварцевого резонатора. Для
обеспечения точности хода необходимо предусмотреть калибровочные
значения для различных температурных диапазонов.
Необходимо помнить, что часы реального времени не являются абсолютно
надежным устройством. Проблемы могут возникнуть как на уровне интерфейса
с часами (у большинства RTC нет контроля целостности передаваемых
26
данных), в кварцевом резонаторе или в самих часах. Если целевая функция
системы
сильно
зависит
от
астрономического
времени,
необходимо
предусмотреть несколько источников точного времени образуя мажоритар, а
при считывании данных с часов реального времени проверять границы
диапазонов считанных значений и проверять (например, с помощью таймера),
идут часы или нет. Из-за аппаратных сбоев, часы реального времени могут не
просто остановиться, но также из-за разного рода проблем может измениться
серьезно тактовая частота, что приведет к серьезному замедлению или
ускорению хода часов.
Необходимо заметить, что на точность хода часов реального времени
влияет топология проводников на печатной плате. Проблема возникает из-за
того, что часы реального времени делают, как правило, в виде устройства с
пониженным энергопотреблением. Пониженное энергопотребление является
следствием высокого импеданса между выводами микросхемы, а такие схемы
чувствительны к помехам. Кроме того, на точность часов оказывает влияние
паразитная ёмкость печатного монтажа. Для минимизации влияния паразитной
ёмкости необходимо специальным образом организовывать разводку печатной
платы.
Далее будет приведен конкретный пример организации и работы часов
реального времени PCF8583 [14], которые установлены в контроллере SDK-1.1
(устройство данного контроллера будет рассматриваться в следущих главах).