`

СПЕЦИАЛЬНЫЕ
ПАРТНЕРЫ
ПРОЕКТА

Архив номеров

Как изменилось финансирование ИТ-направления в вашей организации?

Best CIO

Определение наиболее профессиональных ИТ-управленцев, лидеров и экспертов в своих отраслях

Человек года

Кто внес наибольший вклад в развитие украинского ИТ-рынка.

Продукт года

Награды «Продукт года» еженедельника «Компьютерное обозрение» за наиболее выдающиеся ИТ-товары

 

Андрей Зубинский

Микроконтроллеры и embedded вообще. Часть 01

+2525
голосов
What I cannot create, I do not understand.
Ричард Фейнман

Как и обещал ранее, приступаю. И сразу о масштабе – каждая тематическая запись этого цикла будет практически статьёй, но в статьи выносить их не хочется из-за «непрофильности». Поэтому пусть будут записи в блоге.

Итак, с кем я собираюсь говорить, о чём и зачем? И до каких глубин в этих разговорах мы доберёмся? Чтобы сразу определить масштаб мероприятия.

С кем? С вами. Предположим, вам скучно и хочется интересного, но не такого, чтобы истратить пол жизни на непонятно что. Многим сейчас скучно (иначе бы унылейшие игрушки, модификации всего трёх типов, не пользовались бы такой популярностью у владельцев  планшетов) , время такое. Или у вас растут детки, для которых, увы, никаких толковых книг фактически не издаётся. От вас требуется только любопытство и понимание базовых понятий, которые специфика сайта подразумевает (вроде позиционных систем счисления, например, двоичной). Всё конкретное, что можно будет купить или сделать руками, будет или крайне недорогим (и в мнимальных количествах) или вообще смешно копеечным. Дорогие хобби - это, конечно, прекрасно, но почему-то слишком часто с ростом стоимости хобби радость как-то уменьшается и уменьшается, и вот уже дорогие цацки валяются где-то, практически неликвидные, и покрываются пылью. Впрочем, вы сами знаете...

О чём – определяет, так сказать, наружные габариты фундамента, который я с вами берусь выкопать (с вами - потому что если никто этого читать не будет, то и смысла нет). Глубины, само собой, определяют сколько нам придётся помахать «ментальной лопатой», какую технику применять, и, наконец, - что впоследствии вы сможете выстроить на основе этого фундамента. И сразу предупреждаю – ничего подобного вы нигде не прочтёте, этот материал сугубо авторский и уникальный, в нём всё будет «не по книжкам» и «неправильно» (потому что автор не знает, как оно, правильно).

Даже в масштабах большой книги невозможно охватить всю площадь embedded, к сожалению. Но заглянуть на ключевые участки необходимо. Посему мы в чём-то ограничимся (например, в выборе конкретных микроконтроллеров), а в чём-то немного позволим себе «растечься» по embedded-поверхности, но ровно до тех пределов, за которыми начинается тьма профессионализма (хотя и туда будем заглядывать). Очертим, так сказать, границы. И, главное, - мы не будем играть в игры «смотрите как всё просто». Даже не потому что это неинтересно. А потому что бессмысленно. Здесь я как бы ставлю первый маркер, и к пояснениям его непременно ещё вернусь.

В общем, хватит отступлений, поехали.

Предмет нашего рассмотрения – гигантский сегмент IT-рынка (и, так сказать, наше скромное место в нём – возможно, для кого-то этот цикл записей окажется подспорьем и поможет это место занять, а это лучшая награда любому пишущему автору, если кто не понимает такого важного нюанса, и сразу оговорюсь – всё это пишется без всякой поддержки со стороны какой-то компании, поэтому ангажированность нулевая, всё подчинено исключительно здравому смыслу и нюансам нашей реальности). В этом сегменте рынка есть свои правила, свои диалекты естественных языков, своя идиоматика, ремесленные приёмы и что угодно ещё, что есть в любой востребованной области человеческой деятельности. А область ещё какая востребованная. Потому что…

Востребованность embedded-систем, в отличие от программно-аппаратных человеко-машинных комплексов, определяется востребованностью надсистем. Потому что embedded – значит встроенный во что-то. И вот это что-то – оно кому-то очень нужно. Причём на вопрос «что оно, это что-то?», можно ответить только так – что угодно. Настолько что угодно, что многие удивятся. Например, если вы (как я) предпочитаете бриться вибростанками, но любопытство вас никогда не подгоняло заглянуть вовнутрь привычного станка, подскажу хорошо известное в узких кругах – там внутри, независимо от производителя (Schick или Gillette), непременно есть микроконтроллер (оригинал картинки – в этой статье):

Микроконтроллеры и embedded вообще. Часть 01
 
Причём микроконтроллер там не для «красоты» и вовсе не для пресловутого «повышения потребительской стоимости». А потому что вибромоторчиком надо управлять так, чтобы он «выдавал» стабильные характеристики во всём диапазоне выдаваемых батареями питания напряжений и токов. То есть, чтобы по мере разряда батарей характеристики вибрации оставались стабильными до практически полного разряда. Это очень непростая задачка, к слову. Реального времени. И вы очень удивитесь насколько непростая, когда погрузитесь до нужного уровня и сможете оценить увиденное не на уровне «ах» (или «чепуха», тут всё зависит от вас), а прикидывая во что это удовольствие выливается. К примеру с этим бритвенным станком мы ещё вернёмся в скором будущем, ещё до конкретики, и будем возвращаться не один раз.

То же самое можно сказать о любом на первый взгляд не особо интеллектуальном современном бытовом приборе. О профессиональном инструменте, например (о, какая замечательно сложная и умная микроконтроллерная подсистема управления двигателями в шуруповёртах A-брендов, там уже цифровая обработка сигналов и жёсткое реальное время, причём «в полный рост»!). В общем, не буду усугублять, только констатирую важный факт – технология встраиваемых систем нужна для обеспечения такого уровня потребительских функций и качества функционирования материальных устройств, который недоступен для других технологий. Поэтому встраиваемые системы уже есть почти везде, и будут, скорее всего, вообще везде. Пока мир окончательно не вернётся в пещеры под лампадки (мрачно шучу, да).

Теперь давайте посмотрим на «свежие» данные, косвенно характеризующие embedded-мир в его основных трех составных частях – аппаратных средствах, программных подсистемах, и, конечно же, в людях. Благо, эти данные есть и доступны. Нам это нужно чтобы добавить к факту повсеместного распространения качественные и количественные характеристики.

Начнем с самого простого. С распределения спроса в embedded-мире на вычислители разной разрядности данных. С этой самой разрядностью нам придётся ещё разбираться, но пока ограничимся следующими данными первого квартала 2013 года:

Микроконтроллеры и embedded вообще. Часть 01

Самые популярные во всем огромном embedded-мире – встраиваемые вычислители с разрядностью данных 32 бита, доля 8-битовых и 64-битовых на первый взгляд сравнительно мала и, по слухам, наблюдается следующая неотображаемая графиком тенденция – доля 8-битовых вычислителей сокращается, а 64-битовых – растёт. По крайней мере, об этом часто говорят.
Что касается косвенной оценки востребованности производительности встраиваемых вычислителей, то ничего лучше тактовой частоты придумать трудно, и вот такая очень интересная уточняющая картина выстраивается:

Микроконтроллеры и embedded вообще. Часть 01

Внутри определенных диаграммой диапазонов есть свои нюансы и своя деталировка, но она нам не важна, кроме одной важной детали – если разбивать любой диапазон, кроме самого нижнего, на более мелкие шаги тактовой частоты (скажем, диапазон от 100 до 999 MHz – на десять фрагментов), то можно видеть смещение диаграммы востребованности или особенности её вида. Например, востребованность встроенных вычислителей с тактовыми частотами 100-999 Mhz смещена влево, к наименьшему значению тактовой частоты:

Микроконтроллеры и embedded вообще. Часть 01

В сегменте малых тактовых частот (от 10 до 99 MHz) присутствует чёткий провал – вычислители «ни рыба, ни мясо» с частотами от 25 до 50 MHz ощутимо менее востребованы, чем более медленные или более быстрые модели. Еще один интересный факт, который «выуживается» из диаграммы востребованности – рост применений вездесущих «черепашек» с тактовыми частотами до 10 MHz, вопреки всем прогнозам. К этому мы тоже вернёмся в своё время.

Теперь давайте посмотрим на уровень «системного ПО» (это странное понятие в embedded-мире, очень расплывчатое, опять же, наступит время – всё прояснится).  Здесь всё очень своё, о чём мало кто слышал, но чем большинство пользуется ежедневно. Графиков строить не буду, нет нужды, достаточно сказать, что в двух сегментах embedded – потребительском (а всякие медаиплейеры и прочая mp3 тоже относятся к embedded) и «прочем» есть свои царствующие безраздельно. В потребительском сегменте – пока ещё, но, похоже, всё равно явно надолго, царствует Android («пока» потому что за год платформа утратила 6% востребованности, а надолго потому что отрыв от самых опасных конкурентов всё равно очень велик), в «прочем» – ОС FreeRTOS и «самописанные ОС», оставляющие всех остальных далеко позади с суммарной долей 40%.

Ну и, наконец, люди. Точнее, проекты, которые людьми реализуются. Средняя продолжительность embedded-проекта стабильно держится на уровне года с небольшим. 70% проектов укладываются в эти временные рамки. Всё, что продолжительнее двух лет – большая редкость. Но и «реактивного», «пятилетку за три дня» в этом мире не отыскать, шесть месяцев – нижний предел, обусловленный реальностью и спецификой. Распределение затрат времени в типовом проекте выглядит примерно так:

  • детализация спецификаций будущей системы отнимает в среднем 15% проектного времени,
  • концептуальное проектирование  - 10-12%,
  • детальное проектирование – от 20% до 30%,
  • макетирование – 7-8%,
  • тестирование и отладка – 20-23%,
  • прототипирование – 10-12%,
  • подготовка к производству – 6%,
  • разработка документации – 1-2%.

Интересные факты можно выудить из временных изменений цифр в этой картине. Концептуальное проектирование практически не изменяется со временем – сколько на него нужно времени, столько нужно. Но, например, временные затраты на разработку спецификаций (самый высокий уровень проектирования) с каждым годом сокращаются, как и затраты на тестирование и отладку. И при этом ощутимо возрастает время детального проектирования. Со всеми этими нюансами вы столкнётесь, если, например, попытаетесь сделать что-то достойное производства и выставить его в поисках инвестора куда-то на Kickstarter, например. Мало ли. Это такая область, где получиться может у каждого.

Теперь давайте соберем из этого что-то похожее на общую картину.

Очень интересен заметный рост востребованности встраиваемых вычислителей - «низкочастотных черепашек». Интересен и объясним. Так как встраиваемые вычислители используются для придания новых потребительских свойств чему угодно, а этого чего угодно неисчислимое количество, и так как чаще всего высокой производительности в таких применениях не требуется (или требуется, но есть фокусы, приёмы и целые архитектуры, позволяющие этой потребности избежать), - вот и ответ, и объяснение. Кроме того, есть жесткое правило – для вычислителей на основе одной полупроводниковой технологии чем выше тактовая частота, тем выше энергопотребление. А энергопотребление – вообще отдельная история в мире embedded (но всему своё время).

Также очень заметно несоответствие самой востребованной ОС второму самому востребованному диапазону тактовых частот. Кто-то может себе представить Android с его виртуализацией, исполняющийся процессором с тактовой частотой 25 MHz? Представить-то можно, конечно, но смысла даже представлять нет. Стало быть, всему своё место – и потому «черепашки» вместе с низкочастотными вычислителями фактически «выедают» 46% embedded-рынка, и именно здесь сконцентрированы программные лидеры – FreeRTOS и «самописанные ОС» (и, к слову, Windows Embedded – очень востребованная ОС, на уровне 9% от всего «системного ПО»).

Итого, в embedded-мире есть две большие области – потребительская, где царствуют в специфическом понимании "встраиваемые" ОС (более, всё-таки, потребительские) и где тактовые частоты вычислителей превышают 1 GHz, и вся остальная область – где всё совсем иначе и совсем не похоже на потребительский мир. Мы будем говорить об этой второй «остальной» области, потому что в ней интереснее и ещё можно довольно глубоко «закопаться» без чудовищной сложности программных прослоек. Да, здесь свои чудовищные сложности, но зачем их умножать «за бесплатно»? Тем более, что первая область мощно поддержана информационно.

Вычислители embedded-мира

В 2013 году мне не нравится термин «микроконтроллер». Потому что он унаследованный, происходит из времён «больших машин для людей» и уже совершенно не отражает сути. Поэтому вместо него буду или использовать аббревиатуру µC (потому что она красивая визуально), или «embedded-вычислитель».

µC (embedded-вычислитель) – это компьютер «для машин». Не для людей. Все традиционные компьютеры делались именно для людей. Даже серверы – они всё равно для людей (и потому требования «для людей» в мире традиционных компьютеров откликаются на сугубо человеческие требования на всех уровнях, например, даже низкоуровневых сетевых протоколов, которые модифицируются для того, чтобы в итоге пользователь видел всё «гладко, быстро и красиво»). В мире машин своя специфика. Но тут надо разбираться. И, всё же, сделаю маленькое отступление.

Если бы я был студентом или писал этот материал в каких-то коммерческих целях, я бы, грубо говоря, не мучил вас и себя. Написал бы «из книжки» определение микроконтроллера – да и дело с концом. Но хороший текст, по моему мнению, независимо от его назначения и целей автора – это цепочка рассуждений. Думать, конечно, вредно, что демонстрируют нам хроникой безумных ДТП сытые и красивые звёзды шоубиза и прочая «элита». Но это так увлекательно. Потому что открываются глаза. Многое становится заметным и понятным. А уж что кто сделает с пониманием, как и в каких целях его использует – вопрос не ко мне.

Итак, вычислитель «для машин». Из этого сразу следует, что «жить и работать» такому вычислителю приходится в весьма специфическом мире. Так как любой вычислитель – механизм переработки информации, черпать эту самую информацию embedded-вычислителю придётся из мира машин. И в этот же мир каким-то образом возвращать. А в мире машин, что очевидно, понятие «информация» уже далеко не такое размытое, как в мире людей. В мире машин информация – это измеряемое и физические действия. Всё, что можно измерить и все, что приводит к физическим изменениям. Другой информации там нет. Потому что мир машин - это физический мир. И измеряемого в нём не так много (список измеримых физических величин довольно скромен), но есть важное «но», которое уже должно быть очевидным. Вычислитель – устройство электронное (кстати, может быть механическим, пневматическим, гидравлическим и даже каким-то вычурным квантовым, но это выходит далеко за очерченные нами рамки). И в его электронном мире измеримого всего что ничего – напряжение и его полярность (разность электрических потенциалов) и частота или временной интервал (количество событий за единицу времени или количество событий между заданными событиями). Сила и направление тока – очень специфические величины, их измерение всё равно оказывается опосредованным и сводится к измерению разности электрических потенциалов (напряжению). Собственно, напряжения и частоты (временные интервалы) и определяют видимость встраиваемым вычислителем физического мира машин. Поэтому всё прочее, что надо измерять (скорости, ускорения, температуры, углы поворотов, линейные размеры, массы, свойства материалов вроде влажности, концентрации химических веществ и прочее, прочее, прочее) – всё это должно быть сначала приведено к понятному вычислителю. То есть, преобразовано в напряжение или частоту с помощью чего-то, что принято называть сенсорами (sensors). И, естественно, должны быть механизмы, обеспечивающие возврат информации из встраиваемого вычислителя в действия в физическом мире. Эти механизмы (устройства) принято называть актуаторами (actuators). Они преобразуют всё, что может выдать embedded вычислитель – напряжения и частоты, – в какие-то действия в физическом мире.

Теперь о самом важном, без чего всякие разговоры об embedded превращаются или в специфическую частность, или в собачью чушь вообще. Чем отличаются объекты материального мира от нематериальных, например, программ? Чем фундаментальным? Есть у них единственное фундаментальное отличие. Это стоимость тиражирования. Физический объект имеет стоимость воспроизведения копии. Программа таковой не имеет. Это настолько банально и важно, что не сказать об этом явно было бы преступлением. И в этой общей банальности кроется масса ответов на совершенно конкретные вопросы.

И, наконец, ещё одно очень важное. Приподнимающее завесу над страшным словом «realtime» (реальное время). Объекты физического мира совершенно не подчинены принципу «пользователь может подождать». Тормоза вашего автомобиля не могут «немного подождать» пока бортовые системы заняты декодированием HD-видео для пассажиров на заднем сиденье. Электродвигатель при тысячах оборотов в минуту не может ждать пока embedded вычислитель примет пакет по сети. Слова «подождать» в этом мире нет. В этом мире ценится тотальная предсказуемость. Если что-то должно исполниться за 14 микросекунд – оно должно исполняться за 14 микросекунд всегда. Не за 14,1 микросекунды в некоторых случаях. И даже не за 13,8 микросекунд. Ровно за 14. (Это очень строго и даже немного утрированно, но лучше сразу так, чем вообще никак.) А предсказуемость – это очень трудно и болезненно достигаемое, требующее грамотных людей, времени и денег. Поэтому типовые задачи, облегчающие достижение предсказуемости системы в целом производители embedded-вычислителей как могут поддерживают аппаратно. И чем такой поддержки больше, чем она больше соответствует задачам предметной области – тем лучше подходит для этой предметной области вычислитель. Впрочем, для этого ещё рано, это пока так, для общей информации.

Теперь давайте соберём всё воедино, подумаем и сделаем кое-какие неожиданные выводы.

Встраиваемый вычислитель (микроконтроллер, если хотите) предназначен для восприятия из внешней системы того, что он может измерить (напряжения и частоты или временные интервалы, что одно и то же, сигналов) в нужных для работоспособности внешней системы количествах. И для формирования управляющих сигналов для преобразования их в действия в физическом мире, тоже в нужных количествах. Так как мы говорим о материальных, физических системах, и у них есть стоимость тиражирования, то чем меньше аппаратного (материального, физического) нам нужно добавить к встраиваемому вычислителю для решения этих двух задач, тем меньше будет стоимость тиражирования всей системы в целом. Кроме того, вычислитель должен обеспечивать требуемую спецификой применения предсказуемость и соответствовать требованиям, которые предъявляются к внешней системе.

Вот так, на уровне рассуждений, мы пришли к тому моменту, когда уверенно можем не реагировать на всякую «чушь из интернета» типа расхожих советов «как выбирать микроконтроллер». Потому что уже знаем – чтобы оптимизировать стоимость тиражирования нам нужно как меньше дополнительного материального, поэтому выбираемый нами для решения конкретной задачи встраиваемый вычислитель должен обладать необходимым для этой задачи количеством интерфейсов с внешним миром и быстродействием, которое обеспечивает предсказуемость поведения всей системы в целом, особенно в критических режимах работы, где всегда проявляются все огрехи проектных решений (в программировании дело обстоит точно так же – все «интересные» нюансы почему-то обнаруживаются на границах диапазонов значений переменных или на/за границами областей выделенной под объекты памяти). Естественно, выбранным вычислителем должны соблюдаться ключевые требования к надсистеме – к ним в первую очередь относятся температурный диапазон и энгергопотребление. Всё прочее – как-то: «изящность» архитектуры процессора вычислителя, всякие трудно формулируемые нюансы вроде «популярности в народе», – всё это пустое. Почему именно так – позже, для этого ещё рановато. Впрочем, и без отдельных объяснений это будет понятно со временем.

В следующей части начнётся конкретика. И она будет неожиданной. Обещаю.

+2525
голосов

Напечатать Отправить другу

Читайте также

ждем!

Спасибо.

Всё будет.

УРА! Дождались!!

А какой период между публикациями будет? Хоть примерно +- неделя?

Спасибо )

Нет, будет чаще.
Обещаю.
Но могут быть провалы. Несерьёзные.
Я тут очень интересное задумал просто, и сам его проверяю по ходу дела. А это требует времени.

Дочекалися... Смакуємо.

спасибо )

Дуже сподіваюся на продовження.

Спасибо, с нетерпением ждал этого цыкла статей. Вы главное пишите в своем стиле без сухости учебников. Как то еще в школьные годы в кружке радиоконструирования мне вбили в голову что электроника это сложно. Целых два года вбивали. Так что главное это легкость изложения :)

Читали всем офисом!
Многие девушки прослезились!

Несовсем понятен акцент на "стоимости тиражирования", понятно что не нулевая, но чем крупнее серия тем дешевле устройство, нет?

матросы смеются, девушки рыдают (с)

разберёмся.
не всё так просто.
ступенчато и вообще зависит от массы вещей.
но это немного выходит за рамки.

Спасибо, очень интересно, жду продолжения!

Андрей, проблема не в том что микроконтроллеры будут стоять везде, проблема в том что микроконторллеры без применения не нужны. Тот же пример бритвы - микроконтроллер там стоит потому что продукт продается и он является частью функционала этого продукта. Разработан он на деньги которые были потрачены на дизайн продукта и вне продукта не нужен никому в принципе. Точно то же самое с Гугл Гласс - просто ? Даже элементарно. Можно разработать в Украине ? Запросто. Только чтобы продать его нужно быть Гуглом.

Вывод к сожалениею простой - бизнес по производству микроконтроллеров никому не нужен, если Жилет понадобится микроконторллер в Китае тысяча заводов которые за ночь склепают все что угодно по цене на три цента дороже чипа который там использовался. А Украине остается "производство" таблетов основной отличительной особенностью которых от китайских братьев-близнецов является красная кнопка включения.

Андрей, совет - надо бы Вам подключить к этим обзорам "тайный" мир М2М. Очень будет в тему, а то бритвы как то не впечатляют :) А разбирать как устроены контроллеры управления закрылками Бонигов широкой массе девушек будет скучно. ;)

Очень интересно! Спасибо!

 
 
IDC
Реклама

  •  Home  •  Рынок  •  ИТ-директор  •  CloudComputing  •  Hard  •  Soft  •  Сети  •  Безопасность  •  Наука  •  IoT