- •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.3 Платформа Java
Java ("Ява", произносится "Джава") – объектно-ориентированный язык
программирования, разрабатываемый компанией Sun Microsystems с 1991 года
и официально выпущенный 23 мая 1995 года. Изначально новый язык
программирования назывался Oak (James Gosling) и разрабатывался для
бытовой электроники, но впоследствии был переименован в Java и стал
использоваться
для
написания
апплетов,
приложений
и
серверного
программного обеспечения.
Программы на Java могут быть транслированы в байт-код, выполняемый
на виртуальной джава-машине (JVM) – программе, обрабатывающей байтовый
код и передающей инструкции оборудованию, как интерпретатор, но с тем
отличием, что байтовый код в отличие от текста обрабатывается значительно
быстрее.
Достоинство подобного способа выполнения программ – в полной
независимости байт-кода от ОС и оборудования, что позволяет выполнять Java
приложения на любом устройстве, которое поддерживает виртуальную
машину. Другой важной особенностью технологии Java является гибкая
система безопасности, благодаря тому, что исполнение программы полностью
контролируется виртуальной машиной. Любые операции, которые превышают
установленные
полномочия
программы
(например,
попытка
несанкционированного
доступа
к
данным
или
соединения
с
другим
компьютером)
вызывают
немедленное
прерывание.
Это
позволяет
пользователям загружать программы, написанные на Java, на их компьютеры
(или другие устройства, например, мобильные телефоны) из неизвестных
источников, при этом не опасаясь заражения вирусами, пропажи ценной
информации, и т. п.
Часто к недостаткам этого подхода относят то, что исполнение байт-кода
виртуальной машиной может снижать производительность программ и
алгоритмов, реализованных на языке Java. Данное утверждение справедливо
для первых версий виртуальной машины Java, однако в последнее время оно
практически
потеряло
актуальность.
Этому
способствовал
ряд
усовершенствований: применение технологии JITs (Just-In-Time compiler),
позволяющей переводить байт-код в машинный код во время исполнения
программы с возможностью сохранения версий класса в машинном коде,
широкое использование native-кода в стандартных библиотеках, а также
аппаратные средства, обеспечивающие ускоренную обработку байт-кода
(например, технология Jazelle, поддерживаемая некоторыми процессорами
фирмы ARM).
Внутри Java существуют 3 основных семейства технологий:
148
J2EE или Java EE (начиная с v1.5) – Java Enterprise Editon, для создания
программного обеспечения уровня предприятия;
J2SE или Java SE (начиная с v1.5) – Java Standard Editon, для создания
пользовательских приложений, в первую очередь – для настольных
систем;
J2ME, Java ME или Java Micro Edition, для использования в
устройствах, ограниченных по вычислительной мощности, в том числе
мобильных телефонах, PDA, встроенных системах.
Прежняя версия JVM от Microsoft (аналог SUN JVM v.1.1.3) во многом
отступает от стандартов языка, предложенных Sun Microsystems, с целью
проприетарной поддержки платформы Windows. Впоследствии это явилось
поводом для судебных исков со стороны Sun Microsystems к Microsoft. В
настоящее время между двумя компаниями достигнуты договорённости вплоть
до снятия взаимных судебных претензий и произведено взаимное кросс-
лицензирование технологий. По версии Microsoft будет поддерживаться
спецификация MS-J# соответствующая спецификации SUN-JVM J2SE.
Java 2 Micro Edition
Java 2 Micro Edition (J2ME) – подмножество технологий фирмы Sun
Microsystems, основанное на концепции Java-платформы и предназначенное
для выполнения приложений, написанных на языке Java на устройствах
бытовой
электроники,
например
мобильных
телефонах,
персональных
органайзерах, цифровых телевизионных ресиверах и т. п. Основой J2ME
является виртуальная машина, способная исполнять байт-код языка Java.
J2ME задумана для того, чтобы обеспечить эффективное исполнение Java-
приложений
на
устройствах
бытовой
электроники,
отличительной
особенностью которых является ограниченная вычислительная мощность,
ограниченный объём памяти, малый размер дисплея, питание от портативной
батареи,
а
также
низкоскоростные
и
недостаточно
надёжные
коммуникационные возможности. Типичный современный мобильный телефон
содержит внутри 32-разрядный RISC-процессор с тактовой частотой 50 МГц,
имеет объём оперативной памяти около 4 Мб, цветной дисплей размером 2
дюйма и имеет возможность GPRS-соединения с Интернетом со скоростью до
172 Кб/с, которое при этом фундаментально ненадёжно, поскольку скорость
передачи данных может неожиданно упасть, или соединение может быть
вообще полностью потеряно.
J2ME специфицирует две базовые конфигурации, которые определяют
требования
к
виртуальной
машине
или,
иначе
говоря,
определяют
подмножество стандартного языка Java, которое виртуальная машина способна
выполнять, а также минимальный набор базовых классов: CLDC (Connected
Limited Device Configuration – конфигурация устройства с ограниченными
коммуникационными возможностями) и CDC (Connected Device Configuration –
149
конфигурация
устройства
с
нормальными
коммуникационными
возможностями).
J2ME также определяет несколько так называемых профилей (profiles),
которые дополняют и расширяют упомянутые выше конфигурации, в частности
определяют модель приложения, возможности графического интерфейса, а
также коммуникационные функции (например доступ к Интернету) и др.
В настоящее время самой распространённой конфигурацией является
CLDC, для которого разработан профиль MIDP (Mobile Information Device
Profile – профиль для мобильного устройства с информационными функциями).
MIDP определяет понятие мидлета (MIDlet) – компактного Java-приложения,
что делает его пригодным для передачи по сети и установки на мобильном
устройстве. Другим популярным профилем для J2ME/CLDC является DoJa,
разработанный фирмой NTT DoCoMo для её собственного сервиса iMode.
iMode весьма распространён в Японии, и в меньшей степени в Европе и на
Дальнем Востоке.
Конфигурация CLDC успешно используется в большинстве современных
мобильных телефонов и портативных органайзеров. По данным компании Sun
Microsystems к концу 2004 года в мире было выпущено более 570 миллионов
мобильных устройств с поддержкой этой конфигурации Java. Это делает J2ME
доминирующей технологией Java в мире. Объёмы производства мобильных
телефонов
значительно
превышают
количество
других
компьютерных
устройств, способных исполнять приложения на Java (например, персональных
компьютеров).