Jump to content

    

Серьезный вопрос по Linux.

Linux велик и могуч. Учить его надо несколько лет - если ставить задачу полностью овладеть всеми премудростями, в том числе написанием эффективных дров. Я начал читать книжки по ядру Линуха - крайне поучительное чтиво!

 

Если довольствоваться только user space, и писать, используюя готовые дрова, то все с точностью до наоборот - Linux дает очень комфортную среду разработки, которую любой знающий С человек освоит за пару мес на уровне, достаточном для написания приложений малой и средней сложности. Не знающий С освоит его и осознает губинные сущности - почему С сделан именно так, как он сделан :)

 

Как я и многие другие авторы писали, что для очень и очень многих задач проблему Linux дров и не RT сущности стандартного Linux можно оешить при помощи технологии "Dream Board" - периферийного процессора, который "крутится" под управлением RTOS, и имеет канал связи с Linux, по которому обменивается высокоуровневыми командами. Через стандартный драйвер Linux user space имеет доступ к этому сопроцессору, ну и далее пишется обычное Linux приложение.

 

Чего нет в embedded Linux, так это халявы. Там нет ничего бесплатного, если свою жизнь не считать бесплатной.

 

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

 

Попутно заметим, что открытость исходников ничего не гарантирует. Я могу написать фильтр, который переименует все переменные и функции в стиле var_00001, func_0001, прибьет все каменты - и тогда даже uCos станет невероятно сложной и непонятной ОСью :)

 

Сделавший свой проц качественно портирует на него Linux (некачественно портировавший идет лесом), пишет хорошую доку, и раздает софтовую часть этого проекта открыто и бесплатно, будучи полностью заинтересованным в конечном результате - процык то его, и защищен © по полной, так что процыку копирование не грозит. Юзеа в кайфе - почти та же самая ОСька. Через сopy/paste любимые приложение портировать не удастся - но идеология и тактика те же самые, что и на "соседнем" проце - переучиваться не надо. Опять же, здоровая конкуренция - пусть и с некоторыми оговорками, но у "правильного" проца больше шансов победить, чем у "неправильного".

 

Изучивший ядро хоть немного открывает свою школу, и начинает делать всякие "бесплатные сборки Linux для всех архитектур по подписке за 5k$/человека в год" (Timesys).

 

Есть процесесс "полного экстаза" - это когда сделавший свой проц идет к гуру по Linux, тот на основании своего опыта делает очень хороший порт, и наступает полный каф для всех. FreeScale для ColdFire BSP заказывала у профессиональных линуксоводов - и они у нее очень достойного качества.

 

Есть еще куча мелких производных вариантов от всего выше сказанного.

 

А еще есть мы. Лишние 5k$ лично мне как-то не жмут карман, уходить в Linux монастырь на пару лет и добиваться там полного просветления тоже не прельщяет, но Linux нужон.

 

Возникает старая как мир идея "гибридной микросхемы". Делаем "мамку" с периферийным процом и всей необходимой периферией. И на нее "одеваем" Linux ядро. От которого, как правило, нужно три вещи:

 

* консоль для управления

* UART для подключения сотика

* Ethernet

* удобный канал связи с сопроцессором со скоростью (для моих применений) 1Мбайт/сек+

 

Ну и, разумеется, необходимы:

 

* качественные дрова для Linux под всю нужную периферию

* проверенный toolchain

* GDB stub - чтобы можно было дебажить приложение на целевой платформе прямо с пЫсюка без BDI200 (http://www.abatron.ch) за 5k$.

* какая-никакая дока - как "взететь вместе со всем этим".

 

"И где же его брать-то!" спрашивают нетерпеиливые читатели. Сие и есть главный вопрос этой "воскресной проповеди".

 

Прежде всего, определимся с классом спрашивающего. If 5k$ могут быт заложены в бюджет проекта - это и надо делать, не раздумывая. Выбирать профессиональный дистрибутив лялиха, и радоваться жизни. Все остальные пытаются "словчить".

 

Профессиональные Linux гуру (выступающие самостоятельно) в качестве источника дистрибутивов отметаются сразу и решительно. Ибо если при прочтении описания на бесплатный дистрибутив Вам показалось, что все есть - Вы имеете дело с истинными профессионалами. Которые умеют программировать Ваше поведение на годы вперед. И знают, что не надо Вас пугать сразу. Надо, чтобы Вы увязли, и когда назад пути не будет, обнаружили - что чего-то Вам по зарез не хватает. Как раз того, что есть в PRO версии. За 5k$. Что такое 5k$ по сравнению с пролетом проекта? Если Вы готовы пожертвовать своим проектом - и Бог с Вами. Иначе - заплатите, никуда не денетесь :)

 

