2008-11-28 31 views
32

Ahora estoy seguro de que todos somos conscientes de los méritos relativos de Linux frente a Windows Desktop. Sin embargo, he oído mucho menos sobre el mundo del desarrollo integrado. Me interesan principalmente las soluciones para la industria y, por lo tanto, no me interesan el iPhone o Android y estoy más interesado en estos dos sistemas operativos.Windows CE vs Embedded Linux

¿Cuáles son las ventajas y desventajas relativas entre las dos plataformas en el mundo integrado? Si estaba considerando construir una caja para un proyecto específico con hardware personalizado, un sistema operativo parcialmente personalizado y una aplicación personalizada, ¿cuál elegiría y por qué?

Supongo que Windows CE gana en herramientas y Linux gana en costo y posiblemente en rendimiento. Sin embargo, esto es solo una especulación total. ¿Alguien tiene algún hecho o experiencia de los dos?

+1

Es posible que desee especificar más detalles sobre el tipo de hardware y el propósito, ya que harán una diferencia. Probablemente encontrará que Linux se ejecutará en una amplia gama de hardware, el soporte en tiempo real es diferente entre los dos, etc ... – carson

+1

bien no se puede hablar de Linux. pero: si eres un "desarrollador serio", entonces tal vez winCE es una buena idea. si eres un "niño solitario" con un interés en el desarrollo integrado, es posible que gane algo parecido a un jardín cerrado con paredes altas, con un conocimiento compartido limitado y gratuito. – n611x007

Respuesta

46

