¿Raspberry PI sin sistema operativo?

9

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

He investigado un poco y AFAIK, por lo general, instalas Linux en Raspberry PI y creas scripts de Python o binarios 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?

bytecode77
fuente
2
Puede que le resulte más fácil hacer proyectos de metal desnudo 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ías poder esperar un buen soporte de cadena de herramientas.
Chris Stratton

Respuestas:

16

Ejecute el código en el RaPi sin SO: 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 el kernel.img con el archivo que desea ejecutar. Para evitar el "baile de la tarjeta SD", puede ejecutar un gestor de arranque que recibe la imagen a ejecutar a través de una línea en serie. He agregado un reinicio automático, para que pueda ejecutar una nueva imagen 'sin intervención'. Si quieres seguir esta ruta, tengo más información.

Ejecute su propia aplicación de metal desnudo 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 (¿verificar DexOs ?), Así que supongo que dentro de 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.

Wouter van Ooijen
fuente
Me pregunto cómo la CPU puede cargar el núcleo desde la tarjeta SD sin los controladores adecuados para la tarjeta SD y el sistema de archivos.
bytecode77
1
Los archivos básicos que necesita (y puede descargarse del sitio RaPi, solo o como parte de una distribución de Linux) incluyen un archivo de inicio para la GPU. Presumiblemente, la GPU tiene un bootROM incorporado que le permite leer la SD, cargar su código, cargar el kernel.img y activar la CPU ARM.
Wouter van Ooijen
@DevilsChild: muchas CPU tienen cargadores de arranque básicos integrados, 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 usan una interfaz SPI básica.
John U
5

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

stevenvh
fuente
1
En realidad, sería extremadamente complicado ya que es la GPU 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 de GPU y el firmware también son de código cerrado.
AndrejaKo
¿Hay controladores disponibles que podrían incluirse para que funcione? ¿Alguna idea?
bytecode77
@Devils Child No estoy seguro de lo fácil que sería o qué tan documentado está todo. Creo que puede usar el gestor de arranque existente para cargar su propia imagen del sistema operativo e iniciar la CPU, pero luego el problema que Stevenvh escribió en la respuesta muestra: necesitará escribir controladores y la mayor parte de la documentación para ellos no es ' t disponible.
AndrejaKo
@DevilsChild: los controladores que existen probablemente se escribirán para un sistema operativo específico, y si desea integrarlos en su propio software, necesitará algunas de sus funciones. Al final, escribirás 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?
stevenvh
1
@DevilsChild la diferencia importante entre una computadora de placa única 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 en el 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 peleen por el único prototipo de placa que ha sido reelaborado a mano para que funcione o se ejecute. pruebas de regresión sin atar la colección de dispositivos físicos ...
Chris Stratton
3

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 quitar todo lo que no quieras.

Muy pronto dejará de ser Linux y se convertirá en un gestor de arranque con soporte para SD y HDMI. Eso es esencialmente indistinguible de lo que está pidiendo en todos los aspectos, excepto
que se ha extraído 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, parece un enfoque muy lógico.

Russell McMahon
fuente
0

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

1) Lo hice lucir y funcionar como Arduino, mediante el uso de un solo cable para realizar la conversión de USB a serie y también proporcionar alimentación a la placa. así que solo un cable usb es suficiente al igual que arduino.

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

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

Jatin Gandhi
fuente