Cómo llegar al núcleo de Windows 10

Microsoft Windows siempre ha venido en una variedad de sabores. Sin embargo, hasta la llegada de Windows 10, la variación entre instancias podría ser bastante diversa. Windows se ha ejecutado en sistemas como Itanium de Intel, MIPS y DEC Alpha. Recientemente, tuvimos Windows RT basado en ARM y Windows CE fue diseñado para funcionar con ARM.

Los desarrolladores tuvieron que usar conjuntos de herramientas diseñados específicamente para estas diferentes plataformas, lo que fue un problema menor cuando los sistemas tendían a funcionar en un entorno independiente. Sin embargo, con el Internet de las Cosas (IoT), ese escenario no tiene mucho sentido.

Surgieron numerosos desafíos con los diversos sistemas, incluida la forma en que Microsoft dividió su desarrollo y entrega. Visual Studio ha sido la plataforma de desarrollo de Microsoft, pero un equipo de diseño dentro de Microsoft normalmente tomaría una instantánea y la bloquearía para proporcionar soporte para una plataforma como Windows CE. Desafortunadamente, eso dejó a esos desarrolladores fuera de sincronización con la última versión de Visual Studio y Windows. Windows 10 IoT Core y el último Visual Studio están diseñados para cambiar ese paradigma.

En este punto, Windows 10 IoT Core admite un número pequeño pero creciente de plataformas, además de las plataformas x86 habituales a las que se dirigen las versiones de escritorio y servidor de Windows. Cabe destacar la Raspberry Pi 2, que es una de las primeras plataformas que admite Windows 10 IoT core.

Es una Raspberry Pi 2 que ejecuta Microsoft Windows 10 para IoT Core debajo del patch board a la izquierda. Controla el plotter hecho a medida impulsado por una entrada de cámara digital.

En una reciente visita a Microsoft, vi muchas unidades de Raspberry Pi conduciendo robots a una interesante aplicación de plotter que también usaba una cámara digital para la entrada (ver la figura). Se trataba de unidades de stock programadas con la última versión de Visual Studio.

Quizás el mayor cambio es que el núcleo de IoT de Windows 10 es un subconjunto de otras versiones de Windows 10. Se ejecutará en plataformas ARM, así como en variantes x86 como el Minnowboard, que ejecuta un Intel Atom.

Un Linux sin cabeza

Windows 10 IoT Core no está a la par con Windows que se ejecuta en un escritorio u otra plataforma con una interfaz de usuario sofisticada. En cambio, es más como una versión sin cabeza de Linux. Permite que el núcleo de IoT de Windows 10 sea pequeño, adaptándolo a las aplicaciones integradas. También hace que el núcleo sea más fácil para Microsoft mantener la compatibilidad entre versiones.

La ventaja para los desarrolladores integrados es que los lenguajes y herramientas utilizados para otras plataformas Windows 10 serán los mismos para Windows 10 IoT Core. Lenguajes como C++, C#, Python y Visual Basic se pueden usar en todas las plataformas. También hay una única interfaz de depuración.

El manejo del subconjunto de servicios es bien conocido entre los desarrolladores integrados. Las pantallas o los gráficos pueden ser parte de la mezcla, pero no se estandarizarán en este momento. Esto generalmente es un problema menor para los diseños personalizados que podrían usar algo como una pantalla LCD de 2 líneas impulsada por una interfaz I2C.

Características como la seguridad y las comunicaciones son comunes debido al software base. Muchas herramientas de gestión también funcionan en toda la plataforma, como la actualización remota y la administración. Esto puede no tener un gran impacto en la comunidad de creadores, pero las características son críticas en el espacio comercial de IoT.

Comprender el alcance y las limitaciones del núcleo de IoT de Windows 10 será crucial para su adopción. No es una versión simplificada del escritorio. Por otro lado, eso no es lo que la mayoría de las aplicaciones integradas necesitan o lo que la mayoría de los desarrolladores quieren en este nivel. Definitivamente es una opción que vale la pena investigar para aquellos que trabajan en aplicaciones incrustadas.