A veces parece que las computadoras de placa única (SBC) acaparan la diversión en la electrónica integrada. Los microcontroladores pueden parpadear LEDs, controlar pantallas y leer sensores, pero usualmente requieren una cadena de herramientas de desarrollo compleja y lidiar con montañas de código C++ para lograrlo. Las SBC, en cambio, ofrecen un sistema operativo completo, similar a una computadora de escritorio. Eso agiliza y simplifica mucho el trabajo.

Afortunadamente, los microcontroladores ya no tienen que sentirse excluidos. Con el lanzamiento de KernelUNO, las placas Arduino UNO Rev3 ahora pueden ejecutar una shell básica al estilo Linux. KernelUNO está limitado en muchos aspectos, pero considerando que fue construido para un chip ATmega328P de 8 bits con apenas 2 KB de SRAM, resulta bastante impresionante.

KernelUNO lleva una experiencia de línea de comandos familiar a una de las plataformas con mayores restricciones de recursos utilizadas por los makers. Una vez flasheado en un Arduino UNO, los usuarios pueden conectarse mediante un monitor serie e interactuar con un prompt que imita un entorno minimalista similar a Linux. Comandos como ls, cd, mkdir y cat permiten navegar y manipular un sistema de archivos virtual que existe completamente en la memoria RAM. Sin embargo, el almacenamiento es extremadamente limitado. El sistema soporta solo 10 archivos o directorios con un tamaño máximo de 32 bytes por archivo.

El control directo del hardware también es soportado por la shell. Los usuarios pueden configurar pines GPIO, leer valores de entrada y alternar salidas usando comandos sencillos. Este estrecho acoplamiento entre la abstracción de software y la interacción de hardware facilita prototipar comportamientos sin recompilar código, un cambio significativo frente a los flujos tradicionales de Arduino.

La monitorización del sistema también es posible con herramientas como uptime, dmesg y df, que entregan información sobre el estado del sistema, uso de memoria y mensajes del kernel. Por supuesto, estas características están drásticamente reducidas por dentro: el búfer de mensajes retiene solo seis entradas y la memoria siempre es escasa, pero reflejan conceptos presentes en sistemas operativos completos.

Actualmente, KernelUNO no soporta almacenamiento persistente, por lo que los datos se pierden al reiniciar, y el sistema solo admite un único usuario. Además, las longitudes de rutas, tamaños de archivos y búferes de entrada están estrictamente limitados para encajar en los 2 KB de SRAM del Arduino.

Aunque KernelUNO es un proyecto divertido con algunos casos de uso legítimos, las limitaciones del ATmega328P lo hacen demasiado restringido para proyectos complejos. Sin embargo, es una idea muy interesante. Construir un sistema operativo similar en un microcontrolador más potente podría resultar mucho más útil.

Vía Hackster.io.