Trabajé durante varios años en una empresa que proporcionaba CE y Linux para todo su hardware, así que estoy bastante familiarizado con ambos lados de esta ecuación.

  • Herramientas: herramientas de Windows CE sin duda son mejores que los proporcionados por Linux, aunque las herramientas de Linux son sin duda cada vez mejores.
  • Rendimiento: Windows CE es en tiempo real. Linux no es. El kernel de Linux no está diseñado para el determinismo en absoluto. Hay extensiones que puede agregar para obtener una especie de tiempo real, pero CE lo supera.
  • Costo: Esta es un área de gran incomprensión. Mi experiencia general es que CE tiene un costo más bajo desde el primer momento ($ 1k para Platform Builder y tan solo $ 3 por dispositivo para un tiempo de ejecución de envío. "¿Qué?" Usted pregunta? "Linux es gratis." Bueno, no tanto , especialmente en el campo incrustado Sí, hay distribuciones gratuitas como Debian, pero hay muchas piezas que puede necesitar que no estén en esa categoría gratuita. Los marcos de interfaz de usuario como QT, tiempos de ejecución de Java y códecs de medios son solo un comienzo. Además, la mayoría de las distribuciones de Linux con un sistema de soporte respaldado comercialmente (por ejemplo, MontaVista) están lejos de ser gratuitas.
  • Fuente Disponibilidad: Los desarrolladores de Linux pueden querer decir que CE es una mala elección debido a la falta de código fuente. Puedo decir que en más de una década de trabajo con CE, la mitad de los cuales pasé haciendo kernel personalizado y trabajo de controlador para tableros personalizados, solo he tenido la necesidad de una fuente que no incluyera CE (sh ip una gran mayoría de ella) una vez. También me gusta tener una fuente, pero Microsoft brinda soporte, por lo que en el caso poco probable de que pienses que necesitas esa fuente, puedes hacer que solucionen el problema (la única vez que necesitábamos una fuente, Microsoft proporcionó una solución y de forma gratuita, es su modelo bajo CE.

¿Esto significa que CE gana cada vez? No. No lo recomendaría en absoluto. Si usted es una tienda Linux y tiene mucha experiencia en Linux y recursos de código, Sería una tontería agotar e ir CE. Sin embargo, si usted está entrando desde cero CE generalmente tiene un TCO menor. Los desarrolladores con experiencia Win32/C# son más frecuentes y, por consiguiente, menos costoso. También obtiene mucho más ". en la casilla "con CE" que la mayoría de las otras distribuciones, lo que significa un tiempo de comercialización más rápido si aún no lo ha hecho ya en casa.

+2

Mayormente de acuerdo. Algunos comentarios: 1. De acuerdo con el documento de Microsoft, el precio de WinCE puede aumentar hasta 16 $ por dispositivo, depende de qué componentes elijas incluir. http://msdn.microsoft.com/en-us/windowsembedded/ce/dd630617.aspx 2. No encontré Java run-time para WinCE. Entonces, el costo adicional de la licencia para Linux no es relevante. – landmn

+3

QT es gratis hoy en día, al menos si su licencia es compatible con LGPL. – wvdschel

+2

Y mi experiencia personal es que cualquiera que dice que el TCO de Linux es más alto que Windows TCO es un empleado de Microsoft o un certificado de Microsoft, y que no ha usado/considerado seriamente Linux alguna vez en su vida. Debian también tiene un repositorio multimedia gratuito, y MS tiene que pagar tarifas de licencia por todas esas cosas adicionales, además, puede redistribuir el Entorno de ejecución J2SE de forma gratuita con su aplicación, de acuerdo con los términos de la licencia de Runtime Environment. Además, siempre hay wxWidgets si no te gusta la licencia QT. Y las herramientas de Linux son mucho más poderosas de todos modos –

5

un sistema operativo personalizado parcialmente

es mucho más fácil de conseguir si el sistema operativo es de código abierto (y usted tiene la experiencia).

+2

CE se envía con suficiente fuente (algo así como 95% comprobado por última vez) para modificar o reemplazar casi cualquier cosa que desee. – ctacke

+0

ctacke: Eso es interesante, ¿cómo se modifican las modificaciones? –

+4

Creo que se llama Licencia Microsoft Permissinve (http://en.wikipedia.org/wiki/Shared_source#Microsoft_Public_License_.28Ms-PL.29). Básicamente puede hacer y usar modificaciones como mejor le parezca sin proporcionar esos cambios a nadie y usar la derivada en un proyecto comercial si le gusta – ctacke

13

He trabajado en proyectos que implican la personalización del software de una placa OEM y no diría que Linux es más barato. Al comprar una placa, también debe comprar el SDK.Aún necesita pagar incluso por la versión de Linux. Algunos fabricantes ofrecen soluciones Windows CE y Linux para sus placas y no hay diferencia de precio. Para Windows CE también necesita Platform Builder y pagar las licencias, pero es más fácil ir sin soporte.

Otro problema importante es si está construyendo una interfaz de usuario o un dispositivo sin cabeza. Para los dispositivos que requieren una pantalla LCD y la interacción humana es mucho más fácil ir con Windows CE. Si, por otro lado, está construyendo un dispositivo sin cabeza, Linux puede ser una opción más sólida, especialmente si se trata de protocolos de red. Creo que las implementaciones de Linux son más confiables y fáciles de modificar.

+0

> "Al comprar un tablero también necesita comprar el SDK" ¿En serio? ¿Por qué no acaba de configurar un kernel/DT adecuado? Nunca he comprado ningún "SDK" para Linux, y no veo por qué debería hacerlo. El kernel/DT es específico de la placa de todos modos, así que, a menos que tenga una placa estándar, tendrá que personalizarlo de todos modos. –

26

Hablaré por el lado de Linux, al menos para la categoría de software con la que estoy familiarizado (que es el equipo de recopilación de datos de RF). O aplicaciones industriales frente a aplicaciones para consumidores.

Windows CE (y sus herramientas asociadas) IMH bastante reciente E) está fuertemente predispuesto a crear una "Experiencia de Windows" en una pantalla pequeña. El modo de entrada del usuario enfatiza las acciones similares a las del mouse. Los inicios de sesión, la selección de aplicaciones, etc. todos intentan ser lo más similar posible al Windows estándar.

Si un usuario conduce una carretilla elevadora, o llena un carro de picking, o mueve material de un lugar a otro, existe un problema.

Y es un objetivo en movimiento, especialmente en el lado de .NET. El tiempo de ejecución de .NET compacto es muy limitado, y las bibliotecas importantes (como las redes, el manejo de datos y la IU) están incompletas y las versiones a menudo dejan de lado la versión anterior. . CE parece ser el hijastro en la familia de Windows (posiblemente porque no hay mucha competencia activa vendiendo a los integradores de hardware).

Una agradable consola estable de filas y columnas Linux es un contexto bastante útil para muchos (en mi experiencia más) aplicaciones de alto uso en una pantalla pequeña.

Sin embargo, no es muy bueno para juegos en su teléfono celular o Zune.

NOTA:

Creo ctacke probablemente habla con precisión para el lado del integrador de hardware. Estoy más alineado con los jugadores que están más abajo: integradores de software y usuarios.

+4

Esa es una vista interesante y útil. He hecho sistemas CE para dispositivos sin cabeza y cabezales que no se parecen en nada a CE o Windows, pero tienes razón en que las aplicaciones de interfaz de usuario tienden a parecer "Windows-ish". Creo que eso se debe simplemente a que los desarrolladores usan controles comunes en lugar de personalizados. – ctacke

21

La elección se hace a menudo en gran medida en la percepción y la cultura, en lugar de datos concretos. Y, tomar una decisión basada en datos concretos es difícil si se tiene en cuenta la complejidad de un sistema operativo moderno, todos los problemas asociados con la migración al hardware personalizado y los requisitos futuros desconocidos. Incluso desde la perspectiva de una aplicación, las cosas cambian a lo largo de la vida de un proyecto. Los requisitos vienen y van. Te encuentras haciendo cosas que nunca pensaste que harías, especialmente si son posibles. Los omnipresentes puertos USB y de red abren muchas posibilidades, por ejemplo, agregando soporte para módems celulares o soporte para impresoras. El almacenamiento basado en Flash hace que el software en campo actualice el modo de operación estándar. Y al final, cada solución tiene sus fortalezas y debilidades: no hay una solución mágica que sea la mejor en todos los casos.

Al considerar el desarrollo de Embedded Linux, a menudo uso la analogía del iceberg; lo que ves al entrar en un proyecto es la parte sobre el agua. Estas son las piezas con las que interactúa tu aplicación, los controladores que necesitas personalizar, la parte que entiendes. El otro 90% está bajo el agua, y en esto radica una gran cantidad de variabilidad. Los problemas de calidad con los controladores o la imposibilidad de encontrar un controlador para algo que quizás desee admitir en el futuro puede dañar fácilmente las partes conocidas del proyecto. Hay muy pocas personas que tengan mucha experiencia con las soluciones de WinCE y Linux, de ahí la tendencia a aceptar lo que es cómodo (o con qué se sienten cómodos los gerentes), o con qué experiencia tenemos.A continuación se presentan ideas sobre una serie de aspectos a tener en cuenta:

software del sistema DESARROLLO

Las preguntas en este campo incluyen el soporte de la CPU, la calidad del conductor, en el campo de las actualizaciones de software, soporte de sistema de archivos, la disponibilidad de controladores, etc. Uno de Los cambios que han sucedido en los últimos dos años, son los proveedores de CPU que están portando Linux a sus nuevos chips como el primer sistema operativo. Antes, la migración del sistema operativo solía realizarla empresas de software de Linux como MontaVista o esfuerzos de la comunidad. Como resultado, el kernel de Linux ahora es compatible con la mayoría de las CPU incluidas con algunos parches adicionales. Esto es radicalmente diferente de la situación hace 5 años. Debido a que muchas personas usan el mismo código fuente, los problemas se solucionan y, a menudo, se vuelven a aportar a la fuente principal. Con WinCE, el soporte de BSP/controlador tiende a ser más una implementación de referencia, y luego los OEM/usuarios lo toman, arreglan cualquier problema, y ​​ahí es donde las soluciones tienden a permanecer.

Desde una perspectiva del sistema, es muy importante considerar la flexibilidad para las necesidades futuras. El hecho de que no sea un requisito ahora no significa que no será un requisito en el futuro. Obtener el soporte del controlador para un periférico puede ser casi imposible, o puede ser un esfuerzo demasiado grande para que sea práctico.

La mayoría de las personas piensa muy poco en el sistema de construcción, o nunca mira mucho más allá de la idea de que "si hay una buena gui alrededor de la herramienta, debe ser fácil". OpenEmbedded es una forma muy popular de crear productos Linux incorporados, y recientemente ha sido respaldado como la base tecnológica del producto Linux 6 de MontaVista, y los usuarios nuevos lo consideran "difícil de usar". Mientras que las herramientas de construcción de WinCE parecen más simples en la superficie (el 10% por encima del agua), todavía tiene el problema de lo que sucede cuando necesito personalizar algo, implementar funciones complejas como actualizaciones de software, etc. Para construir un sistema de producción con grado de producción características, todavía necesita que alguien en su equipo comprenda el sistema operativo y pueda trabajar en el nivel de detalle tanto del sistema operativo como del sistema de compilación. Con WinCE o Embedded Linux, esto generalmente significa que las empresas necesitan tener desarrolladores internos experimentados o contratar expertos para que realicen partes del desarrollo del software del sistema. El desarrollo del software del sistema no es lo mismo que el desarrollo de aplicaciones, y generalmente no es algo que desee realizar sin experiencia a menos que tenga mucho tiempo. Es bastante común que las empresas contraten la ayuda de expertos para los primeros proyectos en pareja, y luego realizan proyectos de seguimiento internamente. Otra característica a considerar es el soporte paralelo de compilación. Con las estaciones de trabajo de cuatro núcleos convirtiéndose en el estándar, ¿es una gran cosa que se pueda hacer una compilación completa en 1.2 horas frente a 8? Qué tan flexible es el sistema de compilación para extraer y generar código fuente de varias fuentes, como diversos sistemas de control de revisiones, etc.

Los procesadores integrados se están volviendo cada vez más complejos. Ya no es lo suficientemente bueno como para tener la CPU ejecutándose. Si considera la familia de CPU OMAP3 de TI, entonces debe hacer las siguientes preguntas: ¿hay bibliotecas disponibles para el motor de aceleración 3D e incluso puedo obtenerlas sin comprometer millones de unidades por año? ¿Hay soporte para el puente DSP? ¿Cuál es el costo de todo esto? En un proyecto reciente en el que participé, un BSP básico de WinCE para Atmel AT91SAM9260 cuesta $ 7000. En términos de tiempo de desarrollo, esto no es mucho, pero hay que tener en cuenta también los costes acumulables de mantenimiento, la actualización a nuevas versiones del sistema operativo, etc.

DESARROLLO DE APLICACIONES

Tanto Embedded Linux y WinCE admiten una variedad de bibliotecas de aplicaciones y lenguajes de programación. C y C++ tienen un buen soporte. La mayoría de las aplicaciones de tipo empresarial se están moviendo a C# en el mundo de WinCE. Linux tiene Mono, que proporciona una amplia compatibilidad con tecnologías .NET y funciona muy bien en sistemas Linux incorporados. Existen numerosos entornos de desarrollo Java disponibles para Embedded Linux. Un área donde te encuentras con las diferencias son las bibliotecas de gráficos.En general, las API gráficas de Microsoft no son bien compatibles con Linux, por lo que si tiene un equipo de aplicaciones grande que son programadores de GUI rígidos para Windows, entonces quizás tenga sentido WinCE. Sin embargo, hay muchas opciones para los kits de herramientas GUI que se ejecutan tanto en PC con Windows como en dispositivos Embedded Linux. Algunos ejemplos incluyen GTK +, Qt, wxWidgets, etc. The Gimp es un ejemplo de una aplicación GTK + que se ejecuta en Windows, además de que hay muchas otras. Los enlaces son C# para GTK + y Qt. Otra característica que parece venir fuerte en el espacio de WinCE es Windows Communication Foundation (WCF). Pero, de nuevo, hay proyectos para llevar WCF a Mono, dependiendo de las porciones que necesita. El soporte integrado de Linux para lenguajes de scripting como Python es muy bueno, y Python funciona muy bien en procesadores ARM de 200MHz.

A menudo existe la percepción de que WinCE es en tiempo real, y Linux no lo es. El soporte en tiempo real de Linux es decente en los kernels comunes con la opción PREEMPT, y el soporte en tiempo real es excelente con la adición de un parche relativamente pequeño en tiempo real. Puede alcanzar fácilmente un tiempo de milisegundos con Linux. Esto es algo que ha cambiado en los últimos años con la fusión de la funcionalidad en tiempo real en el kernel común.

DESARROLLO DE FLUJO

En un entorno productivo, aplicaciones integradas más avanzadas se han desarrollado y depurado en un PC, no el hardware de destino. Incluso en configuraciones donde la depuración remota en un sistema de destino funciona bien, la depuración de una aplicación en la estación de trabajo funciona mejor. Entonces, el hecho de que una solución tenga una buena depuración en el objetivo, mientras que la otra no es realmente relevante. Para sistemas centrados en datos, es común tener modos de simulación donde la aplicación puede probarse sin conexión a E/S reales. Con las aplicaciones Linux y WinCE, la programación de aplicaciones para un dispositivo integrado es similar a la programación para una PC. Embedded Linux lleva esto un paso más allá. Debido a que la tecnología Linux integrada es la misma que la del escritorio y la tecnología Linux del servidor, casi todo lo desarrollado para escritorio/servidor (incluido el software del sistema) está disponible para embeberse de forma gratuita. Esto significa compatibilidad de controladores muy completa (consulte ejemplos de impresoras y módems USB anteriores), soporte de sistema de archivos robusto, administración de memoria, etc. La amplitud de opciones para Linux es asombrosa, pero algunos pueden considerar esto como un punto negativo, y preferirían un solución integrada como Windows CE donde todo viene de un lugar. Hay una pérdida de flexibilidad, pero en algunos casos, la compensación puede valer la pena. Para ver un ejemplo de la cantidad de paquetes que pueden compilarse para los sistemas Embedded Linux que utilizan Openembedded, consulte.

GUI TENDENCIAS

Es importante tener en cuenta las tendencias para dispositivos embebidos con pequeñas pantallas siendo impulsados ​​por los teléfonos celulares (iPhone, Palm Pre, etc). Los widgets de la GUI estándar que son comunes en los sistemas de escritorio (cuadros de diálogo, casillas de verificación, listas desplegables, etc.) no se cortan para los sistemas integrados modernos. Por lo tanto, será importante considerar la compatibilidad con efectos 3D y bibliotecas de widgets diseñados para ser utilizados por dispositivos de pantalla táctil. La biblioteca Clutter es un ejemplo de este tipo de soporte.

soporte remoto

Volviendo a la cuestión de las herramientas de depuración, la mayoría de las personas se detienen en el escenario en el que el dispositivo se está poniendo al lado de una estación de trabajo en el laboratorio. ¿Pero qué pasa cuando necesita solucionar un problema de un dispositivo que está siendo probado en forma beta a la mitad del mundo? Ahí es donde un depurador de línea de comandos como Gdb es una ventaja, y no una desventaja. ¿Y cómo se conecta al dispositivo si no tiene soporte para módems celulares en Nueva Zelanda, o un mecanismo de conexión eficiente como ssh para el acceso al shell y la transferencia de archivos?

RESUMEN

La selección de cualquier tecnología avanzada no es una tarea sencilla, y es bastante difícil de hacer incluso con experiencia. Por lo tanto, es importante hacer las preguntas correctas y analizar la decisión desde muchos ángulos. Espero que este artículo pueda ayudar en eso.

7

He desarrollado controladores de red que funcionan tanto en RT Linux (para ser más específicos, núcleo preventivo de Linux con parche RT) como en Windows CE. Mi experiencia fue Windows CE fue más estable en términos de respuesta en tiempo real. Los tiempos de fotogramas también mostraron que Windows CE tenía menos inestabilidad.

En RT Linux, tuvimos todo tipo de problemas. Por ejemplo, cuando el usuario movió el mouse; nuestros marcos se retrasaron. Adivina qué, ciertas variantes de x-windows desactivan las interrupciones. También puede sentir que está más seguro solo en la pantalla de la consola. Si tiene habilitados los búferes de cuadros VGA, está condenado de nuevo. Solo tuvimos un problema con Windows CE en términos de inestabilidad de nuevo. El problema ocurrió cuando el controlador USB estaba configurado en un modo incorrecto en el BIOS y Windows CE usaba mucho tiempo para el sondeo.

Para ser sincero, Windows CE tenía más soporte. En Linux, estás solo. Tienes que leer todas las listas de correo posibles para entender qué problemas puedes tener.

8

Con Linux usted es nunca en su cuenta y nunca depende de una sola entidad para proporcionar permisos. Hay muchas opciones de soporte y usted tiene la libertad de elegir sus opciones de soporte para cualquier parte del sistema a través de muchas fuentes competidoras.

Con Windows CE debe cumplir con la licencia y las restricciones establecidas en los complejos acuerdos de licencia que deben acordarse. Conseguir un abogado. Con Windows CE, solo tiene una fuente de propiedad exclusiva para la compatibilidad con el sistema operativo y procederá solo cuando lo considere oportuno para brindar soporte y brindarle lo que necesita. Puede no estar de acuerdo con su posición, pero no tendrá ningún recurso más que atenerse a lo que prescriben. Los costos de los componentes incrementales, módulos, kits de desarrollo, licencias y soporte tienden a acumularse con plataformas propietarias. A más largo plazo, ¿qué sucede cuando el proveedor ya no desea respaldar la plataforma y usted no tiene los derechos para respaldarlo y distribuirlo usted mismo? ¿Qué sucede cuando el proveedor se mueve a una tecnología más nueva y quiere que usted se mueva junto con ellos a pesar de que no esté listo para hacer el cambio? $$$

Nuestra experiencia con las soluciones de Windows en general es que tienden a volverse más caras con el tiempo. Lo que originalmente se consideraba como el TCO más bajo gravita rápidamente hacia una solución que es gravosa y costosa de mantener y soportar. Las licencias tienen que ser renegociadas con el tiempo y las nuevas tecnologías, a menudo innecesarias, se ven obligadas en la imagen por el capricho del proveedor por el bien de SUS necesidades comerciales. Además de eso, los acuerdos de licencia están CAMBIANDO CONTINUAMENTE: consiga un abogado.

Con Linux tiene la libertad de proporcionar soporte y experiencia interna sin tener que preocuparse por distribuir la solución como lo necesita. También tiene la libertad de continuar utilizando y admitiendo tecnología que los proveedores originales ya no desean admitir. Tener el código fuente y los DERECHOS que tienen que ver con lo que quiere (GPL, LGPL) es un atractivo poderoso en lo que respecta a la continuidad del negocio y los costos, a la vez que proporciona acceso a las últimas tecnologías o tecnologías que se adaptan a sus necesidades.

2

Android es una buena opción para algunos sistemas embebidos. (Está basado en Linux)

  • Tiene muchos expertos que son capaces de desarrollar en este sistema.

  • usted tiene acceso a muchas bibliotecas en Java o C

pero utiliza mucha memoria y energía.

Lo que a menudo olvidamos con software pagado/licenciado es que tiene que tratar con licencias. ¡Requiere tiempo y energía! Luego tienes que rastrear si pagas correctamente. Involucra a muchas personas diferentes con diferentes habilidades y cuesta en decisión.

Este costo a menudo no se incluye en los estudios que muestran que el código abierto/gratuito es más costoso que el software de pago.

Con el "software libre" es mucho más fácil tratar con licencias y dedica menos tiempo a tratar estos problemas. Personalmente, prefiero evitar las comunicaciones innecesarias con su equipo legal/financiero cada vez que cambie algunas partes del software.

+1

con "integrado para la industria". Microsoft esencialmente lo regala de forma gratuita haciéndolos más competitivos y es mucho menos complicado. También te dan muchas de las fuentes. Sin embargo, han estado ignorando el espacio del mercado durante los últimos cuatro años, por lo que probablemente hayan perdido mucha ventaja en este espacio. – Quibblesome