Встроенная система — это специализированная компьютерная система — комбинация процессора компьютера , памяти компьютера и периферийных устройств ввода/вывода — которая имеет специальную функцию в более крупной механической или электронной системе. [1] [2] Она встраивается как часть законченного устройства, часто включающего электрическое или электронное оборудование и механические части. Поскольку встроенная система обычно управляет физическими операциями машины, в которую она встроена, она часто имеет ограничения вычислений в реальном времени . Встроенные системы управляют многими устройствами общего пользования. [3] В 2009 году [обновлять]было подсчитано, что девяносто восемь процентов всех произведенных микропроцессоров использовались во встроенных системах. [4] [ требуется обновление ]
Современные встраиваемые системы часто основаны на микроконтроллерах (т. е. микропроцессорах со встроенной памятью и периферийными интерфейсами), но обычные микропроцессоры (использующие внешние чипы для схем памяти и периферийных интерфейсов) также распространены, особенно в более сложных системах. В любом случае используемые процессоры могут быть типами от общего назначения до специализированных для определенного класса вычислений или даже специально разработанных для конкретного приложения. Распространенным стандартным классом специализированных процессоров является цифровой сигнальный процессор (DSP).
Поскольку встроенная система предназначена для решения конкретных задач, инженеры-конструкторы могут оптимизировать ее, чтобы уменьшить размер и стоимость продукта и повысить его надежность и производительность. Некоторые встроенные системы производятся серийно, что позволяет экономить за счет масштаба .
Встроенные системы различаются по размеру от портативных персональных устройств, таких как цифровые часы и MP3-плееры, до более крупных машин, таких как бытовая техника , промышленные сборочные линии , роботы , транспортные средства, контроллеры светофоров и медицинские системы визуализации. Часто они представляют собой подсистемы других машин, таких как авионика в самолетах и астроэлектроника в космических кораблях . Крупные установки, такие как заводы , трубопроводы и электрические сети, полагаются на несколько встроенных систем, объединенных в сеть. Обобщенные посредством настройки программного обеспечения, встроенные системы, такие как программируемые логические контроллеры, часто включают в себя их функциональные блоки.
Встраиваемые системы различаются по сложности: от простых, с одним микроконтроллером, до очень сложных, с несколькими блоками, периферийными устройствами и сетями, которые могут размещаться в стойках с оборудованием или охватывать большие географические зоны, соединенные между собой линиями связи большой протяженности.
Истоки микропроцессора и микроконтроллера можно проследить до интегральной схемы МОП , которая представляет собой интегральную схему , изготовленную из МОП-транзисторов ( полевые транзисторы металл-оксид-полупроводник ) и была разработана в начале 1960-х годов. К 1964 году МОП-чипы достигли более высокой плотности транзисторов и более низких производственных затрат, чем биполярные чипы. Сложность МОП-чипов еще больше возросла со скоростью, предсказанной законом Мура , что привело к появлению крупномасштабной интеграции (БИС) с сотнями транзисторов на одном МОП-чипе к концу 1960-х годов. Применение МОП-чипов БИС в вычислительной технике стало основой для первых микропроцессоров, поскольку инженеры начали осознавать, что полная система компьютерного процессора может содержаться в нескольких МОП-чипах БИС. [5]
Первые многокристальные микропроцессоры, Four-Phase Systems AL1 в 1969 году и Garrett AiResearch MP944 в 1970 году, были разработаны с несколькими микросхемами МОП-БИС. Первым однокристальным микропроцессором был Intel 4004 , выпущенный в 1971 году. Он был разработан Федерико Фаггином , с использованием его кремниевой затворной технологии МОП, вместе с инженерами Intel Марсианом Хоффом и Стэном Мазором , и инженером Busicom Масатоши Шимой . [6]
Одной из первых узнаваемых современных встроенных систем был компьютер управления Apollo , [ требуется ссылка ] разработанный около 1965 года Чарльзом Старком Дрейпером в Лаборатории инструментов Массачусетского технологического института . В начале проекта компьютер управления Apollo считался самым рискованным элементом в проекте Apollo, поскольку он использовал недавно разработанные монолитные интегральные схемы для уменьшения размера и веса компьютера.
Одной из первых серийно выпускаемых встроенных систем была вычислительная машина наведения Autonetics D-17 для ракеты Minuteman , выпущенная в 1961 году. Когда в 1966 году началось производство Minuteman II, D-17 была заменена новой вычислительной машиной, которая представляла собой первое массовое использование интегральных схем.
С тех пор, как эти ранние приложения появились в 1960-х годах, встраиваемые системы подешевели, а вычислительная мощность и функциональность резко возросли. Ранний микропроцессор Intel 4004 (выпущенный в 1971 году) был разработан для калькуляторов и других небольших систем, но все еще требовал внешней памяти и вспомогательных микросхем. К началу 1980-х годов компоненты памяти, системы ввода и вывода были интегрированы в тот же чип, что и процессор, образуя микроконтроллер. Микроконтроллеры находят применение там, где компьютер общего назначения был бы слишком дорогим. По мере падения стоимости микропроцессоров и микроконтроллеров возросла распространенность встраиваемых систем.
Сравнительно недорогой микроконтроллер может быть запрограммирован для выполнения той же роли, что и большое количество отдельных компонентов. С микроконтроллерами стало возможным заменить, даже в потребительских товарах, дорогие аналоговые компоненты на основе ручек, такие как потенциометры и переменные конденсаторы , кнопками вверх/вниз или ручками, считываемыми микропроцессором. Хотя в этом контексте встроенная система обычно сложнее традиционного решения, большая часть сложности содержится в самом микроконтроллере. Может потребоваться очень мало дополнительных компонентов, и большая часть усилий по проектированию приходится на программное обеспечение. Прототип программного обеспечения и его тестирование могут быть быстрее по сравнению с проектированием и созданием новой схемы без использования встроенного процессора.
Встраиваемые системы обычно встречаются в потребительских, промышленных, автомобильных , бытовых приборах , медицине, телекоммуникациях, коммерческих, аэрокосмических и военных приложениях.
Телекоммуникационные системы используют многочисленные встроенные системы от телефонных коммутаторов для сети до сотовых телефонов у конечного пользователя . Компьютерные сети используют выделенные маршрутизаторы и сетевые мосты для маршрутизации данных.
Потребительская электроника включает MP3-плееры , телевизоры , мобильные телефоны , игровые приставки , цифровые камеры , GPS- приемники и принтеры . Бытовая техника, такая как микроволновые печи , стиральные машины и посудомоечные машины , включает в себя встроенные системы для обеспечения гибкости, эффективности и функций. Современные системы отопления, вентиляции и кондиционирования воздуха (HVAC) используют сетевые термостаты для более точного и эффективного контроля температуры, которая может меняться в зависимости от времени суток и сезона . Домашняя автоматизация использует проводные и беспроводные сети, которые можно использовать для управления освещением, климатом, безопасностью, аудио/видео, наблюдением и т. д., все из которых используют встроенные устройства для измерения и управления.
Транспортные системы от полета до автомобилей все чаще используют встроенные системы. Новые самолеты содержат передовую авионику , такую как инерциальные системы наведения и GPS- приемники, которые также имеют значительные требования к безопасности. Космические корабли полагаются на системы астрономии для коррекции траектории. Различные электродвигатели — бесщеточные двигатели постоянного тока , асинхронные двигатели и двигатели постоянного тока — используют электронные контроллеры двигателей . Автомобили , электромобили и гибридные транспортные средства все чаще используют встроенные системы для максимизации эффективности и снижения загрязнения. Другие автомобильные системы безопасности, использующие встроенные системы, включают антиблокировочную тормозную систему (ABS), электронный контроль устойчивости (ESC/ESP), контроль тяги (TCS) и автоматический полный привод .
Медицинское оборудование использует встроенные системы для мониторинга и различных медицинских изображений ( позитронно-эмиссионная томография (ПЭТ), однофотонная эмиссионная компьютерная томография (ОФЭКТ), компьютерная томография (КТ) и магнитно-резонансная томография (МРТ) для неинвазивных внутренних осмотров. Встроенные системы в медицинском оборудовании часто работают от промышленных компьютеров. [8]
Встроенные системы используются для критически важных для безопасности систем в аэрокосмической и оборонной промышленности. Если они не подключены к проводным или беспроводным сетям через встроенную 3G-сотовую связь или другие методы для целей мониторинга и управления IoT, эти системы могут быть изолированы от взлома и, таким образом, быть более безопасными. [ необходима цитата ] Для пожарной безопасности системы могут быть спроектированы так, чтобы иметь большую способность выдерживать более высокие температуры и продолжать работать. Что касается безопасности, встроенные системы могут быть самодостаточными и иметь возможность справляться с отключением электрических и коммуникационных систем.
Миниатюрные беспроводные устройства, называемые моты, представляют собой сетевые беспроводные датчики. Беспроводная сенсорная сеть использует миниатюризацию, которая стала возможной благодаря усовершенствованной конструкции интегральных схем (ИС), для соединения полных беспроводных подсистем со сложными датчиками, позволяя людям и компаниям измерять множество вещей в физическом мире и действовать на основе этой информации с помощью систем мониторинга и управления. Эти моты полностью автономны и обычно работают от аккумулятора в течение многих лет, прежде чем батареи нужно будет заменить или зарядить.
Встроенные системы предназначены для выполнения определенной задачи, в отличие от компьютеров общего назначения, предназначенных для выполнения нескольких задач. Некоторые из них имеют ограничения производительности в реальном времени , которые должны быть соблюдены по таким причинам, как безопасность и удобство использования; другие могут иметь низкие или нулевые требования к производительности, что позволяет упростить аппаратное обеспечение системы для снижения затрат.
Встроенные системы не всегда являются автономными устройствами. Многие встроенные системы являются небольшой частью внутри более крупного устройства, которое служит более общей цели. Например, гитара Gibson Robot имеет встроенную систему для настройки струн, но общее назначение гитары Robot — играть музыку. [9] Аналогично встроенная система в автомобиле обеспечивает определенную функцию как подсистема самого автомобиля.
Программные инструкции, написанные для встраиваемых систем, называются прошивками и хранятся в памяти только для чтения или в чипах флэш-памяти . Они работают с ограниченными аппаратными ресурсами компьютера: небольшой объем памяти, маленькая или отсутствующая клавиатура или экран.
Встроенные системы варьируются от полного отсутствия пользовательского интерфейса в системах, предназначенных для одной задачи, до сложных графических пользовательских интерфейсов , которые напоминают современные операционные системы настольных компьютеров. Простые встроенные устройства используют кнопки , светодиоды (LED), графические или символьные жидкокристаллические дисплеи (LCD) с простой системой меню . Более сложные устройства, которые используют графический экран с сенсорным датчиком или экранными программными клавишами, обеспечивают гибкость при минимизации используемого пространства: значение кнопок может меняться вместе с экраном, а выбор включает естественное поведение указания на то, что нужно.
Некоторые системы предоставляют пользовательский интерфейс удаленно с помощью последовательного (например, 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) содержит полную систему, состоящую из нескольких процессоров, умножителей, кэшей, даже различных типов памяти и обычно различных периферийных устройств, таких как интерфейсы для проводной или беспроводной связи на одном кристалле. Часто графические процессоры (GPU) и DSP включаются в такие чипы. SoC могут быть реализованы как специализированная интегральная схема (ASIC) или с использованием программируемой пользователем вентильной матрицы (FPGA), которая обычно может быть перенастроена.
Реализации ASIC распространены для встраиваемых систем очень большого объема, таких как мобильные телефоны и смартфоны . Реализации ASIC или FPGA могут использоваться для встраиваемых систем не очень большого объема с особыми потребностями в производительности обработки сигналов, интерфейсах и надежности, например, в авионике.
Встроенные системы взаимодействуют с внешним миром через периферийные устройства , такие как:
Как и в случае с другим программным обеспечением, разработчики встроенных систем используют компиляторы , ассемблеры и отладчики для разработки встроенного системного программного обеспечения. Однако они также могут использовать более специфические инструменты:
Программные инструменты могут иметь несколько источников:
По мере роста сложности встроенных систем инструменты и операционные системы более высокого уровня мигрируют в машины, где это имеет смысл. Например, сотовые телефоны , персональные цифровые помощники и другие потребительские компьютеры часто нуждаются в значительном программном обеспечении, которое приобретается или предоставляется лицом, не являющимся производителем электроники. В этих системах требуется открытая среда программирования, такая как Linux , NetBSD , FreeBSD , OSGi или Embedded Java , чтобы сторонний поставщик программного обеспечения мог продавать на большом рынке.
Встроенная отладка может выполняться на разных уровнях в зависимости от доступных возможностей. Соображения включают: замедляет ли это основное приложение, насколько близко отлаживаемая система или приложение к фактической системе или приложению, насколько выразительны триггеры, которые можно установить для отладки (например, проверка памяти при достижении определенного значения счетчика программы ), и что можно проверять в процессе отладки (например, только память или память и регистры и т. д.).
От самых простых до самых сложных методов и систем отладки можно условно сгруппировать в следующие области:
Если только программист не ограничен внешней отладкой, он обычно может загружать и запускать программное обеспечение через инструменты, просматривать код, работающий в процессоре, и запускать или останавливать его работу. Вид кода может быть как высокоуровневый язык программирования , ассемблерный код или смесь того и другого.
Операционные системы реального времени часто поддерживают трассировку событий операционной системы. Графическое представление представлено инструментом хост-ПК на основе записи поведения системы. Запись трассировки может выполняться программным обеспечением, RTOS или специальным оборудованием трассировки. Трассировка RTOS позволяет разработчикам понимать проблемы синхронизации и производительности программной системы и дает хорошее понимание поведения системы высокого уровня. Запись трассировки во встраиваемых системах может быть достигнута с помощью аппаратных или программных решений. Программная запись трассировки не требует специализированного отладочного оборудования и может использоваться для записи трассировок в развернутых устройствах, но она может оказывать влияние на использование ЦП и ОЗУ. [13] Одним из примеров программного метода трассировки, используемого в средах RTOS, является использование пустых макросов , которые вызываются операционной системой в стратегических местах кода и могут быть реализованы в качестве хуков .
Встроенные системы часто находятся в машинах, которые должны работать непрерывно в течение многих лет без ошибок, а в некоторых случаях восстанавливаться самостоятельно, если происходит ошибка. Поэтому программное обеспечение обычно разрабатывается и тестируется более тщательно, чем для персональных компьютеров, и не используются ненадежные механические подвижные части, такие как дисководы, переключатели или кнопки.
Конкретные проблемы надежности могут включать:
Для восстановления после ошибок используются различные методы, иногда в сочетании друг с другом — как программные ошибки, такие как утечки памяти , так и программные ошибки в оборудовании:
Для систем большого объема, таких как мобильные телефоны , минимизация стоимости обычно является основным соображением при проектировании. Инженеры обычно выбирают оборудование, которое достаточно хорошо для реализации необходимых функций.
Для малотиражных или прототипных встраиваемых систем универсальные компьютеры можно адаптировать, ограничив программы или заменив операционную систему на RTOS.
В 1978 году Национальная ассоциация производителей электрооборудования выпустила ICS 3-1978, стандарт для программируемых микроконтроллеров [18] , включая практически любые компьютерные контроллеры, такие как одноплатные компьютеры , числовые и событийные контроллеры.
Существует несколько различных типов архитектуры программного обеспечения, которые широко используются.
В этой конструкции программное обеспечение просто имеет цикл , который контролирует устройства ввода. Цикл вызывает подпрограммы , каждая из которых управляет частью оборудования или программного обеспечения. Поэтому его называют простым циклом управления или программным вводом-выводом.
Некоторые встроенные системы в основном управляются прерываниями . Это означает, что задачи, выполняемые системой, запускаются различными видами событий; прерывание может быть сгенерировано, например, таймером с предопределенным интервалом или контроллером последовательного порта, получающим данные.
Эта архитектура используется, если обработчикам событий требуется низкая задержка, а обработчики событий короткие и простые. Эти системы также выполняют простую задачу в основном цикле, но эта задача не очень чувствительна к неожиданным задержкам. Иногда обработчик прерываний добавляет более длинные задачи в структуру очереди. Позже, после завершения работы обработчика прерываний, эти задачи выполняются основным циклом. Этот метод приближает систему к многозадачному ядру с дискретными процессами.
Кооперативная многозадачность очень похожа на схему простого цикла управления, за исключением того, что цикл скрыт в API . [3] [1] Программист определяет ряд задач, и каждая задача получает свою собственную среду для выполнения. Когда задача простаивает, она вызывает процедуру простоя, которая передает управление другой задаче.
Преимущества и недостатки аналогичны преимуществам и недостаткам контура управления, за исключением того, что добавлять новое программное обеспечение проще — достаточно просто написать новую задачу или добавить ее в очередь.
В этом типе системы низкоуровневый фрагмент кода переключается между задачами или потоками на основе таймера, вызывающего прерывание. Это уровень, на котором система обычно считается имеющей ядро операционной системы. В зависимости от того, какой объем функциональности требуется, она вносит больше или меньше сложностей управления несколькими задачами, концептуально работающими параллельно.
Поскольку любой код может потенциально повредить данные другой задачи (за исключением систем, использующих блок управления памятью ), программы должны быть тщательно спроектированы и протестированы, а доступ к общим данным должен контролироваться некоторой стратегией синхронизации, такой как очереди сообщений , семафоры или неблокирующая схема синхронизации.
Из-за этих сложностей организации часто используют готовую RTOS, позволяя программистам приложений сосредоточиться на функциональности устройства, а не на службах операционной системы. Однако выбор включения RTOS влечет за собой свои собственные проблемы, поскольку выбор должен быть сделан до начала процесса разработки приложения. Такой выбор времени заставляет разработчиков выбирать встроенную операционную систему для своего устройства на основе текущих требований и, таким образом, в значительной степени ограничивает будущие возможности. [19]
Уровень сложности встраиваемых систем постоянно растет, поскольку устройствам требуется управлять периферийными устройствами и задачами, такими как последовательный интерфейс, USB, TCP/IP, Bluetooth , беспроводная локальная сеть , магистральное радио, несколько каналов, данные и голос, улучшенная графика, несколько состояний, несколько потоков, многочисленные состояния ожидания и т. д. Эти тенденции ведут к внедрению встроенного промежуточного программного обеспечения в дополнение к RTOS.
Микроядро выделяет память и переключает ЦП на различные потоки выполнения. Процессы пользовательского режима реализуют основные функции, такие как файловые системы, сетевые интерфейсы и т. д .
Экзоядра эффективно взаимодействуют посредством обычных вызовов подпрограмм. Аппаратное обеспечение и все программное обеспечение в системе доступны и расширяемы прикладными программистами.
Монолитное ядро — это относительно большое ядро со сложными возможностями, адаптированными для встроенной среды. Это дает программистам среду, похожую на настольную операционную систему, такую как Linux или Microsoft Windows , и поэтому очень продуктивно для разработки. С другой стороны, оно требует значительно больше аппаратных ресурсов, часто более дорогое и из-за сложности этих ядер может быть менее предсказуемым и надежным.
Типичными примерами встроенных монолитных ядер являются встроенные Linux , VXWorks и Windows CE .
Несмотря на возросшую стоимость оборудования, этот тип встраиваемых систем становится все более популярным, особенно среди более мощных встраиваемых устройств, таких как беспроводные маршрутизаторы и системы GPS-навигации .
В дополнение к основной операционной системе многие встраиваемые системы имеют дополнительные программные компоненты верхнего уровня. Эти компоненты включают стеки сетевых протоколов, такие как CAN , TCP/IP , FTP , HTTP и HTTPS , а также возможности хранения, такие как системы управления FAT и флэш-памятью. Если встраиваемое устройство имеет возможности аудио и видео, то соответствующие драйверы и кодеки будут присутствовать в системе. В случае монолитных ядер многие из этих программных слоев могут быть включены в ядро. В категории RTOS доступность дополнительных программных компонентов зависит от коммерческого предложения.
В автомобильной отрасли AUTOSAR представляет собой стандартную архитектуру для встраиваемого программного обеспечения.
Встроенная система — этосистема на базе
микропроцессора
, предназначенная для управления функцией или рядом функций.