Если гуру нанят производителем чипов - вариант допустим, но:

* может быть дистрибутив, заточенный только под какую-то конкретную плату. В которую, например, впаян дорогой и экзотический FLASH от этого же производителя чипов. И версия Uboot, входящая в дистрибутив, загадочным образом умеет бутиться только с этой флешки, равно как и дрова для FS Linux тоже только для нее :). Вариант - экзотический PHY Ethernet и пр.

* набор дров может быть сильно урезанным

* дрова на "расширенную" периферию (SPI, I2C,) могу быть сомнительного качества (без DMA и т.д.)

 

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

 

Неплохой вариат - Linux от производителя плат. Но тут вот какая штука. Если плата на распространенном проце, и ее легко скопировать - едва ли производитель платы будет серьезно вкладываться в Linux. Если плату скопировать трудно (BGA 0.5 и прочие ужосы) - у производителя неплохой шанс иметь источник гарантированного дохода, и он может ивестировать денег в Linux.

 

Самый тонкий вопрос во всем перечисленном - широкий канал для периферийного проца. USB сейчас есть везде, Linux дрова для FTDI в составе ядра, но USB - глючная штука... Хочется чего-то простого и понятного - SPI мегабит на 15-20, параллельного порта EPP, на худой конец (кстати, грамотный интерфейс, черт побери!).

 

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

 

Группа производителей уникальных чипов.

 

* http://www.axis.com/products/dev/product_list.htm

Своя архитектура проца. Все супер! Внешний интерефейс в виде EPP есть. Но!

 

-- ETRAX 100LX - 0 - 70 °C. А так при цене около 20Eu в розницу просто лучший кандидат.

 

-- ETRAX FS - -40 - 85 °C, но шифрование: NOTE: This product is classified as a dual-use product according to Regulation (EC) No. 1334/2000 and is subject to export control if exported from the European Union, United States of America, Australia, Japan, Canada, New Zealand, Norway and Switzerland.

 

* ColdFire от http://www.freescale.com

 

Есть хорошие старые процы MCF548x (-40 - 85 °C, шифрование забанено), на которые и платы есть по $350 с Linux, и дистрибут вполне качественный имеется. SPI быстрый (хотя дрова там вроде как для char устройства...), CAN - под все есть дрова. Проц быстрый, с float. Самое главное, там есть PCI, с дровами под Linux - так что при некоторых затратах можно любой канал связи с периферийным процом организовать. Сами процы доступны баксов по 35. BGA 1.27 - сказка по нынешним временам :)

 

MCF5445x - новое поколение. Большой выбор, изначально позиционируются как Linux. Только выходят, на digikey уже есть в прайсе, но нет на складе. Цены на камни хорошие, но вот eval борда стоит 1k$ :)

 

* MIPS камни от http://www.razamicroelectronics.com/products_alchemy - в девичестве AMD

http://www.linux-mips.org/wiki/Alchemy - поддерживаемый MIPS'ом порт Linux

 

Делатели плат

* http://www.mechatronicbrick.dk

* http://www.netcore.ru - наши!

* http://www.alchemydevices.ru/FamilyEmbeddedPlatform.htm - наши!

 

MIPS хорош тем, что сейчас он живет в основном в мире сетевых устройств. Linux там в почете - дистрибутив линуха вылизали очень нехило. Но непонятно, как там с SPI и прочими интерфейсами во "внешний мир".

 

* PowerPC от http://www.freescale.com. Тоже все хорошо, и чипы есть замечательные типа MPC5200CVR400B (можно за $25 взять), но все-таки дорогая архитектура, и все под нее дорого стоит.

 

Группа производителей плат.

 

http://glomationinc.com - дешевые платы на многих архитектурах

 

http://www.embeddedarm.com/products/arm-matrix.php - много плат на Cirrus ARM920, стали появляться на Marvell 500MHz ARM9 проце - PCI, FPGA и все такое. Фирма существует очень давно, софт они точно отлизали. Вроде как полноценной защиты от копирования там не стоит, но на Cirrus платках они ставят CPLD, которая автоматически переключает прием/передачу для RS-485, ну и вероятно еще что-нибудь - чтобы совсем на халяву не копировалось. Исходников CPLD не дают - я запрашивал :).

 

http://www.gumstix.com/products.html - очень известная фирма с низкими ценами, но там нет наплатного Ethernet.

 

