¿Es el Beaglebone Black una buena opción para aprender a diseñar sistemas operativos?

El BBB es una buena opción para esto, mejor que la Frambuesa o Arduino.

TI pretendía que el BBB fuera realmente una plataforma de publicidad para sus chips de procesador. Quieren vender fichas, por lo que todo sobre el BBB está abierto y bien documentado. Usted tiene acceso a las mismas herramientas, varios pods JTAG y CodeComposer, que se usarían en proyectos “reales” diseñados con componentes de TI. Hay suficiente para que prácticamente puedas abrir Linux desde el hardware de BBB y solo.

La Raspberry sufre porque su núcleo es el procesador Broadcom. Aunque la situación puede haber cambiado recientemente, históricamente, obtener información de ingeniería sobre el chip ha sido imposible. Esta había sido una zona prohibida.

El Arduino está bien. El problema es que es un sistema demasiado pequeño para alojar un sistema operativo con funcionalidad. Es suficiente para aprender sobre el proceso de arranque, y tal vez cómo implementar la programación, pero eso sería todo.

Por último, un SBC (BBB específicamente) es la herramienta perfecta para el aprendizaje de problemas de diseño e implementación de sistemas operativos. Debido al fácil acceso al silicio simple a través de JTAG, es de hecho una mejor ruta que las PC x86.

El principal problema con el uso de SBC para el desarrollo de sistemas operativos es que a menudo parte del hardware (normalmente la GPU, pero posiblemente también otras partes clave) es de propiedad exclusiva y no está documentado. De hecho peor documentado que el gran hardware de escritorio.

Esto se aplica a la GPU Raspberry Pi y al firmware de arranque, y una pequeña búsqueda parece indicar que también se aplica a la GPU Beaglebone PowerVR.

Por lo general, las distribuciones de escritorio para SBC incluyen blobs binarios para distribuciones seleccionadas de sistemas operativos Linux / Android, con solo una envoltura delgada como controladores. Podrían dar algún tipo de información privilegiada si alguien tan grande como Microsoft quiere crear un sistema operativo nativo, pero usted, como desarrollador de sistemas operativos aficionados, es SOL.

Es muy desafortunado que casi todo el hardware que está saliendo supuestamente para los aficionados y los fabricantes sea tan cerrado y secreto sobre su funcionalidad.

El segundo problema relacionado es que debido a que el hardware no está documentado, no tiene emuladores de PC precisos, por lo que no puede experimentar con código de bajo nivel en un entorno de depuración agradable y seguro, y aprenda.

Tienes que hacer la mayoría de tus pruebas de bajo nivel en el dispositivo real.

Sí, hay emuladores ARM por ahí, y si les pones ARM linux en ellos, puede que incluso se parezcan a los de tu SBC, pero no servirán de nada si intentas escribir un sistema operativo para aficionados desde cero y administrar el Hardware de un SBC específico.

Por otro lado, hay muchos emuladores de PC muy precisos con los que puedes jugar.

Obviamente, la gran ventaja de trabajar con un SBC es que hay mucha menos variedad de hardware para SBC que para PC. Una vez que funciona en tu tablero, funciona en todos los tableros como este. Y normalmente solo hay una variante que sale cada pocos años.

También es más probable que el tipo de comunidad en torno a los SBC pruebe un sistema operativo experimental en comparación con los usuarios de PC.

Una de las cosas con las que se casará si va a escribir un sistema operativo simple es la hoja de datos. Afaik Beagleboards son los únicos que tienen sus hojas de datos de procesador fácilmente disponibles.

Otra cosa que necesitarás es Linux. Como mecanismo de aprendizaje. Una vez más, el BBB gana porque se ejecuta en la línea principal, y hay una gran cantidad de documentación relacionada que está disponible.

Como otra respuesta menciona, la comunidad es importante. Echa un vistazo al grupo de Google, así como el canal de IRC para Beagleboard. Está bien organizado con un montón de registros, etc.

Estoy seguro de que está bien, pero creo que para aprender a hacer un sistema operativo básico, probablemente estés mejor con una PC normal, habrá mucho más soporte / foros / ayuda para hacer un sistema operativo para un x86 PC que para un ARM SBC.

Simplemente ejecute una máquina virtual en una PC / Mac existente.