Заметка о разумном использовании ОС


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

Экономический аспект №1

Давайте быстренько взглянем на актуальные (10.03.11) цены на разные контроллеры. Для сравнения я воспользовался сайтом chip-nn.ru, т.к. это то, что я могу реально купить сегодня-завтра и цены их общепризнанно весьма умеренные. Другие показатели кроме размера Flash и RAM я в расчет пока не беру. Итак:

PIC
PIC10F200	256 Flash, 16 RAM	20 руб.
PIC12F675	1K Flash, 64 RAM	40 руб.
PIC16F1936	8K Flash, 512 RAM	80 руб.
PIC18F67K22	64K Flash, 4K RAM	160 руб.

AVR
ATtiny13A	1K Flash, 64 RAM	40 руб.
ATtiny45	4K Flash, 256 RAM	75 руб.
ATtiny85V	8K Flash, 512 RAM	80 руб.
ATmega32A	32K Flash, 2K RAM	150 руб.
ATmega128A	128K Flash, 4K RAM	220 руб.

STM8
STM8S103F3P6	8K Flash, 1K RAM	35 руб. (sic!)
STM8L151K6T6	32K Flash, 2K RAM	50 руб. (sic!)


Ну и напоследок

ARM Cortex-M:
LPC1114		32K Flash, 8K RAM	60 руб.
STM32F100C8T6B	64K Flash, 8K RAM	93 руб.


Думаю, что нет необходимости писать какие-то выводы. В новых семействах флеш катастрофически дешев. 1-кб AVR и PIC стоят столько же, сколько 8-кб STM8. Причем помимо флеша STM8 имеет на борту еще множество интересных и полезных штук, которых нет в младших сериях AVR. А про кортексы и говорить смысла нет — прямое сравнение на одном алгоритме с одними исходными данными дало превосходство в скорости ARM до 20-30 раз по сравнению с AVR.

Так остался ли смысл жаться в двух байтах, когда двухкратный рост стоимости чипа дает восьмикратный рост объема памяти в пределах одной линейки?! А если разумно подойти к выбору контроллера, то можно убить двух, а то и трех птиц одним камнем.

Экономический аспект №2

Как всем прекрасно известно, в производстве издержки делятся на постоянные и переменные. Первые не зависят от объема выпуска, а вторые, соответственно, зависят. При разработке и производстве мелкой электроники к переменным издержкам следует отнести стоимость материалов и деталей, а к постоянным — стоимость разработки устройства (схема/плата/прошивка/тестирование). При мелкосерийном производстве в силу очевидных причин постоянные издержки будут сравнимы с переменными в относительной величине. Абсолютно они могут равняться нулю («я все сделал сам, никому ничего не платил — какие тут издержки?» — спросит читатель), однако это не так.

Пословица «время — деньги» как нельзя лучше характеризует понятие «упущенная прибыль». Использование готовых средств разработки (как то: библиотек, операционных систем, in-circuit отладчиков и др.) существенно сокращает время, на эту разработку затрачиваемое. И оставшееся время разработчик может потратить с большей пользой — выпить пива, погладить кота прочитать книгу, придумать концепцию нового устройтсва, сходить с женой в театр, погладить кота — да мало ли чего еще, было бы время, а куда его потратить, всегда найдется.

Внезапное заключение

Я, вроде бы, хотел написать еще о чем-то, но отвлекся и потерял мысль, поэтому пока подведу итог уже сказанного.

  1. Память дешева
  2. Память очень дешева
  3. Процессорное время тоже сильно дешевеет
  4. ОС жрут память и процессорное время, но сильно облегчают разработку
  5. Велосипедов построено уже достаточно. И если стоит задача добраться из пункта А в пункт Б, стоит подобрать велосипед с наиболее круглыми колесами из существующих и ехать на нем
  6. Изобретать свой велосипед стоит. Этот полезно для понимания основ велосипедостроения. Но в каждом конкретном случае стоит решить, насколько это целесообразно в рамках данного проекта

