- •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.4 Платформа .Net
.NET Framework – программная технология от компании Microsoft,
предназначенная для создания обычных программ и веб-приложений.
Одной из основных идей Microsoft .NET является совместимость
различных служб, написанных на разных языках. Например, служба,
написанная на C++ для Microsoft .NET, может обратиться к методу класса из
библиотеки,
написанной
на
Delphi;
на
C#
можно
написать
класс,
наследованный от класса, написанного на Visual Basic .NET, а исключение,
созданное методом, написанным на C#, может быть перехвачено и обработано в
Delphi. Каждая библиотека (сборка) в .NET имеет сведения о своей версии, что
позволяет устранить возможные конфликты между разными версиями сборок.
.NET является патентованной технологией корпорации Microsoft. Тем не
менее, после заключения договоренности с компанией Novell, технология Mono
была признана как реализация .NET на Unix-подобных системах (GNU/Linux,
Mac OS X). Однако договорённость касается Novell и клиентов Novell, также
технологии ASP.NET, ADO.NET и Windows.Forms не были стандартизированы
ECMA/ISO и использование их в Mono находится под угрозой претензий со
150
стороны Microsoft (претензии возможны только в странах, где существуют
патенты на программное обеспечение). Mono предоставляет реализацию
ASP.NET, ADO.NET и Windows.Forms, но в то же время рекомендует обходить
эти API.
Приложения также можно разрабатывать в текстовом редакторе и
использовать консольный компилятор.
Подобно технологии Java, среда разработки .NET создаёт байт-код,
предназначенный для исполнения виртуальной машиной. Входной язык этой
машины в .NET называется MSIL (Microsoft Intermediate Language), или CIL
(Common Intermediate Language, более поздний вариант), или просто IL.
Применение байт-кода позволяет получить кроссплатформенность на уровне
скомпилированного проекта (в терминах .NET: сборка), а не только на уровне
исходного текста, как, например, в С. Перед запуском сборки в среде
исполнения
CLR
байт-код
преобразуется
встроенным
в
среду
JIT-
компилятором в машинные коды целевого процессора. Также существует
возможность скомпилировать сборку в родной (native) код для выбранной
платформы с помощью поставляемой вместе с .NET Framework утилиты
NGen.exe.
3.2.10.5 Язык программирования ada
Ада (Ada) – язык программирования, созданный в 1979-1980 годах в
результате проекта, предпринятого Министерством обороны США с целью
разработать единый язык программирования для так называемых встроенных
систем (то есть систем управления автоматизированными комплексами,
работающими в реальном времени). Имелись в виду, прежде всего, бортовые
системы управления военными объектами (кораблями, самолётами, танками,
ракетами, снарядами и т. п.). Перед разработчиками не стояло задачи создать
универсальный язык, поэтому решения, принятые авторами Ады, нужно
воспринимать в контексте особенностей выбранной предметной области.
Ада – это структурный, модульный, объектно-ориентированный язык
программирования, содержащий высокоуровневые средства программирования
параллельных процессов. Синтаксис Ады унаследован от языков типа Algol или
Паскаль, но расширен, а также сделан более строгим и логичным. Ада - язык со
строгой типизацией, в нём исключена работа с объектами, не имеющими типов,
а автоматические преобразования типов сведены к абсолютному минимуму.
Для удовлетворения требованиям надёжности язык построен таким
образом, чтобы как можно большее количество ошибок обнаруживалось на
этапе компиляции. Кроме того, одним из требований при разработке языка
была максимально лёгкая читаемость текстов программ, даже в ущерб лёгкости
написания. Результатом такого подхода стал несколько «тяжеловесный»
синтаксис
и
множество
ограничений,
часто
воспринимаемых
профессиональными программистами как «глупые» и «ненужные». Именно это
151
привело к формированию представления об Аде как о сложном, малопонятном
и неудобном в использовании языке. Это представление верно лишь отчасти:
написание простой программы на Аде действительно требует больше времени,
чем на других, менее формальных языках, типа Си, но отладка и
сопровождение программ, особенно крупных и сложных, значительно
упрощается. По утверждению Стефена Цейгера, разработка программного
обеспечения на Аде в целом обходится на 60 % дешевле, а разработанная
программа имеет в 9 раз меньше дефектов, чем при использовании языка Си.
Язык Ада используется в США и Европе в разработке сложных больших
проектов, главным образом, встроенных систем, причём далеко не только в
военных приложениях.