Raspberry PI ohne OS drauf?

Ich habe in letzter Zeit viel mit Arduino gemacht. Es ist sehr einfach, weil Sie C++-Code direkt darauf ausführen können, ohne dass Betriebssysteme oder Treiber erforderlich sind.

Ich habe einige Nachforschungen angestellt und AFAIK, normalerweise installieren Sie Linux auf dem Raspberry PI und erstellen darauf Python-Skripte oder C++-Binärdateien.

Frage: Ist es möglich, ohne Betriebssystem Code darauf auszuführen, aber trotzdem HDMI- und SD-Karten verwenden zu können?

Möglicherweise finden Sie es einfacher, Bare-Metal-Projekte auf einem kleineren und weniger leistungsfähigen, aber vollständiger dokumentierten ARM-Prozessor durchzuführen. Achten Sie jedoch auf schlecht implementierte, proprietäre Debug-Adapter auf billigen Entwicklungsboards - manchmal erhalten diese rückentwickelte offene Treiber, oder Sie können ein echtes Jtag kaufen oder einen seriellen Bootloader verwenden. Zumindest beim pi sollte man eine gute Toolchain-Unterstützung erwarten können.

Antworten (5)

Code auf dem RaPi ohne OS ausführen: Kein Problem. David Welch hat die Grundarbeit erledigt, überprüfen Sie sein Gitub . Grundsätzlich können Sie die Standard-Startdateien nehmen und die kernel.img durch die Datei ersetzen, die Sie ausführen möchten. Um den „SD-Kartentanz“ zu vermeiden, können Sie einen Bootloader ausführen, der das auszuführende Image über eine serielle Leitung empfängt. Ich habe einen automatischen Neustart hinzugefügt, sodass Sie ein neues Image „hands-off“ ausführen können. Wenn Sie diesen Weg gehen möchten, habe ich einige weitere Informationen.

Führen Sie Ihre eigene Bare-Metal-Anwendung aus und verwenden Sie den Bildschirm und die SD-Karte : Das ist ein Problem. Alle Informationen sind tief in den Linux-Quellen verfügbar, und es gibt Personen, die daran arbeiten (überprüfen Sie DexOs ?), also gehe ich davon aus, dass diese Informationen in einem halben Jahr oder so allgemein bekannt sein werden. Aber im Moment würde ich sagen, das ist wahrscheinlich zu viel Arbeit.

Ich frage mich, wie die CPU den Kernel von der SD-Karte laden kann, ohne die entsprechenden Treiber für die SD-Karte und das Dateisystem?
Die grundlegenden Dateien, die Sie benötigen (und von der RaPi-Site einzeln oder als Teil einer Linux-Distribution heruntergeladen werden können), enthalten eine Startdatei für die GPU. Vermutlich verfügt die GPU über ein integriertes BootROM, mit dem sie die SD lesen, ihren Code laden, die kernel.img laden und die ARM-CPU aktivieren kann.
@DevilsChild - Viele CPUs haben grundlegende Bootloader eingebaut, der TI Davinci-Teil, mit dem ich arbeite, hat einen "ROM-Bootloader", der über serielle oder von SD-Karte funktionieren kann. SD-Karten verwenden eine einfache SPI-Schnittstelle.

Es ist immer möglich, aber Sie müssen Ihre eigenen Treiber für die HDMI- und die SD-Schnittstelle schreiben und möglicherweise auch ein Dateisystem für letztere.

