ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
18 мая
120989
Evgeny_CD, Архитектор (25.05.2008 16:33, просмотров: 62696)
Серьезный вопрос по 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 (некачественно портировавший идет лесом), пишет хорошую доку, и раздает софтовую часть этого проекта открыто и бесплатно, будучи полностью заинтересованным в конечном результате - процык то его, и защищен (C) по полной, так что процыку копирование не грозит. Юзеа в кайфе - почти та же самая ОСька. Через с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.co …s/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.razamic …s.com/products_alchemy - в девичестве AMD http://www.linux-mips.org/wiki/Alchemy - поддерживаемый MIPS'ом порт Linux Делатели плат * http://www.mechatronicbrick.dk * http://www.netcore.ru - наши! * http://www.alchemy …lyEmbeddedPlatform.htm - наши! MIPS хорош тем, что сейчас он живет в основном в мире сетевых устройств. Linux там в почете - дистрибутив линуха вылизали очень нехило. Но непонятно, как там с SPI и прочими интерфейсами во "внешний мир". * PowerPC от http://www.freescale.com. Тоже все хорошо, и чипы есть замечательные типа MPC5200CVR400B (можно за $25 взять), но все-таки дорогая архитектура, и все под нее дорого стоит. Группа производителей плат. http://glomationinc.com - дешевые платы на многих архитектурах http://www.embedde …roducts/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. …ex.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. Пополнение классификации известными платами и дистрибутивами.