Los procesadores BeagleBone y BeagleBone Black ARM, que se clasifican como sistema en un chip, tienen una velocidad de reloj mucho mayor y una potencia de procesamiento mucho mayor que cualquier otro microcontrolador, incluidos aceleradores de gráficos 3D, así como compatibilidad con NEON SIMD conjunto de instrucciones. Por lo tanto, son capaces de realizar tareas de procesamiento de imágenes mucho más complejas en tiempo real.
El BeagleBoard va más allá incluso de eso, porque su OMAP es multiprocesamiento heterogéneo con un núcleo DSP C64xx en el chip junto con el núcleo ARM.
El precio que paga por esa potencia de procesamiento, así como los periféricos de comunicación que incluyen Ethernet y USB, es una gran complejidad adicional. El uso de un sistema operativo con todas las funciones como Linux le permite configurar de forma gratuita toda esa capacidad. Sin embargo, está configurado de la manera en que alguien más pensó que debería hacerse. Su código luego comparte el procesador con el sistema operativo, con el resultado de que no tiene mecanismos fáciles para el acceso directo al hardware o el tiempo determinístico.
Los PIC y los AVR normalmente no usan un sistema operativo que se inicie primero, configure los periféricos y luego cargue su código. En su lugar, se envían con bibliotecas para facilitar la configuración de los periféricos. Esto invierte el control entre el software del proveedor y el suyo: con linux, su software se ejecuta cuando el núcleo lo solicita. Con PIC / AVR / etc, las bibliotecas de proveedores se ejecutan cuando el software se lo solicita.
Puede obtener las bibliotecas del programador para PIC / AVR / etc, que le permiten ejecutar múltiples tareas y alternar entre ellas como los procesos de Linux, pero aunque estas bibliotecas a veces se denominan sistemas operativos, IMO no merecen ese nombre. Y sin una unidad de administración de memoria, no puede obtener la separación de procesos en absoluto.
También hay un nivel de abstracción bastante diferente. En resumen, en la programación completa (con o sin una capa de abstracción), está manipulando el hardware: interrupciones y registros. Con un sistema operativo como Linux, estás manipulando buffers de datos, y los controladores obtendrán esos buffers hacia y desde el hardware en algún momento, generalmente antes, pero casi nunca con un tiempo exacto. Por supuesto, el periférico probablemente utilizará un tiempo muy estricto ya que procesa ese búfer. Pero si desea sincronizar acciones de diferentes periféricos, el sistema operativo realmente se interpondrá en su camino.