А теперь обратимся к тем областям нашего существования, в которых встраиваемые микропроцессорные системы играют ключевую роль. Технические и общественные системы, перечисленные на рис. 1.1, просто не могли бы существовать без разнообразных встраиваемых систем, а наша военная безопасность и система коммуникаций для управления государством основываются на множестве высокопроизводительных встраиваемых систем. На борту орбитальных космических станций и спутников считают и управляют встраиваемые системы. Любой современный станок и измерительный прибор — это тоже встраиваемая система. Большинство сложных медицинских диагностических комплексов использует для обработки результатов встраиваемые системы. Совершенствование узлов современного автомобиля и других транспортных средств также немыслимо без встраиваемых систем. И наконец, бытовая техника и устройства домашнего развлечения с мультимедийными технологиями — все это встраиваемые системы.
Рис. 1.1. Области применения встраиваемых систем
1.2. Особенности встраиваемых систем
Встраиваемые системы существенно отличаются от компьютеров общего применения. В данном параграфе мы обсудим специфические проблемы, которые должны быть решены разработчиком встраиваемой системы на начальном этапе проектирования.
1.2.1. Работа в реальном времени
Когда мы говорим, что встраиваемая система должна работать в реальном масштабе времени, мы подразумеваем, что система должна производить определенные вычисления за строго определенные временные интервалы. Если система не может произвести необходимые вычисления за отведенный временной интервал, то в лучшем случае объект ее управления будет работать с низкими техническими характеристиками, а в худшем случае будет создана аварийная ситуация. Используя термин «вычисления в реальном времени», мы имеем в виду, что интервал времени, предоставляемый для этих вычислений, ограничен. При этом его численное значение определяется конкретной задачей и может существенно различаться для разных систем. Например, система антиблокировки колес автомобиля должна опросить датчики состояния каждого из четырех колес (колесо скользит или катится) и выработать необходимые сигналы для приводов тормозов в течение нескольких миллисекунд. О такой задаче мы говорим, что она исполняется в реальном времени. Другой пример — система GPS навигации автомобиля, которая должна обновлять карту на дисплее в кабине водителя за несколько секунд. Это тоже будет система реального времени. Однако вычислительную систему, которая рассчитывает оптимальные коэффициенты сложного цифрового фильтра в течение трех часов, мы не называем системой реального времени, поскольку время ее исполнения важно, но не критично для пользователя.
Познакомившись с терминологией, давайте обсудим, какой должна быть встраиваемая система для того, чтобы успешно работать в реальном времени. Во–первых, система должна быть разработана таким образом, чтобы необходимый цикл вычислений укладывался в отведенный временной интервал. Для этого необходимо выбрать соответствующую вычислительную производительность микроконтроллера, разработать эффективный по быстродействию алгоритм, разработать схемы интерфейсов с минимально возможными задержками в передаче сигналов. Во–вторых, встраиваемая система должна обладать устойчивостью по отношению к внешним данным. Допустим, для формирования результата система должна получать данные извне. А эти данные не пришли вовремя. Тогда система не может выдать необходимый результат в требуемый момент времени, однако она не должна «зависнуть». Она должна продолжить поставлять результаты в реальном времени, но в ином, возможно сокращенном виде.
В противоположность системам реального времени компьютеры общего назначения не имеют жесткого ограничения по времени выполнения программы. Долгое ожидание завершения расчетов может расстроить пользователя, но не приведет к заметным негативным последствиям. А вот если встроенная в медицинское оборудование система не выполнит задачу за отведенный для нее срок, то это может закончиться в некоторых случаях и смертельным исходом. Поэтому организация работы встраиваемых систем в реальном времени является одной из основных проблем проектирования.