Итог — в современных условиях стремление сэкономить пару лишних байт (и/или пару лишних рублей) сильно ограничивает разработчика и следует четко понимать, ради чего это делается и взвешенно подходить к выбору платформы и средств разработки перед началом проекта.

P.S. в начале топика ящерка с сайта ChibiOS/RT — операционки, с которой я в данный момент разбираюсь. Довольно занятная вещь при крайне малом размере. В перспективе ляжет в основу моего квадрокоптера

Комментарии (21)

RSS свернуть / развернуть
Ты забыл про баги :)))) Где гарантии, что взятый напрокат велосипед не развалится под клиентом, не похоронив его? Конечно самому багов тоже наделать можно ой ой, но по крайней мере это твой код и ты за него отвечаешь и понимаешь, что он не безупречен, проверяешь его постоянно.
0
Дык никто не говорит, что надо брать первый попавшийся. Взяв популярную ось с комьюнити и активной командой разработчиков можно значительно уменьшить количество багов по сравнению с самописным
-1
Проблема всех популярных проектов — то что это проект для всего. С кучей всяких свистоперделок, которые зачастую надо отрывать и заделывать дыры от оторваной хери. Полноценное использование чужой RTOS имеет смысл лишь тогда, когда проект уж совсем неподьемный без нее. В обычном случае зачастую хватает простейшего диспетчера или конечного автомата. Оно и надежней получается.
0
если бы я не видел Chibi, я бы с тобой на 100% согласился. Но пробежавшись по конфигам становится понятно, что тут конфигурируется практически все. Можно оставить голый диспетчер, который будет рулить потоками с нативным кодом, а можно на полную катушку использовать API и межпроцессное (межпоточное в данном случае) взаимодействие
0
Если велосипед берётся не халявный, а покупается за денюжку, то колёса отваливаются в разы реже, чем если бы ты собрал этот велосипед сам. Если же велосипед халявный, то тут надо быть несколько аккуратнее и прежде чем ехать, надо осмотреть его и подтянуть гайки.

Это я тебе как разработчик софта говорю :)
0
Так остался ли смысл жаться в двух байтах, когда двухкратный рост стоимости чипа дает восьмикратный рост объема памяти в пределах одной линейки?!
А потом окажется что именно этих двух байтов и не хватит в 8К флэша… Это проверено на 1К флэша :)
И не рассмотрен еще один аспект — изучение новых средств разработки. И не повлекут ли их баги критических ошибок? Время — деньги. Лучше пусть пироги печет пирожник, а не сапожник.
0
>> Лучше пусть пироги печет пирожник, а не сапожник.
вот эту фразу можете пояснить? Кто пирожник, а кто сапожник, по-вашему?
0
для PIC размер FLASH указал в словах (14-16 бит)
0
не играет роли. 1 слово = 1 команда, если я правильно помню. так что в любом случае размер флеш характеризует максимальный объем кода
0
для AVR 1 команда — 2 байта — тоже слово
0
Да, но топик не о сравнении авр и пик. У stm8 и arm длина команд переменная вобще. Здесь я сравнивал стоимость МК в пределах одной серии. Просто привел несколько разных серий из расчета «кому что ближе»
0
Перенес в другой бложек.
0
Ага, спасибо, так лучше. А то не нашел его, когда писал
0
А его не было. Только что создал.
0
статья развеяла сомнения. лютобешено реквестирую статью про чибиса! т.к. он поддерживается STM8, нежирный и, вроде как, довольно шустрый.
0
сдам на следующей неделе зачеты/курсовики и попробую чего-нибудь наваять на дискавери
0
ок, ждём! удачных сдач)
0
Какие еще RTOS существуют для STM32 и LPC? Конкретно — STM32F100RB и LPC1114. Кроме указанной нашел только FreeRTOS.
0
еще есть от кейла ртос, но она платная вроде
0
… имхо… самые популярные ОСи:
— FreeRTOS (FreeRTOS.org)
— uCOS-II (micrium.com)
— uTasker (utasker.com)
— Salvo OS (pumpkininc.com)
0
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.