Изюминки
АрхивКомментарий в вольном стиле к "инженерному" интервью
О терминах. Cистема называется встроенной не только и не столько потому, что ее обязательно куда-то встраивают (в промышленную электронику чаще как раз встраивают разного вида ПК - это дешевле, чем специальное и более дорогое решение на основе микроконтроллеров). Просто у такой системы выполняемая программа не загружается в оперативную память и не хранится на жестком/мягком диске, а зашита в память ROM- или flash-типа, которая чаще всего размещена на одном кристалле с микроконтроллером. Поэтому перезагружать ее так же, как в персональном компьютере, нельзя. Впрочем, обновление flash-памяти, например через веб (если система подключена к нему), становится обычным сервисом разработчиков. Неправильно думать, что микроконтроллеры - младшие братья микропроцессоров для ПК и рабочих станций. Все дело в их предназначении - управлять (to control) некими конкретными процессами (отсюда и название - контроллер). Поэтому в этих чипах - своя специфическая периферия: интерфейсы UART и I2C, счетчики, компараторы и многое другое. А отличий в разрядности и площади, занимаемом ядром, по сравнению с процессором для ПК может и не быть. Например, ядро Power PC очень популярно в контроллерных применениях. Еще пример: нейромикроконтроллер московской фирмы «Модуль» позиционируется как самый большой в мире (по разрядности) и единственный 128-битовый чип DSP.
Dataquest считает микроконтроллерный сегмент рынка самым большим в отрасли производства компонентов. И так, по ее мнению, будет, по крайней мере, до 2004 года (по прогнозу, объем рынка только 8-разрядных чипов достигнет к тому времени 24 млрд. долларов).
Движущая сила сегмента - встроенные системы с веб-интерфейсом. Веб, как полагают, способен влить свежую кровь в промышленную и бытовую электронику и привлечь потребителей невиданными сервисами (при этом не будем упирать на экзотику вроде тостера, который выдает хозяину информацию о погоде в виде символа на кусочке поджаренного хлеба; см. www.theregister.co.uk).
Обычно веб-инструментарий встроенных систем связывают с развитой телекоммуникационной средой для Интернета. Тут скептики твердят о неготовности самого бассейна, куда воды не налили, но плавать настойчиво предлагают. Однако не стоит летать самолетами на дистанции, доступные пешеходу. Почему бы не задействовать цветущую мобильную связь (отдельный прибор не создаст большого трафика, и расходы могут быть разумно малы) или засыхающую на корню пейджинговую сеть (подробности см. в статье Боба Брауна «Wireless Internet-Based Remote Control Using a Pager Interface» в июльском номере «Circuit Cellar»). Стеки TCP/IP реализованы для всех популярных 8-разрядных чипов. Некоторые - бесплатно (www.ubicom.com). Появляются неплохие книги, где детально рассказывается о реализации подключенных к вебу контроллеров. Производители микроконтроллеров/плат дружно засучили ножками и предлагают «готовые решения». В Чикаго, на только что закончившейся конференции по встроенным системам (www.esconline.com), эволюция микроконтроллеров связывалась с веб-интерфейсом. Например, для стыковки с городской/офисной средой, где локальная сеть проложена повсюду, пригодятся маленькие Ethernet-платы.
Выбор микроконтроллера
Ограничимся малоразрядными и, видимо, самыми важными для рынка - если верить Dataquest - микроконтроллерами. Поговорим о выборе чипа.
Во встроенной системе, как в булочке, есть изюминка. Хотя бы одна. Это микроконтроллер. Подобрать для проекта оптимальный чип довольно трудно, почти как жену. Но свой выбор все, так или иначе, делают. С симпатичным семейством можно долго прожить без особых проблем. И с бытовыми условиями (отладочными средствами) порядок, и теща (дистрибьютор) - лучший друг. И детей (успешных проектов) нарожали порядочно. Но перемены провоцируют осложнения. Например, взбесилась цена на микроконтроллеры (маркетинговая команда производителя/дистрибьютора), или проект неожиданно быстро эволюционировал и потребовал ресурсов больше, чем есть в любимой контроллерной линейке. Может быть, шеф-рационализатор решил за счет контроллера втрое уменьшить себестоимость системы. Всех возможных причин для искушения и последующей обоснованной измены чиповому семейству не счесть.
Суть деятельности разработчика встроенных систем у нас и за океаном мало отличается (сравните сomp.embedded.arch c русскоязычными конференциями). На вопросы «сколько пишете строк кода в день?» отвечают по-разному. Иногда говорят, что одну. Но какую! Попутно решаются проблемы железа (схема, комплектация, подготовка к производству). Но отличия все-таки есть. В уровне менеджмента. В России командиру разработчиков ничего не стоит отдать идиотский приказ, не отвечая за последствия. В Кремниевой Долине это ему выйдет боком. Ну и, конечно, традиционно рабское положение разработчика (науки) по отношению к производству (цех). Смешная зарплата русских специалистов есть следствие крепостного менеджмента (интересно, что красные генералы производств даже хвастаются зарубежным партнерам, что их лучшие инженеры получают лишь триста долларов в месяц. В ответ те натягивают улыбки и мысленно крутят палец у виска: «Хвастаться бедностью! Да я их завтра всех куплю с потрохами…»).
Что касается результатов труда, то они обнадеживающие. Вспомним 1994 год. Маркетологи только-только народившейся отрасли ИТ (информационных технологий) явно скромничали. Ведь что говорили? Что не надо нам своего производства ПК. Что не сумеем мы организовать нормальную сборку. Что нам бы с дистрибуцией ПК справиться. И что Dell и IBM должны хозяйничать в России. Но не смогли именитые фирмы конкурировать с отечественным сборщиком. Эту немаленькую победу никто не заметил и не отметил. То же самое и со встроенными системами. Где они применяются прежде всего? Правильно - в нефтегазовой отрасли (живем-то за счет недр) и в сервисе безопасности (противостоя насквозь криминальному государственному устройству). Пытались здесь работать многие, в том числе и авторитетные американские фирмы. Учреждались региональные филиалы, Rockwell Russia (сейчас закрыт), например. Повторяется та же история, что и с ПК. Не держат зарубежные компании удара отечественного производителя, хотя и слаб он еще невероятно (в больной стране - больные отрасли).
Практика местная и заокеанская выработала здравые принципы выбора микроконтроллера. Если кратко: не умничайте и не гонитесь за экзотикой, не связывайтесь с единственным семейством и дилером и, наконец, не экономьте на средствах отладки. Но и при соблюдении этих правил возможны сюрпризы. Этот сегмент рынка очень неспокоен. Ситуацию обостряет растущиее разнообразиее микроконтроллерных чипов. Видимо, так будет и дальше. Сергей Гаврилюк в «инженерном» интервью утверждает, что после пятой платформы перейти на следующие довольно легко и для гарантированно удачной рыбалки не стоит удить рыбу в одном пруду. А библиотеки найти - не проблема (веб выручит), или можно их заново переписать. Вы ведь еще не забыли заложенные в них алгоритмы?
Говоря про каждый цент для 8-разрядных микроконтроллеров, Сергей Гаврилюк не лукавит. Однако есть еще один сегмент, где каждый цент - важен, причем заметьте - несмотря на небольшие тиражи. Я имею в виду сектор учебных микроконтроллеров. Чип для инженера-новичка, студента-первокурсника или для старшеклассника, который захотел вдруг узнать «а чё в этом камне», как его включить и сделать на нем Свою Первую Систему. Раньше в эту нишу с трудом втискивался Z80. Помните народные поделки АОН и Sinclair? Но кто писал сами программы? Редкие энтузиасты инженерного возраста и вундеркинды, ныне процветающие благодаря раннему старту и накопленному опыту. Остальные - пользовались.
Сейчас рынок микроконтроллеров для новичков тоже не богат. Им рекомендуют 1 начинать с того же Z80 и его потомков (однако спешите, пока Zilog не закрылась - ее положение последние годы очень шаткое), майкрочиповских PIC’ов самых младших семейств и/или программировать готовые Basic-Stamp-контроллеры. Согласен с господином Гаврилюком («ну не нравятся мне эти PIC’и, где обратиться к памяти по-человечески нельзя»). Не столь стройна система команд PIС-микроконтроллера, чтобы ею пудрить мозги любопытным юношам. От знакомства с лексическим (его ассемблер, IMHO, - тихий ужас) и функциональным аскетизмом с54 (и прерываний там нет!) юношей может и нервный срыв хватить. Вывод: PIC хорош для профи как вторая или третья платформа и противопоказан новичкам.
Что касается Basic-Stamp-контроллеров, где вроде бы все неприличное, исподнее белье семейства 16С5x спрятано от глаз подальше (www.parallaxinc.com/html_files/getting_started/gettingstarted_stamps1.htm), то программировать встроенные системы на Бейсике, наверное, и удобно, но (как бы это помягче выразиться, дабы не обидеть апологетов) вы мало поймете в архитектуре, схемотехнике и системотехнике проекта.
Позвольте, спросите вы, а для чего тогда нужен этот изюм? Для развлечения мужчин, коим за сорок, в кругу семьи. Тихими вечерами вместе с сыном забавляться, программируя микроконтроллер на ПК через ИК-канал для потешного робота или умного лунохода, способного, например, возвращаться в пункт отправки без участия человека. Такой конструктор стимулирует интерес к технике. Сколько стоят наборы Basic-Stamp? Около 30-50 долларов за одно приложение, а их надо иметь хотя бы десяток-два. Подростку удобнее начинать с очень дешевого (не дороже 10-20 рублей, но настоящего, c приличным макроассемблером, а не Basic’ом) 4-разрядного CMOS-микроконтроллера. С бесплатной и удобной средой проектирования под DOS. Архаизм в выборе платформы? А это для надежности. Доводы грамотных австралийских программистов (www.htsoft.com), авторов Hi-Tech PIC C Compiler под DOS для микроконтроллеров PIC и не собирающихся переписывать продукт под Windows, меня покорили. Действительно: «вам шашечки или ехать»? Все равно итог - программа для микроконтроллеров PIC, а в чем ее писали (в DOS или Windows,да хоть в VAX/VMS) - не узнать.
Методология и языки программирования для встроенных применений
О методологии и языках программирования для встроенных применений - разговор отдельный. Не рискну утверждать (как Сергей Гаврилюк), что Си непригоден для «8-битников». Как скоро разработчики КТЦ написали бы программу специализированного калькулятора (где много операций с числами вещественного формата)? Наверное, по крайней мере, использовали бы библиотеки Си float-point. А если ресурсов - на один человеко-месяц, а размер программной памяти для задачи - большой до неприличия, как, например, в AVR 8515, чью архитектуру норвежские изобретатели сработали именно для Си? Для более серьезных систем оказывается, что и Си++ - недостаточно высокий уровень. Признанный столп САПР в электронике Санджованни Винчентелии из Калифорнийского университета в Беркли на последней DAC (Design Automation Conference) провозгласил ущербность «слишком низкого» уровня существующих языков программирования для встроенных систем. Поддерживая систему автомобильной телематики для одной европейской автокомпании, он с командой вынужден тратить каждый год сто человеко-лет на переписывание одного приложения, в котором 300 тыс. строк кода на Си++ . Вывод Винчентелии о необходимости не столько средств программирования, сколько свежих методологических подходов, подтверждается растущей популярностью XP-программирования (ootips.org/xp.html или www.extremeprogramming.org), которое для встроенных систем выглядит естественным выбором. Программисты, пишущие софт для встроенных систем, по определению и по натуре являются экстремалами. Много степеней свободы (то структура «железа» поменялась, то задачи расширились, причем все меняется на ходу) делают процесс проектирования системы похожим на опасную гонку на велосипедах/мотоциклах/джипах (соответственно для 4-, 8-, 16-32-битовых платформ) по пересеченной местности с решением ряда головоломок, возникающих в реальном времени. Инженеры, разумеется, используют OOП и структурное программирование и еще, например, модели Royce Waterfall, Boehm’s Spiral, Rapid Iterative (Gilb) и самый последний писк - методологию Хайнса-Ортеги (Hines-Ortega).
Где достать компоненты для встроенных систем?
Этот вопрос набил оскомину, но по-прежнему не решен. Как выходят из положения коллеги? В Рунете есть всего два утоптанных места тусовок «embedded systems»-общественности - античная конференция fido7.ru.embedded и относительно новый форум www.telesys.ru/wwwboards/mcontrol. Эти нескучные места охотно посещают инженеры, студенты и увлеченные микроконтроллерами люди. Комплектующие они обычно покупают в «Митино» или у ближайшего дилера. Часто местные купцы «не видят» (их за это винить трудно) прекрасные компоненты, необходимые разработчикам, и последние присматриваются к онлайновым торговым точкам. Во врезке приводится минимально отредактированный кусочек выступления из www.boards/mcontrol, где инженер под ником Black Eagle рекомендует метаискалку дистрибьюторов www.findchips.com, как «недурственный ресурс по проверке наличия компонентов на складах у ведущих мировых поставщиков» для последующего заказа через онлайн.
[i40425]
1 (обратно к тексту) - Специально опрашивал посетителей usenet-конференции comp.arch.embedded и получил около десятка предложений, на основании которых и делаю заключение.
Менее искушенные коллеги пытаются спорить, но русский Black Eagle («Черный орел») с приличествующим своему нику достоинством отвечает:
- Я занимаюсь разработкой и изготовлением высокотехнологичной аппаратуры, детали для которой ни на базарах, ни в магазинах не продаются, и прекрасно понимаю коллег, испытывающих трудности с приобретением новейших комплектующих. Для себя проблему я давно решил и с радостью поделюсь малой толикой своего опыта с теми, кому он может быть интересен. Звереющие при одном виде кабалистического буквосочетания USA могут смело продолжать пить пиво и закусывать развесистой клюквой. Я таких людей знаю, их немало. У них есть собственная гордость, выражающаяся, как правило, в следующем:
-
нежелание/неспособность/боязнь изучить хотя бы английский,
-
стойкое отсутствие денег и, как следствие, платежных карт,
-
готовность работать за копейки и по любой тематике,
-
абсолютная уверенность в собственной правоте и одаренности.
Не имею достаточных оснований приписать вам что-либо из этих качеств.
А теперь - получите по пунктам-с.
Важно, чтобы комплектующие были доступны на протяжении долгого времени, а также имели оптимальную цену, которая у каталожных продавцов никогда не была низкой.
- На стадии разработки цена не имеет никакого значения. Долговременная доступность важна в основном при крупносерийном производстве, которое меня нисколько не интересует.
Если через посредников и проходят мелкие партии, то далее будут проблемы, так как, покупая у американских фирм, вы неизбежно столкнетесь с тем, что она не имеет права продавать свою продукцию за пределами США.
- А на кой черт тогда нужен посредник, если на него нельзя положиться??? Эти фирмы обычно специализируются по странам назначения, поэтому проблема высосана из пальца.
Не каждый имеет возможность ездить в Штаты за комплектацией для нужд разработки.
- В таких путешествиях просто нет смысла, так как проще и удобнее купить все, что нужно, не выходя из дома, в онлайне. Тем не менее почти из любой поездки я привожу что-нибудь интересное, и совершенно не очевидно, что оно мне было нужно - просто вижу и покупаю, когда-то пригодится. А насчет возможности совершать поездки я уже не раз говорил: Embedded Systems Engineer не имеет права так называться, если позволяет себе зарабатывать в месяц меньше, чем стоит поездка в Штаты.
Поисковики, на мой взгляд, лучше, и с достоверной информацией о наличии комплектующих именно по изготовителям (иногда даже видно, что уже не стоит применять). К тому же представлены в Роcсии через официальных партнеров.
- Официальные партнеры в России в основном такие: Что вы поставляете? - Все! - А что у вас есть на складе? - Ничего! Срок поставки - два месяца, со стопроцентной предоплатой, не менее ста штук по каждой позиции! Вам это надо? Мне - увольте. Хватит строить коммунизм в отдельно взятом городе. Я все еще надеюсь, что в силах споспешествовать вытравливанию совка из некоторых заскорузлых, но не до конца атрофировавшихся мозгов, а вы исподволь способствуете обратному. Flame Over!