¿Hay alguna computadora/sistema en un chip de placa única con buena documentación para desarrollar bare metal? [cerrado]

Siempre quise desarrollar mi propio sistema operativo de mierda, pero las extrañas peculiaridades heredadas de la plataforma x86/PC me impidieron hacerlo (por ejemplo, modo real vs protegido, solo resoluciones bajas disponibles en VGA/VESA, etc.). Ahora me di cuenta de que tal vez uno de los muchos SoC utilizados en los teléfonos inteligentes sería una mejor plataforma para desarrollar un sistema operativo, ya que son soluciones todo en uno sin consideraciones de compatibilidad hacia abajo y, por lo tanto, con un mejor diseño (aunque no soy el mayor fanático). del conjunto de instrucciones ARM).

Aún mejor: hay muchas computadoras de una sola placa, que traen SoC, RAM, puertos USB para conectar el mouse/teclado y hdmi para conectar un monitor por un precio económico... una plataforma perfecta para incursionar en el desarrollo del sistema operativo, pensé...

La computadora de placa única más establecida parece ser la Raspberry Pi y también encontré 2 tutoriales sobre el desarrollo del sistema operativo para ellas en línea ( https://hackaday.com/2018/01/19/roll-your-own-raspberry-pi -os/ ). Pensé que los tutoriales servirían como una buena introducción, pero en realidad me faltaba mucha información en los tutoriales, así que traté de conseguir la documentación oficial, que es muy poca... muy poca para desarrollar realmente metal.

Algunos problemas con los que me encontré:

  • hay una documentación de periféricos para raspberry 1, pero no para raspberry 2/3, que tienen direcciones base totalmente diferentes
  • el RB3, por ejemplo, tiene un chip wifi (BCM43438), pero no puedo encontrar ninguna documentación oficial sobre cómo se conecta al SoC RB3 (BCM2837)
  • los tutoriales insinúan los conceptos de buzón para obtener un framebuffer/obtener salida a través de hdmi, pero no puedo encontrar ninguna información útil sobre framebuffer/buzones en la documentación oficial
  • lo mismo con el proceso de arranque... no se explica en ninguna parte en la documentación oficial
  • en el sitio web oficial de broadcom, ¡no puedo encontrar el BCM2837 en absoluto!
  • al mirar otros SoC como el S905 (en el Odroid C2) tiene ethernet conectado directamente al SoC (en lugar de a través de USB como tiene el RB), pero no encuentro información de cómo programarlo
  • además del tema de framebuffer de los tutoriales, no encontré ninguna instrucción sobre cómo programar la GPU (por ejemplo, para renderizado 3D). Hay un documento de arquitectura que describe la GPU VisualCore, pero no cómo debe interconectarse...

¿Por qué la documentación/especificación es tan mala? ¿Será que los SoC no se venden directamente a los clientes finales y por tanto su documentación es confidencial? ¿Son solo algunos SoC y en realidad hay algunos con la documentación adecuada?

No creo que no haya suficiente documentación sobre prácticamente cualquier aspecto de RPI de cualquier versión.
Solo un recordatorio: SoC significa sistema en un chip. Muy a menudo, sucede que el fabricante de SoC compra y utiliza bloques de IP externos, lo que puede influir en la cantidad de documentación disponible.
Tuve la impresión de que el BCM2837 se produjo a través de un acuerdo exclusivo para RPi y no estaba disponible para nadie más. Por lo tanto, no habría ninguna razón para producir ninguna documentación pública.
@Finbarr Todavía hay documentación disponible: github.com/raspberrypi/documentation/files/1888662/…
Creo que algunas personas han producido los suyos modificando otros con los que son compatibles partes. No estaría seguro de su precisión o integridad...
@Finbarr Sí, pero dado el tamaño de la comunidad, seguiría adelante. De todos modos, no creo que ninguna otra solución que no sea de código abierto funcione mejor.
... y por la nota en la página principal y el hecho de que inmediatamente se convierte en BCM2385, ¡parece que ese es exactamente el caso!
@EugeneSh. Si no puedo obtener una hoja de datos para una parte del fabricante o su agente, entonces personalmente es poco probable que la use. Otros pueden diferir.
El documento es algo que un tutor al azar en Stanford creó al hacer algunos cambios en el documento bcm2835... como dijo Finbarr: no es completo ni exacto... o en otras palabras: nada oficial. @EugeneSh. ¿Podría, por ejemplo, mostrarme documentación sobre el proceso de arranque? Mi comprensión es cada vez mayor, que hay mucha documentación sobre cosas de espacio de usuario/Linux, pero casi ninguna documentación sobre temas básicos
@Finbarr Para uso comercial, seguro. Y aparentemente, para uso comercial, creo que podría obtener uno.
@Wolf De todos modos, ¿cuál es su aplicación para la que está pidiendo recomendaciones? Tuve una buena experiencia con las placas beaglebone e incluso con FriendlyArm , aunque las placas no son muy populares, pero no hay ningún problema para obtener el esquema y/o los documentos de los componentes.
Pruebe el TI Beagle Bone Black. Debido a que está basado en el procesador Sitara, esta es una buena documentación disponible para él.
@EugeneSh. Encontré una documentación para el proceso de arranque de la tarjeta SD de Raspberry aquí: github.com/raspberrypi/documentation/blob/master/hardware/… ... Eso es básicamente una prueba de la falta de documentación. ¡Revisaré las tablas de beagle!
¿Constituye esto una pregunta de EE aunque sea ligeramente?
Recomiendo centrarse en algo más grande que 8 bits y más pequeño que 32 bits. Creo que el MSP430 es probablemente el mejor objetivo para aprender a escribir un sistema operativo y poder completarlo. Un problema será la falta de cualquier dispositivo estándar de entrada y salida. Eso se puede resolver simplemente agregando una pantalla gráfica fácil de manejar y una interfaz de teclado. Pero requerirá algo de trabajo de su parte para lograrlo. La falta de un sistema de protección es otro problema, pero eso no es un requisito para aprender.
@jonk Parece que bajó demasiado de la CPU de uso general a la MCU de gama baja :)
También recomiendo usar el libro XINU de Douglas Comer, su primer libro "rojo" publicado en 1983 por Pearson.
@EugeneSh. No. Es un "ajuste perfecto" para cualquiera que intente aprender a hacer esto. Además, XINU de Douglas Comer también es la manera perfecta de aprender a hacerlo. (Su segunda edición y posteriores son demasiado complicadas y carecen de algunas secciones, como las secciones de "marcado de memoria", por lo que es importante usar su primera edición).
@Jonk Todavía iría con algo basado en ARM
@EugeneSh. Esa sería mi SEGUNDA opción. La razón es que, si bien ARM TDMI está bien documentado, también es "complejo" para un principiante. El MSP430 es "simple" en comparación. Además, demasiados sistemas incluyen dos procesadores ARM o varios núcleos. Se pone duro, rápido.
@jonk: Estoy buscando algo que, en teoría , podría usar como mi sistema principal algún día. Ratón, teclado (preferiría PS2 a través de USB), una pantalla gráfica de alta resolución, una cantidad razonable de RAM, un editor, un compilador... eventualmente me gustaría desarrollar una pila TCP/IP y un navegador simple. En cuanto a la filosofía, preferiría ir en la dirección de TempleOS (<100.000 LoC) que Unix/Xinu/Minix...
@Wolf Eso está bien. Comer tiene libros adicionales (muy, muy BUENOS) sobre el tema de hacer TCP/IP. EVITARÍA a toda costa la idea de Linux y Minix. (Especialmente Minix, terriblemente complejo). Pero XINU es tan bueno como parece. No puede encontrar un mejor enfoque para aprender a codificar un O/S. Tómalo de alguien que trabajó en el kernel de Unix en 1978 y enseñó sistemas operativos en la universidad más grande de mi estado. XINU se puede hacer en muy pocas líneas de código.
Disculpe si me equivoco, pero ¿no es cierto que escribir un sistema operativo es una especie de esfuerzo de 10 años para un profesional experimentado?
@AliChen Hay una gran variedad de cosas que uno puede llamar un sistema operativo :)
@EugeneSh., seguro, pero ... "un editor, compilador (+¿enlazador?), ICP/IP", más 2-3 años de aprendizaje desde el punto de partida del OP :-( Una "pantalla gráfica de alta resolución "Necesitaría algo de GUI, ¿no? ¿Cuántos años tardó X-windows en desarrollarse? ¿Para cientos de desarrolladores? ¿20? Lo siento, pero esta solicitud no es más que un sueño completamente irreal.
@AliChen: ¡X-Windows también es un gran ejemplo de software terrible! Consulte TempleOS de Terry Davis para ver un ejemplo del poder de la simplicidad. Tampoco dije que quiero hacerlo dentro de un año o cinco años. También soy un desarrollador/ingeniero/arquitecto de software con experiencia... pero nunca hice muchas cosas básicas, pero puedo desarrollar en ensamblador para una consola de videojuegos de 8 bits.

Respuestas (1)

Al menos el NXP i.MX6 tiene la mayor parte de la documentación disponible públicamente (excepto la GPU). Hay muchas placas de desarrollo (SABRE, Boundary Devices, Novena o sistemas en módulo para este SoC (consulte, por ejemplo, Variscite).

Vea también la línea SAM "grande" de Microchip.