Eigentlich wäre es extrem kompliziert, da es die GPU ist, die zuerst startet und dann einige binäre Blobs von Broadcom laden muss, um die CPU zu starten. Wenn ich mich richtig erinnere, sind auch GPU-Treiber und Firmware Closed Source.
Gibt es Treiber, die enthalten sein könnten, damit es funktioniert? Irgendeine Idee?
@Devils Child Ich bin mir nicht sicher, wie einfach es wäre oder wie dokumentiert alles ist. Ich denke, dass Sie möglicherweise den vorhandenen Bootloader verwenden können, um Ihr eigenes Betriebssystem-Image zu laden und die CPU zu starten, aber dann zeigt das Problem, das Stevenvh in der Antwort schrieb: Sie müssen Treiber schreiben, und der größte Teil der Dokumentation dafür ist nicht vorhanden. nicht verfügbar.
@DevilsChild - Die vorhandenen Treiber werden höchstwahrscheinlich für ein bestimmtes Betriebssystem geschrieben, und wenn Sie sie in Ihre eigene Software integrieren möchten, werden einige ihrer Funktionen benötigt. Am Ende schreiben Sie eine (begrenzte) Kopie des Betriebssystems. AndrejaKo gibt auch an, dass es sehr schwierig sein wird und die Closed-Source-Firmware die Dinge nicht einfacher macht. Warum willst du kein OS?
Nun, wenn ich nur Debian darauf installiere, wozu brauche ich dann überhaupt einen Raspberry? Kann ich nicht einfach eine VM verwenden und dort installieren? Ich wollte hauptsächlich mein eigenes Proof-of-Concept-Ding damit machen, damit ich sagen kann: "Das habe ich getan!".
@DevilsChild - Tut mir leid, ich kann dir nicht folgen. Was ist mit der VM? Du meinst eine virtuelle Maschine, richtig? Würden Sie eine VM auf dem Raspberry installieren? Was nachahmen?
Ich habe eigentlich eine virtuelle Maschine mit Linux darauf mit einem Raspberry mit Linux verglichen. Der einzige Unterschied besteht darin, dass die Himbeere in gewisser Weise „cool“ ist. Ich würde wirklich gerne meine eigene Benutzeroberfläche erstellen, aber mit einem vorhandenen Betriebssystem als Basis gibt es keinen Unterschied zur Verwendung einer virtuellen Maschine.
@DevilsChild Der wichtige Unterschied zwischen einem Einplatinencomputer und einer VM besteht darin, dass Sie die Platine an einem anderen Ort als dem physischen Standort der Maschine platzieren können, auf der die VM gehostet wird. Außerdem hat es tendenziell bessere E / A in der realen Welt. Aber VMs und spezialisiertere Emulatoren oder Simulatoren spielen oft eine wichtige Rolle, z. B. indem sie das Softwareteam mit der Arbeit beginnen lassen, bevor die Hardware vorhanden ist, oder vermeiden, dass sie sich um das einzige Prototyp-Board streiten, das von Hand überarbeitet wurde, um funktionsfähig oder lauffähig zu sein Regressionstests, ohne die Sammlung physischer Geräte zu binden ...

Was sie alle sagten, aber der EINFACHSTE Weg ist, eine Linux-Distribution zu betreiben, die tut, was Sie wollen und so minimalistisch wie möglich ist, und dann alles abzustreifen, was Sie nicht wollen.

Ziemlich bald wird es aufhören, Linux zu sein und ein Bootloader mit SD- und HDMI-Unterstützung werden. Das ist im Wesentlichen nicht von dem zu unterscheiden, wonach Sie fragen, außer
- es wurde aus einer Linux-Distribution extrahiert (ist aber kein Linux mehr) und
- Sie haben es nicht selbst getan.

Wenn es nicht von größter Bedeutung ist, es vollständig selbst zu machen, scheint dies ein sehr logischer Ansatz zu sein.

Wenn Sie Lust haben, etwas ARM-Assembly zu lernen, um Code direkt auf dem Pi auszuführen, dann ist dieses Tutorial von Cambridge eine großartige Ressource:

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

Wenn Sie "Raspberry Pi als Arduino programmieren möchten", sehen Sie sich wiringPi an. Sehen Sie sich meinen Artikel unter http://www.jating.in/efyarticle/EFYArticle.pdf an .

1) Ich habe es wie Arduino aussehen und funktionieren lassen, indem ich ein einziges Kabel verwendet habe, um die USB-zu-Seriell-Konvertierung durchzuführen und das Board auch mit Strom zu versorgen. also reicht nur ein usb-kabel genau wie arduino.

2) Ich habe ein kleines Dienstprogramm erstellt, das beim Ausführen den Verdrahtungs-Pi-Code über die serielle Leitung lädt (eigentlich jede Textdatei :-)), kompiliert und ausführt.,

Wenn Sie möchten, können Sie es bei jedem Start ausführen, indem Sie die .bashrc-Datei ändern, sodass es bei jedem Start auf eine neue Datei wartet. Ich habe keinen Link des Dienstprogrammcodes bereitgestellt, aber Sie können ihn unter http://www.jating.in/efyarticle/ finden.