Подтвердить что ты не робот

Windows CE vs Embedded Linux

Теперь я уверен, что мы хорошо знаем об относительных достоинствах Linux и Windows Desktop. Однако я слышал гораздо меньше о мире встроенного развития. Меня в основном интересуют решения для индустрии, поэтому я не заинтересован в IPhone или Android и больше заинтересован в этих двух ОС.

Каковы относительные компромиссы между двумя платформами во встроенном мире? Если вы планировали создать ящик для конкретного проекта с настраиваемым оборудованием, частично настроенную ОС и пользовательское приложение, то вы бы выбрали и почему?

Я бы предположил, что Windows CE выигрывает на инструментах и ​​выигрывает Linux как по стоимости, так и по производительности. Однако это всего лишь полная спекуляция. Есть ли у кого-нибудь факты или опыт этих двух?

4b9b3361

Ответ 1

Я работал несколько лет в компании, которая предоставляла как CE, так и Linux для всего своего оборудования, поэтому я довольно хорошо знаком с обеими сторонами этого уравнения.

  • Инструменты: Инструменты Windows CE, безусловно, лучше, чем Linux, хотя инструменты linux, безусловно, улучшаются.
  • Производительность: Windows CE в режиме реального времени. Linux нет. Ядро Linux не предназначено для детерминизма вообще. Есть расширения, которые вы можете добавить, чтобы получить сортировку в реальном времени, но CE бьет его.
  • Стоимость: Это область большого недоразумения. Мой общий опыт в том, что CE является более дешевым из коробки ($ 1 тыс. Для Platform Builder и всего лишь 3 доллара США за устройство за время выполнения доставки. "Что?" Спросите вы? "Linux свободен". Ну, не так уж и много, особенно на встроенной арене.Да, есть бесплатные дистрибутивы, такие как Debian.Но есть множество штук, которые вам могут понадобиться, которых нет в этой бесплатной категории. Рамочные интерфейсы пользовательского интерфейса, такие как QT, Java, и медиакодеки. Кроме того, большинство дистрибутивов Linux со встроенной системой поддержки (например, MontaVista) далеки от бесплатных.
  • Доступность источника: Сторонники Linux могут сказать, что CE - плохой выбор из-за отсутствия исходного кода. Все, что я могу сказать, заключается в том, что за более чем десятилетний опыт работы с CE, половина из которых потратила на выполнение пользовательских ядро ​​и драйверов для пользовательских плат, мне только когда-либо понадобился источник, который не поставлялся с CE (они поставляют огромные большинство из них) один раз. Мне тоже нравится источник, но Microsoft предоставляет поддержку, поэтому в редком случае вы можете подумать, что вам нужен этот источник, вы можете заставить их исправить проблему (в тот момент, когда нам нужен источник, Microsoft предоставила исправление и бесплатно - является их моделью под CE.

Означает ли это, что CE выигрывает каждый раз? Нет. Я бы не предложил этого вообще. Если вы магазин Linux, и у вас много опыта работы с Linux и кодовых активов, вам было бы глупо заканчиваться и идти CE. Однако, если вы входите в него с нуля, CE обычно имеет более низкую совокупную стоимость владения. Разработчики с опытом Win32/С# более распространены и, следовательно, менее дороги. Вы также получаете намного больше "в коробке" с CE, чем большинство других дистрибутивов, что означает более быстрое время выхода на рынок, если вы еще не сделали эти вещи уже на месте.

Ответ 2

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

Windows CE (и связанные с ним инструменты) IMH довольно недавно E) сильно привязан к созданию "Windows Experience" на маленьком экране. Режим пользовательского ввода подчеркивает действия, подобные мыши. Логотипы, выбор приложений и т.д. Все стараются как можно ближе к стандартным Windows.

Если пользователь ведет автопогрузчик или заполняет сборную тележку или перемещает материал из одного места в другое, возникает проблема.

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

Хорошая стабильная строка-столбцы Linux-консоль - довольно удобный контекст для многих (по моему опыту) приложений с высоким уровнем использования на экране dinky.

Не очень хорошо для игр на вашем мобильном телефоне или в Zune.

Примечание:

Я думаю, что ctacke, вероятно, говорит точно для аппаратного интегратора. Я больше согласен с игроками в дальнейшем по трубам - программным интеграторам и пользователям.

Ответ 3

Выбор часто делается в основном на восприятии и культуре, а не на конкретных данных. И сделать выбор, основанный на конкретных данных, сложно, если учесть сложность современной ОС, все проблемы, связанные с переносом ее на пользовательское оборудование, и неизвестные будущие требования. Даже с точки зрения приложения, вещи меняются в течение всего жизненного цикла проекта. Требования приходят и уходят. Вы считаете, что делаете то, что никогда не думали о вас, особенно если это возможно. Вездесущие порты USB и сети открывают множество возможностей - например, добавление поддержки сотового модема или поддержки принтера. Хранилище на основе флэш-памяти позволяет обновлять программное обеспечение в полевых условиях в стандартном режиме работы. И, в конце концов, каждое решение имеет свои сильные и слабые стороны - во всех случаях нет лучшей магической пули.

При рассмотрении разработки встроенного Linux я часто использую аналогию айсберга; то, что вы видите в проекте, является частью воды. Это те части, с которыми ваше приложение взаимодействует, драйверы, которые вам нужно настроить, ту часть, которую вы понимаете. Остальные 90% находятся под водой, и здесь кроется большая изменчивость. Проблемы с качеством с драйверами или невозможность найти драйвер для чего-то, что вы, возможно, захотите поддержать в будущем, могут легко залить известные части проекта. Очень мало людей, которые имеют большой опыт работы с решениями WinCE и Linux, следовательно, склонны идти с тем, что удобно (или с тем, что им удобно) или с тем, с чем мы имеем опыт. Ниже мы рассмотрим несколько аспектов:

РАЗРАБОТКА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ СИСТЕМЫ

Вопросы в этой области включают поддержку ЦП, качество драйвера, обновления программного обеспечения на местах, поддержку файловой системы, доступность драйверов и т.д. Одним из изменений, которые произошли за последние два года, являются поставщики процессоров, теперь переносят Linux на новый как первая ОС. Ранее, портирование ОС обычно выполнялось компаниями программного обеспечения Linux, такими как MontaVista, или усилиями сообщества. В результате ядро ​​Linux теперь поддерживает большинство встроенных встроенных процессоров с несколькими дополнительными исправлениями. Это радикально отличается от ситуации 5 лет назад. Поскольку многие люди используют один и тот же исходный код, проблемы исправляются и часто возвращаются к основному источнику. С WinCE поддержка BSP/драйверов имеет тенденцию быть скорее эталонной реализацией, а затем OEM/пользователи берут ее, исправляют любые проблемы, и именно там исправления, как правило, остаются.

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

Большинство людей мало думают о системе сборки или никогда не задумываются над тем, что "если у инструмента есть приятный gui, это должно быть легко". OpenEmbedded - очень популярный способ создания встроенных продуктов Linux и недавно был одобрен как технологическая база продукта MontaVista Linux 6 и обычно считается "трудным в использовании" для новых пользователей. Хотя инструменты сборки WinCE выглядят проще на поверхности (на 10% выше уровня воды), у вас все еще есть проблема, что происходит, когда мне нужно что-то настраивать, внедрять сложные функции, такие как обновления программного обеспечения и т.д. Чтобы построить производственную систему с производственной оценкой вам по-прежнему нужен кто-то из вашей команды, который понимает ОС и может работать на уровне деталя как операционной системы, так и системы сборки. С WinCE или Embedded Linux это обычно означает, что компании должны либо иметь опытных разработчиков в доме, либо нанимать экспертов для частичной разработки системного программного обеспечения. Разработка системного программного обеспечения не такая же, как разработка приложений, и, как правило, это не то, что вы хотите использовать без опыта, если у вас не так много времени. Компании довольно часто нанимают экспертную помощь для проектов первой пары, а затем выполняют последующие проекты на дому. Еще одна особенность, которую следует рассмотреть, - поддержка параллельного построения. С четырьмя основными рабочими станциями, становящимися стандартными, очень важно, что полная сборка может быть выполнена за 1,2 часа против 8? Насколько гибкой является система сборки при вытягивании и создании исходного кода из различных источников, таких как различные системы контроля версий и т.д.

Встроенные процессоры становятся все более сложными. Это уже не достаточно, чтобы просто запустить процессор. Если вы считаете, что семейство OMAP3 cpu из TI, то вы должны задать следующие вопросы: существуют ли библиотеки для механизма 3D-ускорения, и могу ли я даже получить их, не совершая миллионы единиц в год? Есть ли поддержка для DSP-моста? Какова стоимость всего этого? В недавнем проекте, в котором я участвовал, базовый WinCE BSP для Atmel AT91SAM9260 стоит 7000 долларов. Что касается времени разработчиков, это немного, но вам также нужно учитывать текущие затраты на обслуживание, обновление до новых версий операционной системы и т.д.

РАЗРАБОТКА ПРИЛОЖЕНИЙ

Оба встроенных Linux и WinCE поддерживают ряд библиотек приложений и языков программирования. C и С++ хорошо поддерживаются. Большинство приложений бизнес-типа переходят на С# в мире WinCE. Linux имеет Mono, который обеспечивает широкую поддержку технологий .NET и отлично работает во встроенных системах Linux. Для Embedded Linux существует множество сред разработки Java. Одна из областей, где вы сталкиваетесь с различиями, - это графические библиотеки. Как правило, графические API-интерфейсы Microsoft не очень хорошо поддерживаются в Linux, поэтому, если у вас есть большая команда приложений, которые умеют программировать графические интерфейсы Windows, возможно, WinCE имеет смысл. Тем не менее, есть много вариантов инструментальных средств GUI, которые работают как на ПК с ОС Windows, так и на устройствах Embedded Linux. Некоторые примеры включают GTK +, Qt, wxWidgets и т.д. Gimp - пример приложения GTK +, которое работает в окнах, плюс множество других. Это привязки С# к GTK + и Qt. Еще одна особенность, которая, похоже, сильная в пространстве WinCE, - это Windows Communication Foundation (WCF). Но опять же, есть проекты, которые приносят WCF в Mono, в зависимости от того, какие вам нужны. Встроенная поддержка Linux для языков сценариев, таких как Python, очень хороша, и Python очень хорошо работает на процессорах ARM на 200 МГц.

Часто возникает ощущение, что WinCE - это в реальном времени, а Linux - нет. Поддержка Linux в реальном времени достойна в ядрах акций с опцией PREEMPT, а поддержка в режиме реального времени превосходна благодаря добавлению относительно небольшого патча реального времени. Вы можете легко достичь субмиллисекундного времени с помощью Linux. Это изменилось за последние пару лет с объединением функциональных возможностей реального времени в ядро ​​запаса.

РАЗВИТИЕ ПОТОКА

В продуктивной среде большинство современных встроенных приложений разрабатываются и отлаживаются на ПК, а не на целевом оборудовании. Даже в настройках, где удаленная отладка на целевой системе работает хорошо, отладка приложения на рабочей станции работает лучше. Таким образом, тот факт, что одно решение имеет приятную отладочную атаку, когда другое не работает, не очень актуально. Для систем, ориентированных на данные, обычно существуют режимы моделирования, в которых приложение может быть протестировано без подключения к реальному вводу/выводу. С приложениями Linux и WinCE прикладная программа для встроенного устройства аналогична программированию для ПК. Встроенный Linux делает это еще дальше. Поскольку встроенная технология Linux такая же, как у настольных и серверных Linux-технологий, почти все, что разработано для настольных компьютеров и серверов (включая системное программное обеспечение), доступно для встроенных. Это означает, что очень полная поддержка драйверов (см. Примеры USB-модем и примеры принтеров выше), надежная поддержка файловой системы, управление памятью и т.д. Широкий выбор возможностей для Linux поражает, но некоторые могут считать это негативным моментом и предпочли бы более интегрированное решение, такое как Windows CE, где все происходит с одного места. Существует потеря гибкости, но в некоторых случаях компромисс может стоить того. Пример количества пакетов, которые могут быть созданы для систем Embedded Linux с использованием Openembedded, см. В разделе.

ТЕНДЕНЦИИ GUI

Важно учитывать тенденции для встроенных устройств с небольшими дисплеями, которые управляются сотовыми телефонами (iPhone, Palm Pre и т.д.). Стандартные виджеты GUI, которые являются общими для настольных систем (диалоговые окна, флажки, выпадающие списки и т.д.), Не сокращают его для современных встроенных систем. Таким образом, будет важно рассмотреть возможность поддержки 3D-эффектов и библиотек виджетов, предназначенных для использования устройствами сенсорного экрана. Библиотека Clutter является примером такого типа поддержки.

ДИСТАНЦИОННАЯ ПОДДЕРЖКА

Возвращаясь к вопросу об инструментах отладки, большинство людей останавливается в сценарии, где устройство устанавливается рядом с рабочей станцией в лаборатории. Но как насчет того, когда вам нужно устранить неисправность устройства, которое проходит бета-тестирование на полпути по всему миру? Именно поэтому отладчик командной строки, такой как Gdb, является преимуществом, а не недостатком. И как вы подключаетесь к устройству, если у вас нет поддержки сотовых модемов в Новой Зеландии или эффективный механизм соединения, такой как ssh для доступа к оболочке и передачи файлов?

СУЩНОСТЬ

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

Ответ 4

Я работал в проектах, связанных с настройкой программного обеспечения платы OEM, и я бы не сказал, что Linux дешевле. При покупке платы вам также необходимо купить SDK. Вам все равно придется платить даже за версию Linux. Некоторые производители предлагают решения для Windows CE и Linux для своих плат, и нет разницы в цене. Для Windows CE вам также нужен Platform Builder и оплачивать лицензии, но проще обойтись без поддержки.

Еще одна важная проблема заключается в том, что вы создаете пользовательский интерфейс или устройство без головы. Для устройств, которым требуется ЖК-экран и взаимодействие с человеком, гораздо проще работать с Windows CE. Если, с другой стороны, вы создаете безголовое устройство, Linux может быть лучшим вариантом - особенно если задействованы сетевые протоколы. Я считаю, что реализации Linux более надежны и легче настраиваются.

Ответ 5

В Linux вы никогда не используете, и вы никогда не зависите от одного единственного объекта для предоставления разрешений. Существует множество вариантов поддержки, и у вас есть свобода выбора вариантов поддержки для любой части системы через многие конкурирующие источники.

В Windows CE вы должны соблюдать лицензию и ограничения, изложенные в сложных лицензионных соглашениях, которые должны быть согласованы. Нанять адвоката. С Windows CE у вас есть только один запатентованный источник поддержки ОС, и вы будете действовать только по своему усмотрению, чтобы поддерживать и предоставлять то, что вам нужно. Вы можете не согласиться с их положением, но не будете прибегать к помощи, но должны сгибать то, что они предписывают. Расходы на дополнительные компоненты, модули, комплекты разработки, лицензирование и поддержку, как правило, накапливаются на собственных платформах. В долгосрочной перспективе, что произойдет, когда поставщик больше не хочет поддерживать платформу, и у вас нет прав на ее поддержку и распространение? Что происходит, когда поставщик переходит к более новой технологии и хочет, чтобы вы двигались вместе с ними, хотя вы, возможно, не готовы к этому движению? $$$

Наш опыт работы с решениями Windows в целом заключается в том, что они со временем становятся более дорогими. Первоначально считалось, что наименьшая TCO быстро тяготеет к решению и решению, которое обременено и дорогостоящим для поддержки и поддержки. Лицензии должны быть пересмотрены с течением времени, и новые технологии, часто ненужные, вынуждаются к картине по прихоти поставщика ради их деловых потребностей. Кроме того, лицензионные соглашения НЕПРЕРЫВНО меняются - получайте адвоката.

В Linux у вас есть свобода предоставить внутреннюю поддержку и опыт, не обременяя вас распространением решения по мере необходимости. У вас также есть свобода продолжать использовать и поддерживать технологии, которые первоначальные поставщики больше не хотят поддерживать. Имея исходный код и ПРАВИЛА, чтобы сделать с ним то, что вы хотите (GPL, LGPL), является мощным аттрактором, когда дело доходит до непрерывности бизнеса и содержит затраты, обеспечивая при этом доступ к самым новейшим технологиям или технологиям, которые соответствуют вашим потребностям.

Ответ 6

Я разработал сетевые драйверы, которые работают как на RT Linux (точнее, на Linux упреждающем ядре с RT patch), так и на Windows CE. Мой опыт заключался в том, что Windows CE была более стабильной с точки зрения реакции в реальном времени. Кадровые тайминги также показали, что у окон CE меньше джиттера.

В RT Linux у нас были всевозможные проблемы. Например, когда пользователь переместил мышь; наши рамки были отложены. Угадайте, что, некоторые варианты x-windows отключают прерывания. Вы также можете почувствовать, что вы более безопасны только на экране консоли. Если у вас есть буферы кадров VGA, вы снова обречены. У нас была только одна проблема с Windows CE с точки зрения дрожания снова. Проблема возникла, когда контроллер USB был настроен на неправильный режим в BIOS, и Windows CE использовала много времени для опроса.

Честно говоря, Windows CE получила большую поддержку. В Linux вы сами по себе. Вы должны прочитать все возможные списки рассылки, чтобы понять, какие проблемы могут возникнуть.

Ответ 7

частично настраиваемая ОС

Намного легче достичь, если ОС является открытым исходным кодом (и у вас есть опыт).

Ответ 8

Android - хороший вариант для некоторых встроенных систем. (он основан на Linux)

  • У вас есть много экспертов, которые могут развиваться в этой системе.

  • У вас есть доступ ко многим библиотекам в java или C.

но он использует много памяти и энергии.

То, что мы часто забываем с платным/лицензированным программным обеспечением, заключается в том, что вам приходится иметь дело с лицензиями. Это требует времени и энергии! Затем вам нужно отслеживать, правильно ли вы платите. Он включает в себя много разных людей с разными навыками, и это стоит в решении.

Эта стоимость часто не включается в исследования, которые показывают, что open-source/free дороже, чем платное программное обеспечение.

С помощью "бесплатного программного обеспечения" проще справляться с лицензиями, и вы тратите меньше времени на решение этих проблем. Лично я предпочитаю избегать ненужных сообщений с вашей юридической/финансовой командой каждый раз, когда вы меняете некоторые части программного обеспечения.