Многочисленные платки на AT91RM9200 - на любителя. Оно, конечно, работает, но качество всего ARM от Atmel лично у меня вызывает сомнения... Чего только баги UART стоят.

 

http://caxapa.ru/120711.html - некоторый список плат.

 

Есть и еще одна приятная особенность в варианте dream board. Энергопотребление. Воть почему меня так ATxmega заинтересовала :)

http://caxapa.ru/120479.html

http://electronix.ru/forum/index.php?showtopic=47949

 

Пусть у нас есть некая специализированная охранная система. В покое она спит, общаясь по радиоканалу с кучкой датчиков. Которые живут 1+ год от CR123. Если происходит событие - то параллельно запускается куча процессов:

 

* заводится сотик

* по SMS отправляется уведомление

* подается питание на Linux плату, она стартует

* заводится FPGA на dream board, и в SDRAM начинают писаться фотографии от TV декодера без всякой обработки

* после старта Linux сотик переключается на него, Linux софтина начинает коннектиться ко всяким аццким серверам

* по каналу связи Linux <-> Slave CPU начинают "отсасываться" накопленные фотографии

* фотографии сжимаются, обрабатываются, пишутся, например, на USB FLASH носитель

* После завершения активных процессов в Linux части питание с Linux снова снимается

* система засыпает до следующего раза.

 

Как можно понять, при такой идеологии, реально построить систему, которая на аккумуляторе

http://www.rigel.ru/rigel/akk/l_i.html 10А*Ч

проживет полгода (если фотки не слишком часто отсылать). 10 А*Ч* 3.6В = 36Вт*Ч энергии. Пусть у нас в пике активности система потребляет 5Вт, и этот пик длится 3 минуты. И события такие происходят раз в сутки. Среднее потребление от Linux части - ((1/20)/24)*5= 10 мвт. (36/(((1/20)/24)*5))/24 = 144 дня работы от аккумулятора. Добавляем еще один аккум на компенсацию саморазряда и потребления энергии ATxmega при работе с радиочастью - и получаем полгода автономности. Вы хотите такое иметь на даче? :)

 

Заметим, что всем остальным чипам будет трудно противостоять ATxmega :)

* MSP430 - нет внешней шины, FPGA управлять нуднее

* STM32 - по потреблению в режиме сна, по скорости просыпания - пролет

 

ВОПРОСЫ:

 

1. Кто-нибудь на доступных платах и дистрибутивах Линуха пробовал организовать канал связи с внешним миром из user space с пропускной способностью 1мбайт/сек+ при помощи Linux дров с DMA или каким другим продвинутым способом?

 

2. Критика поего подхода к выбору дистрибутива Linux.

 

3. Пополнение моей классификации другими пунктами

 

4. Пополнение классификации известными платами и дистрибутивами.

Share this post


Link to post
Share on other sites

1,3,4. avr32 на ngw100

2. делать лучше самому - жалко памяти на универсальные монстры

Share this post


Link to post
Share on other sites
Вы и здесь рекламируете ATxmega. Не надо.
Мне для объекта ATxmega доступен только один метод: купить. :) так что рекламировать, что же я буду (или не буду) покупать - не в моих интересах.

 

В моих (вероятно, не только) интересах осознать, что такое ATxmega со всех сторон. Этим и занимаюсь.

1,3,4. avr32 на ngw100

2. делать лучше самому - жалко памяти на универсальные монстры

А по какому интерфейсу удалось организовать быстрый канал общения с внешним - Ethernet? В общем, неплохо, но несколько громоздко для связи с периферийным сопроцессором.

 

Собирать свой дистрибутив - много чего курить надо. Я пока так не могу :)

Share this post


Link to post
Share on other sites
1,3,4. avr32 на ngw100
Linux для AVR32 вполне подходит под мои критерии выбора дистрибутива - вопрос втом, хватит ли Atmel сил и $ поднять этот [AVR32] проект.
Есть еще решения от TI - вот, например, девайс прикольный на omap3530 : http://openpandora.org/
Нечто нетривиальное! Довольно большое по габаритам, но моща процессоров...

Share this post


Link to post
Share on other sites

А че там поднимать - см. http://avr32linux.org, там от образов sd карт до исходников все давно уже поднято, главное последний git от atmel использовать ;) Еще бы xenomai портировать, и как бы все ...

Share this post


Link to post
Share on other sites
А че там поднимать - см. http://avr32linux.org, там от образов sd карт до исходников все давно уже поднято, главное последний git от atmel использовать ;) Еще бы xenomai портировать, и как бы все ...
В случае xenomai нарушится баланс сил в природе - все остальные линухи резко станут неинтересны :)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this