реклама на сайте
подробности

 
 
> Пост интересный родился по embedded OS, при обсуждении STR91xx на сахаре
Evgeny_CD
сообщение Mar 18 2006, 14:27
Сообщение #1


Гуру
******

Группа: СуперМодераторы
Сообщений: 2 065
Регистрация: 11-01-05
Из: Москва
Пользователь №: 1 892



http://www.caxapa.ru/echo/arm.html?id=54484

Linux имеет смысл использовать:
* нужны продвинутье коммуникационные возможности
* для решения целевой задачи нужны хорошие IPC (Inter Process Communications)
* есть (почти) готовый софт(ы) для решения целевой задачи.

Linux имеет четкие минимальные требования:
* 2 Мбайт FLASH для загрузки
* 8 Мбайт RAM для работы (лучше 16; в 8 самый минимум влезет, либо надо использовать специальные урезанные версии ядра)

Эти требования долго были не дешевы, да и сейчас они не тривиальны (если рассматривать очень дешевые тиражные устройства). Собственно, до сих пор нет _однокристального_ девайса, а на котором бы пошел Linux (многокристальные сборки не в счет).

Если от Linux нужна не вся крутизна, а, скажем, только POSIX и BSD Sockets, то имеет смысл использовать *nix подобную встраиваемую ОСь. Собственно, по такому пути и пошли создатtли eCos и RTEMS (и многих других осей - эти две наиболее популярны).

Для них надо 256к FLASH 64...128...256k RAM. Пример - в LPC2106 eCos с POSIX успешно влазит, но места там остается не много.

Если начать навешивать на типовой MCU с ARM7 внешние FLASH и SRAM (например, LPC22xx), то это получается не дешево, и, как много раз считалось, полноценный (Linux | uClinux) будет стоить ненамного дороже - зачем же тогда городить огород?

STR91xx претендует на то, чтобы кардинально сломать ситуацию. Лишние 32к ОЗУ (по сравнению с распространенными 64Кбайтными вариантами) дают шанс засунуть довольно нехилое приложение с BSD Sockets, POSIX, и какой-нибудь вполне нормальной embedded OS (eCos | RTEMS | много чего еще) в _один_ кристалл (внешний MII не проблема).

Теперь по поводу многослоек.

Безусловно, для макетирования 4-х слойка куда удобнее (ну и пусть она на 150$ дороже стоит) - тут и спорить нечего (если, конечно, речь не идет о примитивной плате на LPC21xx, например).

Для малых тиражей - тоже, поскольку реальная стоимость 4-х слойки в общей структуре себестоимости _правильно менеджируемого_ проекта не так уж и велика.

Теперь представим, что у нас тираж 1000шт/мес. Поскольку Ethernet сеть есть в любом современном офисе (раcсматриваем платежеспособные фирмы) и почти в любом современном приличном доме, то применений у embedded ethernet масса.

Рассмотрим два решения
* AT91RM9200
-- CPU
-- FLASH
-- SDRAM
-- MII
-- разъем с трансформатором
-- печатная плата
---- либо компактная 4-х слойка
---- либо довольно большая 2-х слойка

* STR91xxx
-- CPU
-- MII
-- разъем с трансформатором
-- печатная плата
---- компактная двух-слойка

Очевидно, что второе решение будет заметно дешевле. Даже экономия 5$ на таких тиражах - это уже не игрушки (я бы не отказался от такой "прибавки" к своей ЗП)!

"Ага, прозрел, сукин сын!" - скажет кто-то из любителей "жесткой оптимизации". А я на это отвечу - как сказано в методологии XP программирования - оптимизировать нужно толко то, что действительно в этом нуждается; не стоит ничего серьезно оптимизировать заранее - не угадаете (кроме общей структуры - ее стоит оптимизировать изначально и постоянно, не скатываясь, разумеется, к постоянное переделке проекта).

Если говорить о сетевых приложениях, то есть два пути оптимизации. Лично я не вижу никакого смысла брать и писать IP стек на ASM в надежде впихнуть все в "мелкий" камень - это просто пустая трата времени. Количество глюков такой реализации закроет дорогу к массовым продажам устройства - а без массовых тиражей тут и говорить не о чем (пользователи устройства за 1000р могут не оценить Ваши усердие по еженедельному выпуску новой прошивки).

Можно взять uIP
http://www.sics.se/~adam/uip/size.html
Это более перспективно, но в силу ограниченности ресурсов ограниченость стека все равно скажется - сегментация пакетов, отсутствие PPP и пр.

lwIP куда более перспективен
http://savannah.nongnu.org/projects/lwip/

Если же взять готовую и отлаженную ОСь с POSIX Threads (можно ругать (eCos | RTEMS), можно хвалить, то pthreads... () там точно работают!), и тот же lwIP или даже встроенный в ось BSD стек, то в пользовательском приложениие имеет смысл заниматься "жесткой оптимизацией". Ибо системные глюки ОСь + стек маловероятны, а Ваши глюки Вы, в принципе, можете и дожать. Тут и вдумчивое изучение асмового листинга своей программы поможет, и переписывание отдельных кусов на asm руками, и пр. "все тяжкие".

Такое устройство вполне можно продавать 1000+ тиражами, и суппорт не "умрет" от "багодарных клиентов".

Судя по мейл листу lwIP он не идеален, но его юзают в тысячах проектов - так что основные баги там точно пофиксили.

В общем, STR91xx открывает дорогу к принципиально новым проектам, которые удастся впихнуть в "однокристальное" решение путем "разумной" оптимизации, а не путем написания 256к кода на асме. А это новый рынок smile.gif
===
Кто что скажет по этому поводу?
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 27th July 2025 - 16:26
Рейтинг@Mail.ru


Страница сгенерированна за 0.01353 секунд с 7
ELECTRONIX ©2004-2016