¿Frambuesa PI sin sistema operativo?

He estado haciendo mucho con Arduino recientemente. Es muy simple porque puede ejecutar directamente código C++ en él sin necesidad de sistemas operativos o controladores.

Investigué un poco y AFAIK, generalmente instala Linux en Raspberry PI y crea scripts de python o binarios de C ++ en él.

Pregunta: ¿Es posible ejecutar código en él sin ningún sistema operativo, pero aún así poder usar tarjetas HDMI y SD?

Puede que le resulte más fácil hacer proyectos completos en un procesador ARM más pequeño y menos capaz, pero más completamente documentado. Aunque tenga cuidado con los adaptadores de depuración patentados mal implementados en placas de desarrollo baratas, a veces estos obtienen controladores abiertos de ingeniería inversa, o puede comprar un jtag real o usar un cargador de arranque en serie. Al menos con el pi, debería poder esperar un buen soporte de cadena de herramientas.

Respuestas (5)

Ejecute el código en el RaPi sin sistema operativo: No hay problema. David Welch ha hecho el trabajo duro, revisa su gitub . Básicamente, puede tomar los archivos de inicio estándar y reemplazar kernel.img con el archivo que desea ejecutar. Para evitar el 'baile de la tarjeta SD', puede ejecutar un gestor de arranque que reciba la imagen que se va a ejecutar a través de una línea serie. He agregado un reinicio automático, por lo que puede ejecutar una nueva imagen 'sin manos'. Si quieres seguir esta ruta, tengo más información.

Ejecute su propia aplicación completa y use la pantalla y la tarjeta SD : Eso es un problema. Toda la información está disponible en las fuentes de Linux, y hay personas trabajando en esto (ver DexOs ?), así que supongo que en medio año más o menos esta información será de conocimiento común. Pero por ahora diría que esto es probablemente demasiado trabajo.

Me pregunto cómo la CPU puede cargar el kernel desde la tarjeta SD sin los controladores apropiados para la tarjeta SD y el sistema de archivos.
Los archivos básicos que necesita (y se pueden descargar desde el sitio de RaPi, solos o como parte de una distribución de Linux) incluyen un archivo de inicio para la GPU. Presumiblemente, la GPU tiene algún bootROM incorporado que le permite leer la SD, cargar su código, cargar el kernel.img y activar la CPU ARM.
@DevilsChild: muchas CPU tienen cargadores de arranque básicos incorporados, la parte de TI Davinci con la que estoy trabajando tiene un "cargador de arranque ROM" que puede funcionar en serie o desde una tarjeta SD. Las tarjetas SD utilizan una interfaz SPI básica.

Siempre es posible, pero tendrá que escribir sus propios controladores para la interfaz HDMI y SD, y posiblemente también un sistema de archivos para esta última.

En realidad, sería extremadamente complicado ya que es la GPU la que se inicia primero y luego necesita cargar algunos blobs binarios de Broadcom para iniciar la CPU. Además, si no recuerdo mal, los controladores y el firmware de la GPU también son de código cerrado.
¿Hay controladores disponibles que podrían incluirse para que funcione? ¿Alguna idea?
@Devils Child No estoy seguro de qué tan fácil sería o qué tan documentado está todo. Creo que puede usar el cargador de arranque existente para cargar su propia imagen del sistema operativo e iniciar la CPU, pero luego se muestra el problema que Stevenvh escribió en la respuesta: deberá escribir controladores y la mayor parte de la documentación para ellos es ' disponible.
@DevilsChild: lo más probable es que los controladores que existen estén escritos para un sistema operativo específico, y si desea integrarlos en su propio software, necesitará algunas de sus funciones. Al final, estará escribiendo una copia (limitada) del sistema operativo. Además, AndrejaKo indica que será muy difícil, y el firmware de código cerrado no facilita las cosas. ¿Por qué no quieres un sistema operativo?
Bueno, si solo instalo Debian en él, ¿por qué necesitaría una Raspberry? ¿No podría simplemente usar una máquina virtual e instalarla allí? Principalmente quería hacer mi propia prueba de concepto con él para poder decir "¡esto es lo que he hecho!".
@DevilsChild - Lo siento, no te sigo. ¿Qué pasa con la máquina virtual? Te refieres a una máquina virtual, ¿verdad? ¿Instalarías una VM en la Raspberry? ¿Para emular qué?
De hecho, estaba comparando una máquina virtual con Linux con una Raspberry con Linux. La única diferencia es que la Raspberry es 'genial' de alguna manera. Realmente me gustaría crear mi propia interfaz de usuario, pero con un sistema operativo existente como base, no hay diferencia con solo usar una máquina virtual.
@DevilsChild, la diferencia importante entre una computadora de una sola placa y una VM es que puede colocar la placa en otro lugar que no sea la ubicación física de la máquina que aloja la VM; también tiende a tener mejores E/S del mundo real. Pero las máquinas virtuales y los emuladores o simuladores más especializados a menudo tienen un papel importante, como permitir que el equipo de software comience a trabajar antes de que exista el hardware, o evitar que se peleen por la única placa prototipo que se ha rediseñado a mano para que sea funcional, o que ejecute pruebas de regresión sin atar la colección de dispositivos físicos...

Lo que todos dijeron, pero, el camino MÁS FÁCIL es ejecutar una distribución de Linux que haga lo que quieras y sea lo más minimalista posible, y luego eliminar todo lo que no quieras.

Muy pronto dejará de ser Linux y se convertirá en un gestor de arranque con soporte SD y HDMI. Eso es esencialmente indistinguible de lo que está pidiendo en todos los aspectos
, excepto que se extrajo de una distribución de Linux (pero ya no es Linux) y
que no lo hizo usted mismo.

A menos que hacerlo usted mismo por completo sea de suma importancia, este parece un enfoque muy lógico.

Si te apetece aprender a ensamblar ARM para ejecutar código directamente en la Pi, este tutorial de Cambridge es un gran recurso:

http://www.cl.cam.ac.uk/freshers/raspberrypi/tutorials/os/

Si desea programar "Raspberry Pi como Arduino", consulte cableadoPi. Consulte mi artículo en http://www.jating.in/efyarticle/EFYArticle.pdf .

1) Hice que se viera y funcionara como Arduino, usando un solo cable para hacer la conversión de USB a serie y también proporcionar energía a la placa. entonces solo un cable usb es suficiente como arduino.

2) Creé una pequeña utilidad que, cuando se ejecuta, cargará el código Pi de cableado a través de la línea serial (en realidad, cualquier archivo de texto :-)), lo compilará y lo ejecutará.

Si lo desea, puede ejecutarlo en cada inicio modificando el archivo .bashrc, por lo que cada vez que se inicia, estará esperando un nuevo archivo. No proporcioné ningún enlace del código de utilidad, pero puede encontrarlo en http://www.jating.in/efyarticle/