Встроенная система
Встроенная система — это компьютерная система — комбинация компьютерного процессора , компьютерной памяти и периферийных устройств ввода-вывода , — которая выполняет специальную функцию в более крупной механической или электронной системе. [1] [2] Он встроен как часть целостного устройства, часто включающего электрическое или электронное оборудование и механические части. Поскольку встроенная система обычно контролирует физические операции машины, в которую она встроена, она часто имеет по вычислениям в реальном времени ограничения . Встроенные системы управляют многими устройствами общего пользования. [3] В 2009 году [update]Было подсчитано, что девяносто восемь процентов всех производимых микропроцессоров использовались во встроенных системах. [4] [ нужно обновить ]
Современные встроенные системы часто основаны на микроконтроллерах (т.е. микропроцессорах со встроенной памятью и периферийными интерфейсами), но обычные микропроцессоры (использующие внешние микросхемы для памяти и схемы периферийных интерфейсов) также распространены, особенно в более сложных системах. В любом случае используемые процессоры могут относиться к типам от общего назначения до процессоров, специализирующихся на определенном классе вычислений, или даже специально разработанных для конкретного приложения. Общим стандартным классом специализированных процессоров является процессор цифровых сигналов (DSP).
Поскольку встроенная система предназначена для решения конкретных задач, инженеры-конструкторы могут оптимизировать ее, чтобы уменьшить размер и стоимость изделия, а также повысить его надежность и производительность. Некоторые встроенные системы производятся массово, что позволяет добиться эффекта масштаба .
Размер встраиваемых систем варьируется от портативных персональных устройств, таких как цифровые часы и MP3-плееры , до более крупных машин, таких как бытовая техника , промышленные сборочные линии , роботы , транспортные средства, контроллеры светофоров и системы медицинской визуализации . Часто они составляют подсистемы других машин, таких как авионика в самолетах и астрионика в космических кораблях . Крупные объекты, такие как заводы , трубопроводы и электрические сети, полагаются на несколько встроенных систем, объединенных в сеть. Встраиваемые системы, такие как программируемые логические контроллеры , обобщенные посредством настройки программного обеспечения, часто включают в себя их функциональные блоки.
Встраиваемые системы варьируются от простых по сложности (с одним микроконтроллером) до очень высоких, с несколькими устройствами, периферийными устройствами и сетями, которые могут располагаться в стойках для оборудования или на больших географических территориях, соединенных между собой линиями связи на большие расстояния.
История
[ редактировать ]Фон
[ редактировать ]Истоки микропроцессора и микроконтроллера можно проследить до интегральной схемы МОП , которая представляет собой интегральную микросхему , изготовленную из МОП-транзисторов ( полевых транзисторов металл-оксид-полупроводник ) и разработанную в начале 1960-х годов. К 1964 году МОП-чипы достигли более высокой плотности транзисторов и более низких производственных затрат, чем биполярные чипы. Сложность МОП-чипов продолжала увеличиваться со скоростью, предсказанной законом Мура , что привело к крупномасштабной интеграции (LSI) с сотнями транзисторов на одном МОП-чипе к концу 1960-х годов. Применение микросхем MOS LSI для вычислений стало основой для первых микропроцессоров, поскольку инженеры начали осознавать, что полная компьютерная процессорная система может содержаться на нескольких чипах MOS LSI. [5]
Первые многокристальные микропроцессоры, Four-Phase Systems AL1 в 1969 году и Garrett AiResearch MP944 в 1970 году, были разработаны с использованием нескольких микросхем MOS LSI. Первым однокристальным микропроцессором был Intel 4004 , выпущенный в 1971 году. Он был разработан Федерико Фаггином с использованием его технологии MOS с кремниевым затвором совместно с Intel инженерами Марсианом Хоффом и Стэном Мазором , а также Busicom инженером Масатоши Шимой . [6]
Разработка
[ редактировать ]Одной из первых узнаваемых современных встраиваемых систем был компьютер управления Apollo . [ нужна ссылка ] развито ок. 1965 год, Чарльз Старк Дрейпер в Приборной лаборатории Массачусетского технологического института . В начале проекта компьютер управления «Аполлона» считался самым рискованным элементом в проекте «Аполлон», поскольку в нем использовались недавно разработанные монолитные интегральные схемы для уменьшения размера и веса компьютера.
Первой встроенной системой массового производства был компьютер наведения Autonetics D-17 для ракеты Minuteman , выпущенный в 1961 году. Когда Minuteman II пошел в производство в 1966 году, D-17 был заменен новым компьютером, который представлял собой первый высокопроизводительный компьютер. массовое использование интегральных схем.
Со времени этих первых приложений в 1960-х годах стоимость встроенных систем снизилась, а вычислительная мощность и функциональность резко возросли. Первый микропроцессор Intel 4004 (выпущенный в 1971 году) был разработан для калькуляторов и других небольших систем, но все еще требовал внешней памяти и вспомогательных микросхем. К началу 1980-х годов компоненты памяти, системы ввода и вывода были интегрированы в тот же чип, что и процессор, образующий микроконтроллер. Микроконтроллеры находят приложения, в которых компьютер общего назначения был бы слишком дорогим. По мере падения стоимости микропроцессоров и микроконтроллеров распространенность встроенных систем возросла.
Сравнительно недорогой микроконтроллер можно запрограммировать на выполнение той же роли, что и большое количество отдельных компонентов. С появлением микроконтроллеров стало возможным заменить, даже в потребительских товарах, дорогие аналоговые компоненты на основе ручек, такие как потенциометры и конденсаторы переменной емкости , кнопками вверх/вниз или ручками, считываемыми микропроцессором. Хотя в этом контексте встроенная система обычно более сложна, чем традиционное решение, большая часть сложности заключена в самом микроконтроллере. Может потребоваться очень мало дополнительных компонентов, и большая часть усилий по проектированию приходится на программное обеспечение. Прототип и тестирование программного обеспечения могут быть более быстрыми по сравнению с проектированием и созданием новой схемы без использования встроенного процессора.
Приложения
[ редактировать ]Встраиваемые системы обычно встречаются в потребительских, промышленных, автомобильных , бытовых , медицинских, телекоммуникационных, коммерческих, аэрокосмических и военных приложениях.
В телекоммуникационных системах используются многочисленные встроенные системы, от телефонных коммутаторов сетевых до сотовых телефонов у конечного пользователя . Компьютерные сети используют выделенные маршрутизаторы и сетевые мосты для маршрутизации данных.
Бытовая электроника включает MP3-плееры , телевизоры , мобильные телефоны , игровые приставки , цифровые камеры , GPS- приемники и принтеры . Бытовая техника, такая как микроволновые печи , стиральные и посудомоечные машины , включает в себя встроенные системы, обеспечивающие гибкость, эффективность и функциональность. В современных системах отопления, вентиляции и кондиционирования воздуха (HVAC) используются сетевые термостаты для более точного и эффективного контроля температуры, которая может меняться в зависимости от времени суток и сезона . Домашняя автоматизация использует проводные и беспроводные сети, которые можно использовать для управления освещением, климатом, безопасностью, аудио/видео, наблюдением и т. д., причем все они используют встроенные устройства для обнаружения и управления.
Транспортные системы, от самолетов до автомобилей, все чаще используют встроенные системы. Новые самолеты оснащены современной авионикой, такой как инерциальные системы наведения и приемники GPS , к которым также предъявляются серьезные требования по безопасности. Космические корабли полагаются на системы астрионики для коррекции траектории. В различных электродвигателях — бесщеточных двигателях постоянного тока , асинхронных двигателях и двигателях постоянного тока — используются электронные контроллеры двигателей . Автомобили , электромобили и гибридные транспортные средства все чаще используют встроенные системы для максимизации эффективности и снижения загрязнения. Другие автомобильные системы безопасности, использующие встроенные системы, включают антиблокировочную систему тормозов (ABS), электронную систему контроля устойчивости (ESC/ESP), антипробуксовочную систему (TCS) и автоматический полный привод .
В медицинском оборудовании используются встроенные системы мониторинга и различные медицинские визуализации ( позитронно-эмиссионная томография (ПЭТ), однофотонная эмиссионная компьютерная томография (ОФЭКТ), компьютерная томография (КТ) и магнитно-резонансная томография (МРТ) для неинвазивных внутренних исследований. Встроенные системы медицинского оборудования часто питаются от промышленных компьютеров. [8]
Встраиваемые системы используются для критически важных систем безопасности в аэрокосмической и оборонной промышленности. Если они не подключены к проводным или беспроводным сетям через встроенную сотовую связь 3G или другие методы для целей мониторинга и управления Интернетом вещей, эти системы могут быть изолированы от взлома и, следовательно, более безопасны. [ нужна ссылка ] В целях пожарной безопасности системы могут быть спроектированы так, чтобы иметь большую способность выдерживать более высокие температуры и продолжать работать. Что касается безопасности, встроенные системы могут быть самодостаточными и способны справляться с отключением электрических и коммуникационных систем.
Миниатюрные беспроводные устройства, называемые мотами , представляют собой сетевые беспроводные датчики. В сети беспроводных датчиков используется миниатюризация, ставшая возможной благодаря усовершенствованной конструкции интегральных схем (ИС), для соединения полных беспроводных подсистем со сложными датчиками, что позволяет людям и компаниям измерять множество вещей в физическом мире и действовать на основе этой информации через системы мониторинга и управления. . Эти мотыльки полностью автономны и обычно работают от аккумулятора в течение многих лет, прежде чем батареи потребуется заменить или зарядить.
Характеристики
[ редактировать ]Встроенные системы предназначены для выполнения конкретной задачи, в отличие от компьютеров общего назначения, предназначенных для выполнения нескольких задач. Некоторые из них имеют ограничения производительности в реальном времени , которые необходимо соблюдать по таким причинам, как безопасность и удобство использования; у других могут быть низкие требования к производительности или вообще отсутствовать, что позволяет упростить аппаратное обеспечение системы для снижения затрат.
Встроенные системы не всегда являются автономными устройствами. Многие встроенные системы представляют собой небольшую часть более крупного устройства, служащего более общей цели. Например, робот-гитара Gibson имеет встроенную систему настройки струн, но основная цель робот-гитары — воспроизведение музыки. [9] Точно так же встроенная система в автомобиле выполняет определенную функцию как подсистема самого автомобиля.
Программные инструкции, написанные для встраиваемых систем, называются прошивкой и хранятся в постоянной памяти или микросхемах флэш-памяти . Они работают с ограниченными аппаратными ресурсами компьютера: мало памяти, маленькая или отсутствующая клавиатура или экран.
Пользовательские интерфейсы
[ редактировать ]Встроенные системы варьируются от отсутствия пользовательского интерфейса полного в системах, предназначенных для одной задачи, до сложных графических пользовательских интерфейсов , напоминающих современные операционные системы для настольных компьютеров. В простых встраиваемых устройствах используются кнопки , светодиоды (LED), графические или символьные жидкокристаллические дисплеи (ЖКД) с простой системой меню . Более сложные устройства, в которых используется графический экран с сенсорным управлением по краям экрана, или программные клавиши обеспечивают гибкость при минимизации используемого пространства: значение кнопок может меняться в зависимости от экрана, а выбор предполагает естественное поведение указания на желаемое.
Некоторые системы предоставляют пользовательский интерфейс удаленно с помощью последовательного (например, RS-232 ) или сетевого (например, Ethernet ) соединения. Такой подход расширяет возможности встроенной системы, позволяет избежать затрат на дисплей, упрощает пакет поддержки платы (BSP) и позволяет разработчикам создавать на ПК богатый пользовательский интерфейс. Хорошим примером этого является комбинация встроенного HTTP-сервера, работающего на встроенном устройстве (например, IP-камере или сетевом маршрутизаторе ). Пользовательский интерфейс отображается в веб-браузере на ПК, подключенном к устройству.
Процессоры во встроенных системах
[ редактировать ]Примерами свойств типичных встроенных компьютеров по сравнению с аналогами общего назначения являются низкое энергопотребление, небольшой размер, широкий рабочий диапазон и низкая стоимость единицы продукции. Это происходит за счет ограниченных ресурсов обработки.
множество микроконтроллеров Для использования встраиваемых систем было разработано . Микропроцессоры общего назначения также используются во встроенных системах, но обычно требуют большего количества вспомогательных схем, чем микроконтроллеры.
Готовые компьютерные платы
[ редактировать ]PC/104 и PC/104+ являются примерами стандартов готовых компьютерных плат, предназначенных для небольших встроенных и защищенных систем небольшого объема. В основном они основаны на процессорах x86 и часто физически малы по сравнению со стандартным ПК, хотя все же довольно велики по сравнению с большинством простых (8/16-битных) встраиваемых систем. Они могут использовать DOS , FreeBSD , Linux , NetBSD , OpenHarmony или встроенную операционную систему реального времени (RTOS), такую как MicroC/OS-II , QNX или VxWorks .
В некоторых приложениях, где малый размер или энергоэффективность не имеют первостепенного значения, используемые компоненты могут быть совместимы с компонентами, используемыми в персональных компьютерах x86 общего назначения. Такие платы, как серия VIA EPIA, помогают преодолеть этот разрыв, поскольку они совместимы с ПК, но обладают высокой степенью интеграции, физически меньшими размерами или обладают другими характеристиками, делающими их привлекательными для инженеров встраиваемых систем. Преимущество этого подхода состоит в том, что можно использовать недорогие стандартные компоненты вместе с теми же инструментами разработки программного обеспечения, которые используются для общей разработки программного обеспечения. Системы, построенные таким образом, до сих пор считаются встроенными, поскольку они интегрированы в более крупные устройства и выполняют единственную роль. Примерами устройств, которые могут использовать этот подход, являются банкоматы (ATM) и игровые автоматы , которые содержат код, специфичный для приложения.
Однако большинство готовых плат для встраиваемых систем не ориентированы на ПК и не используют шины ISA или PCI . Когда задействован процессор «система-на-кристалле» , использование стандартизированной шины, соединяющей дискретные компоненты, может оказаться малоэффективным, а среда как для аппаратных, так и для программных инструментов может сильно различаться.
В одном из распространенных стилей дизайна используется небольшой системный модуль, возможно, размером с визитную карточку, содержащий чипы BGA высокой плотности, такие как ARM базе процессор «система-на-кристалле» на и периферийные устройства, внешняя флэш-память для хранения и DRAM для времени выполнения. память. Поставщик модуля обычно предоставляет загрузочное программное обеспечение и обеспечивает наличие выбора операционных систем, обычно включая Linux и некоторые варианты реального времени. Эти модули могут производиться в больших объемах организациями, знакомыми со своими специализированными вопросами тестирования, и комбинироваться с гораздо меньшими объемами специализированных материнских плат с внешними периферийными устройствами для конкретных приложений. Яркими примерами такого подхода являются Arduino и Raspberry Pi .
Решения SoC ASIC и FPGA
[ редактировать ]Система на кристалле (SoC) представляет собой целостную систему, состоящую из нескольких процессоров, умножителей, кэшей, даже различных типов памяти и обычно различных периферийных устройств, таких как интерфейсы для проводной или беспроводной связи на одном кристалле. Часто в состав таких микросхем входят графические процессоры (GPU) и DSP. SoC могут быть реализованы в виде специализированной интегральной схемы (ASIC) или с использованием программируемой вентильной матрицы (FPGA), которую обычно можно переконфигурировать.
Реализации ASIC распространены для встраиваемых систем очень большого объема, таких как мобильные телефоны и смартфоны . Реализации ASIC или FPGA могут использоваться для не очень объемных встроенных систем с особыми потребностями в производительности обработки сигналов, интерфейсах и надежности, например, в авионике.
Периферийные устройства
[ редактировать ]Встроенные системы общаются с внешним миром через периферийные устройства , такие как:
- Последовательные интерфейсы связи (SCI): RS-232 , RS-422 , RS-485 и т. д.
- Синхронный последовательный интерфейс : I2C , SPI , SSC и ESSI (расширенный синхронный последовательный интерфейс)
- Универсальная последовательная шина (USB)
- Медиа-карты ( SD-карты , CompactFlash и т. д.)
- Контроллер сетевого интерфейса : Ethernet , Wi-Fi и т. д.
- Полевые шины : CAN-шина , LIN-Bus , PROFIBUS и т. д.
- Таймеры: контуры фазовой автоподстройки частоты , программируемые интервальные таймеры.
- Ввод/вывод общего назначения (GPIO)
- Аналого-цифровые и цифро-аналоговые преобразователи
- Отладка: JTAG , внутрисистемное программирование , порт интерфейса режима фоновой отладки , порты BITP и DB9.
Инструменты
[ редактировать ]Как и в случае с другим программным обеспечением, разработчики встраиваемых систем используют компиляторы , ассемблеры и отладчики для разработки программного обеспечения встраиваемых систем. Однако они также могут использовать более конкретные инструменты:
- В отладчиках схем или эмуляторах (см. следующий раздел ).
- Утилиты для добавления контрольной суммы или CRC к программе, чтобы встроенная система могла проверить, действительна ли программа.
- Для систем, использующих цифровую обработку сигналов , разработчики могут использовать вычислительный ноутбук для моделирования математических вычислений.
- Инструменты моделирования и симуляции на уровне системы помогают проектировщикам создавать имитационные модели системы с аппаратными компонентами, такими как процессоры, память , DMA , интерфейсы , шины и поток поведения программного обеспечения в виде диаграммы состояний или блок-схемы с использованием настраиваемых библиотечных блоков. Моделирование проводится для выбора правильных компонентов путем сопоставления мощности и производительности, анализа надежности и анализа узких мест. Типичные отчеты, которые помогают проектировщику принимать архитектурные решения, включают задержку приложения, пропускную способность устройства, использование устройства, энергопотребление всей системы, а также энергопотребление на уровне устройства.
- Инструмент разработки на основе моделей создает и моделирует графические потоки данных и диаграммы состояний UML таких компонентов, как цифровые фильтры, контроллеры двигателей, декодирование протоколов связи и многоскоростные задачи.
- Пользовательские компиляторы и компоновщики могут использоваться для оптимизации специализированного оборудования.
- Встроенная система может иметь свой собственный специальный язык или инструмент проектирования или добавлять улучшения к существующему языку, например Forth или Basic .
- Другой альтернативой является добавление RTOS или встроенной операционной системы.
- моделирования и генерации кода, Инструменты часто основанные на конечных автоматах.
Программные инструменты могут поступать из нескольких источников:
- Компании-разработчики программного обеспечения, специализирующиеся на рынке встраиваемых систем
- Перенесено из GNU. инструментов разработки программного обеспечения
- Иногда можно использовать средства разработки для персонального компьютера, если встроенный процессор является близким родственником обычного процессора ПК.
По мере роста сложности встроенных систем инструменты и операционные системы более высокого уровня мигрируют в машины там, где это имеет смысл. Например, мобильные телефоны , персональные цифровые помощники и другие бытовые компьютеры часто нуждаются в значительном программном обеспечении, которое приобретается или предоставляется лицом, отличным от производителя электроники. В этих системах требуется открытая среда программирования, такая как Linux , NetBSD , FreeBSD , OSGi или Embedded Java , чтобы сторонний поставщик программного обеспечения мог продавать свое программное обеспечение на большом рынке.
Отладка
[ редактировать ]Встроенная отладка может выполняться на разных уровнях, в зависимости от доступных средств. При этом учитываются следующие факторы: замедляет ли это работу основного приложения, насколько близка отлаживаемая система или приложение к фактической системе или приложению, насколько выразительны триггеры, которые можно установить для отладки (например, проверка памяти при достижении определенного счетчика программы значения ). достигнуто) и что можно проверить в процессе отладки (например, только память или память и регистры и т. д.).
От самых простых до самых сложных методов и систем отладки можно грубо сгруппировать по следующим областям:
- Интерактивная резидентная отладка с использованием простой оболочки встроенной операционной системы (например, Forth и Basic).
- Преимущество программных отладчиков заключается в том, что им не требуется какая-либо модификация оборудования, но им приходится тщательно контролировать то, что они записывают, чтобы сэкономить время и место для хранения. [10]
- Внешняя отладка с использованием протоколирования или вывода данных через последовательный порт для отслеживания работы с использованием либо флэш-монитора, либо сервера отладки, такого как Remedy Debugger , который работает даже для гетерогенных многоядерных систем.
- Внутрисхемный отладчик (ICD) — аппаратное устройство, которое подключается к микропроцессору через интерфейс JTAG или Nexus . [11] Это позволяет управлять работой микропроцессора извне, но обычно ограничивается конкретными возможностями отладки процессора.
- ( Внутрисхемный эмулятор ICE) заменяет микропроцессор смоделированным эквивалентом, обеспечивая полный контроль над всеми аспектами микропроцессора.
- Полный эмулятор обеспечивает симуляцию всех аспектов аппаратного обеспечения, позволяя управлять всем им и модифицировать его, а также позволяет проводить отладку на обычном ПК. Недостатками являются затраты и медленная работа, в некоторых случаях до 100 раз медленнее, чем окончательная система.
- Для проектов SoC типичным подходом является проверка и отладка проекта на плате прототипа FPGA. Такие инструменты, как Certus [12] используются для вставки датчиков в реализацию FPGA, которые делают сигналы доступными для наблюдения. Это используется для отладки взаимодействия аппаратного, встроенного и программного обеспечения между несколькими FPGA в реализации с возможностями, аналогичными логическому анализатору.
Если не ограничиваться внешней отладкой, программист обычно может загружать и запускать программное обеспечение с помощью инструментов, просматривать код, выполняющийся в процессоре, а также запускать или останавливать его работу. Код может представлять собой язык программирования высокого уровня , ассемблерный код или смесь того и другого.
Отслеживание
[ редактировать ]Операционные системы реального времени часто поддерживают отслеживание событий операционной системы. Графическое представление представляется с помощью главного ПК на основе записи поведения системы. Запись трассировки может выполняться программно, с помощью ОСРВ или специального оборудования трассировки. Трассировка RTOS позволяет разработчикам понять проблемы синхронизации и производительности программной системы, а также дает хорошее представление о поведении системы высокого уровня. Запись трассировки во встроенных системах может быть достигнута с использованием аппаратных или программных решений. Программная запись трассировки не требует специального оборудования для отладки и может использоваться для записи трассировок на развернутых устройствах, но может влиять на использование ЦП и ОЗУ. [13] Одним из примеров программного метода трассировки, используемого в средах RTOS, является использование пустых макросов , которые вызываются операционной системой в стратегических местах кода и могут быть реализованы в качестве перехватчиков .
Надежность
[ редактировать ]Встроенные системы часто находятся в машинах, которые, как ожидается, будут работать непрерывно в течение многих лет без ошибок, а в некоторых случаях восстанавливаются самостоятельно в случае возникновения ошибки. Поэтому программное обеспечение обычно разрабатывается и тестируется более тщательно, чем программное обеспечение для персональных компьютеров, и избегаются ненадежные механические движущиеся части, такие как дисководы, переключатели или кнопки.
Конкретные проблемы с надежностью могут включать в себя:
- Систему невозможно безопасно отключить для ремонта, или она слишком недоступна для ремонта. Примеры включают космические системы, подводные кабели, навигационные маяки, скважинные системы и автомобили.
- В целях безопасности система должна продолжать работать. Снижение функциональности в случае сбоя может оказаться недопустимым. Часто резервные копии выбирает оператор. Примеры включают навигацию самолетов, системы управления реакторами, критически важные для безопасности средства управления химическими заводами, сигналы поездов.
- При отключении система потеряет большие суммы денег: телефонные коммутаторы, управление заводом, управление мостами и лифтами, перевод средств и создание рынка, автоматизированные продажи и обслуживание.
Для устранения ошибок используются различные методы, иногда в сочетании, — как программные ошибки, такие как утечки памяти , так и программные ошибки в оборудовании:
- сторожевой таймер , который сбрасывает и перезапускает систему, если программное обеспечение периодически не уведомляет сторожевые подсистемы
- Проектирование с использованием архитектуры доверенной вычислительной базы (TCB) обеспечивает высокобезопасную и надежную системную среду. [14]
- Гипервизор , разработанный для встроенных систем, способен обеспечить безопасную инкапсуляцию любого компонента подсистемы, чтобы скомпрометированный программный компонент не мог мешать работе других подсистем или системного программного обеспечения привилегированного уровня. [15] Такая инкапсуляция предотвращает распространение неисправностей из одной подсистемы в другую, тем самым повышая надежность. Это также может позволить автоматически выключать и перезапускать подсистему при обнаружении неисправности.
- Программирование с учетом иммунитета может помочь инженерам создавать более надежный код встроенных систем. [16] [17] Руководства и правила кодирования, такие как MISRA C/C++, направлены на то, чтобы помочь разработчикам создавать надежные, переносимые встроенные программы различными способами: обычно путем рекомендаций или запрета на методы кодирования, которые могут привести к ошибкам во время выполнения (утечки памяти, использование недопустимых указателей). , использование проверок во время выполнения и обработки исключений (проверки диапазона/работоспособности, проверки деления на ноль и проверки правильности индекса буфера, случаи по умолчанию в логических проверках), ограничение циклов, создание удобочитаемого, хорошо прокомментированного и хорошо структурированного кода, и избежание языковой двусмысленности, которая может привести к несогласованности или побочным эффектам, вызванным компилятором (упорядочение вычислений выражений, рекурсия, определенные типы макросов). Эти правила часто можно использовать в сочетании со проверкой статики кода или проверкой ограниченной модели в целях функциональной проверки, а также помогают в определении свойств синхронизации кода . [16]
Высокая и низкая громкость
[ редактировать ]Для систем большого объема, таких как мобильные телефоны , минимизация затрат обычно является основным фактором проектирования. Инженеры обычно выбирают оборудование, достаточно хорошее для реализации необходимых функций.
Для небольших объемов или прототипов встроенных систем компьютеры общего назначения можно адаптировать, ограничив количество программ или заменив операционную систему на RTOS.
Архитектуры встроенного программного обеспечения
[ редактировать ]В 1978 году Национальная ассоциация производителей электротехники выпустила ICS 3-1978, стандарт для программируемых микроконтроллеров. [18] включая практически любые компьютерные контроллеры, такие как одноплатные компьютеры , числовые контроллеры и контроллеры, основанные на событиях.
Обычно используется несколько различных типов архитектуры программного обеспечения.
Простой контур управления
[ редактировать ]В этом проекте программное обеспечение просто имеет контур , который контролирует устройства ввода. Цикл вызывает подпрограммы , каждая из которых управляет частью аппаратного или программного обеспечения. Следовательно, его называют простым контуром управления или программируемым вводом-выводом.
Система, управляемая прерываниями
[ редактировать ]Некоторые встроенные системы преимущественно управляются прерываниями . Это означает, что задачи, выполняемые системой, инициируются событиями разного типа; прерывание может быть сгенерировано, например, таймером с заранее заданным интервалом или получением данных контроллером последовательного порта.
Эта архитектура используется, если обработчикам событий требуется низкая задержка, а обработчики событий короткие и простые. Эти системы также выполняют простую задачу в основном цикле, но эта задача не очень чувствительна к неожиданным задержкам. Иногда обработчик прерываний добавляет в структуру очереди более длинные задачи. Позже, после завершения работы обработчика прерываний, эти задачи выполняются основным циклом. Этот метод приближает систему к многозадачному ядру с дискретными процессами.
Кооперативная многозадачность
[ редактировать ]Кооперативная многозадачность очень похожа на схему простого цикла управления, за исключением того, что цикл скрыт в API . [3] [1] Программист определяет серию задач, и каждая задача получает свою собственную среду для выполнения. Когда задача простаивает, она вызывает подпрограмму ожидания, которая передает управление другой задаче.
Преимущества и недостатки аналогичны преимуществам и недостаткам контура управления, за исключением того, что добавлять новое программное обеспечение проще, просто написав новую задачу или добавив ее в очередь.
Вытесняющая многозадачность или многопоточность
[ редактировать ]В системах этого типа низкоуровневый фрагмент кода переключается между задачами или потоками на основе таймера, вызывающего прерывание. Это уровень, на котором обычно считается, что система имеет ядро операционной системы. В зависимости от того, какой объем функциональности требуется, он вносит больше или меньше сложностей в управление несколькими задачами, концептуально выполняемыми параллельно.
Поскольку любой код может потенциально повредить данные другой задачи (за исключением систем, использующих модуль управления памятью ), программы должны быть тщательно спроектированы и протестированы, а доступ к общим данным должен контролироваться с помощью некоторой стратегии синхронизации, такой как очереди сообщений , семафоры или неиспользуемые -блокирующая схема синхронизации .
Из-за этих сложностей организации часто используют готовые RTOS, что позволяет программистам приложений сосредоточиться на функциональности устройства, а не на службах операционной системы. Однако выбор включения ОСРВ сопряжен с собственными проблемами, поскольку выбор должен быть сделан до начала процесса разработки приложения. Такое время вынуждает разработчиков выбирать встроенную операционную систему для своего устройства на основе текущих требований и, таким образом, в значительной степени ограничивает будущие возможности. [19]
Уровень сложности встроенных систем постоянно растет, поскольку устройствам требуются устройства для управления периферийными устройствами и задачами, такими как последовательный порт, USB, TCP/IP, Bluetooth , беспроводная локальная сеть , магистральная радиосвязь, несколько каналов, данные и голос, улучшенная графика, несколько состояний, несколько потоков, множество состояний ожидания и так далее. Эти тенденции ведут к внедрению встроенного промежуточного программного обеспечения в дополнение к RTOS.
Микроядра и экзоядра
[ редактировать ]Микроядро выделяет память и переключает ЦП на разные потоки выполнения. Процессы пользовательского режима реализуют основные функции, такие как файловые системы, сетевые интерфейсы и т. д.
Экзоядра эффективно взаимодействуют посредством обычных вызовов подпрограмм. Аппаратное обеспечение и все программное обеспечение в системе доступны и расширяются программистами приложений.
Монолитные ядра
[ редактировать ]Монолитное ядро — это относительно большое ядро со сложными возможностями, адаптированными для встраиваемой среды. Это дает программистам среду, аналогичную настольной операционной системе, такой как Linux или Microsoft Windows , и, следовательно, очень продуктивна для разработки. С другой стороны, он требует значительно больше аппаратных ресурсов, часто является более дорогим и из-за сложности этих ядер может быть менее предсказуемым и надежным.
Типичными примерами встроенных монолитных ядер являются встроенные Linux , VXWorks и Windows CE .
Несмотря на увеличение стоимости аппаратного обеспечения, популярность этого типа встроенных систем растет, особенно на более мощных встроенных устройствах, таких как беспроводные маршрутизаторы и системы GPS-навигации .
Дополнительные программные компоненты
[ редактировать ]Помимо основной операционной системы, многие встроенные системы имеют дополнительные программные компоненты верхнего уровня. Эти компоненты включают в себя стеки сетевых протоколов, такие как CAN , TCP/IP , FTP , HTTP и HTTPS , а также возможности хранения, такие как FAT и системы управления флэш-памятью. Если встроенное устройство имеет аудио- и видеовозможности, то в системе будут присутствовать соответствующие драйверы и кодеки. В случае монолитных ядер многие из этих программных уровней могут быть включены в ядро. В категории ОСРВ наличие дополнительных программных компонентов зависит от коммерческого предложения.
Специализированные для предметной области архитектуры
[ редактировать ]В автомобильном секторе AUTOSAR представляет собой стандартную архитектуру встроенного программного обеспечения.
См. также
[ редактировать ]Примечания
[ редактировать ]Ссылки
[ редактировать ]- ^ Jump up to: а б Майкл Барр . «Глоссарий по встраиваемым системам» . Техническая библиотека нейтрино . Проверено 21 апреля 2007 г.
- ^ Хит, Стив (2003). Проектирование встраиваемых систем . Серия ЭДН для инженеров-конструкторов (2-е изд.). Ньюнес. п. 2 . ISBN 978-0-7506-5546-0 .
Встроенная система — это система на базе микропроцессора , предназначенная для управления функцией или рядом функций.
- ^ Jump up to: а б Майкл Барр; Энтони Дж. Масса (2006). "Введение" . Программирование встроенных систем: с помощью инструментов разработки C и GNU . О'Рейли. стр. 1–2. ISBN 978-0-596-00983-0 .
- ^ Барр, Майкл (1 августа 2009 г.). «Программа для настоящих мужчин на языке C» . Проектирование встраиваемых систем . TechInsights (Объединенные Бизнес Медиа). п. 2 . Проверено 23 декабря 2009 г.
- ^ Ширрифф, Кен (30 августа 2016 г.). «Удивительная история первых микропроцессоров» . IEEE-спектр . 53 (9). Институт инженеров по электротехнике и электронике : 48–54. дои : 10.1109/MSPEC.2016.7551353 . S2CID 32003640 . Проверено 13 октября 2019 г.
- ^ «1971: Микропроцессор объединяет функции ЦП в одном кристалле» . Кремниевый двигатель . Музей истории компьютеров . Проверено 22 июля 2019 г.
- ^ «Фонд электронных границ» . Фонд электронных границ .
- ^ Встроенные системы OEM-решения Dell | Dell. Архивировано 27 января 2013 г. в Wayback Machine . Content.dell.com (04 января 2011 г.). Проверено 6 февраля 2013 г.
- ^ Дэвид Кэри (22 апреля 2008 г.). «Под капотом: робот-гитара со встроенной автонастройкой» . Проектирование встраиваемых систем . Архивировано из оригинала 8 июля 2008 г.
- ^ Танкрети, Мэтью; Сундарам, Винайтиртан; Багчи, Саураб; Югстер, Патрик (2015). «ТАРДИС». Материалы 14-й Международной конференции по обработке информации в сенсорных сетях . ИПСН '15. Нью-Йорк, штат Нью-Йорк, США: ACM. стр. 286–297. дои : 10.1145/2737095.2737096 . ISBN 9781450334754 . S2CID 10120929 .
- ^ Танкрети, Мэтью; Хоссейн, Мохаммад Саджад; Багчи, Саураб; Рагунатан, Виджай (2011). «Авекша». Материалы 9-й конференции ACM по встраиваемым сетевым сенсорным системам . СенСис '11. Нью-Йорк, штат Нью-Йорк, США: ACM. стр. 288–301. дои : 10.1145/2070942.2070972 . ISBN 9781450307185 . S2CID 14769602 .
- ^ «Tektronix меняет процесс прототипирования, встроенное оборудование повышает статус плат до статуса эмулятора» . Электронный инженерный журнал. 30 октября 2012 г. Проверено 30 октября 2012 г.
- ^ Крафт, Йохан; Уолл, Андерс; Кинле, Хольгер (2010), Бэрринджер, Ховард; Фальконе, Илис; Финкбайнер, Бернд; Хавелунд, Клаус (ред.), «Запись трассировки для встраиваемых систем: уроки, извлеченные из пяти промышленных проектов» , Runtime Verification , vol. 6418, Берлин, Гейдельберг: Springer Berlin Heidelberg, стр. 315–329, doi : 10.1007/978-3-642-16612-9_24 , ISBN 978-3-642-16611-2 , получено 16 августа 2022 г.
- ^ Хайзер, Гернот (декабрь 2007 г.). «Ваша система безопасна? Докажите это!» (PDF) . ;авторизоваться: . 2 (6): 35–8. Архивировано (PDF) из оригинала 29 ноября 2014 г.
- ^ Морателли, К; Иоганн, С; Невес, М; Хессель, Ф (2016). «Встроенная виртуализация для разработки безопасных приложений Интернета вещей» . Материалы 27-го Международного симпозиума по быстрому прототипированию систем: сокращение пути от спецификации к прототипу . стр. 2–6. дои : 10.1145/2990299.2990301 . ISBN 9781450345354 . S2CID 17466572 . Проверено 2 февраля 2018 г.
- ^ Jump up to: а б Коротко, Майкл (март 2008 г.). «Руководство по разработке надежных встроенных систем реального времени» . 2008 Международная конференция IEEE/ACS по компьютерным системам и приложениям . стр. 1032–1039. дои : 10.1109/AICCSA.2008.4493674 . ISBN 978-1-4244-1967-8 . S2CID 14163138 .
- ^ Ассоциация надежности программного обеспечения для автомобильной промышленности. «MISRA C: 2012, третье издание, первая редакция» . Проверено 3 февраля 2022 г.
- ^ «Часто задаваемые вопросы: Программируемые контроллеры» (PDF) . Проверено 10 января 2020 г.
- ^ «Работа на нескольких встроенных платформах» (PDF) . кларинокс. Архивировано (PDF) из оригинала 19 февраля 2011 г. Проверено 17 августа 2010 г.
Дальнейшее чтение
[ редактировать ]- Джон Катсулис (май 2005 г.). Проектирование встраиваемого оборудования, 2-е издание . О'Рейли. ISBN 0-596-00755-8 .
- Джеймс М. Конрад; Александр Г. Дин (сентябрь 2011 г.). Встроенные системы. Введение в использование микроконтроллера Renesas RX62N . Микриум. ISBN 978-1935-7729-96 .
- Клаус Элк (август 2016 г.). Разработка встроенного программного обеспечения для Интернета вещей: основы, технологии и лучшие практики . Независимая издательская платформа CreateSpace. ISBN 978-1534602533 .
Внешние ссылки
[ редактировать ]- Курс «Встроенные системы» с mbed YouTube, продолжается с 2015 г.
- Тенденции в области кибербезопасности и встроенных систем Дэн Гир, ноябрь 2013 г.
- Видеокурс по программированию современных встраиваемых систем на YouTube, продолжается с 2013 г.
- Ежегодное мероприятие Embedded Systems Week (ESWEEK) с конференциями, семинарами и учебными пособиями, охватывающими все аспекты встроенных систем и программного обеспечения.
- Семинар по обучению встраиваемым и киберфизическим системам в Wayback Machine (архивировано 11 февраля 2018 г.), семинар, посвященный образовательным аспектам встроенных систем.