Wie führe ich ein C-Programm ohne Betriebssystem auf dem Raspberry Pi?
Ich würde gerne Experimentieren mit dem Raspberry Pi für einige andere low-level embedded-Anwendungen. Das einzige problem ist, dass, im Gegensatz zu den AVR-und PIC-mikrocontroller-boards zur Verfügung, Raspberry Pi, in der Regel läuft ein Betriebssystem (wie z.B. Raspbian), das die Verteilung der CPU-Zeit über alle Laufenden Programme und macht es unpraktisch für bestimmte Echtzeit-Anwendungen.
Habe ich kürzlich gelernt, dass, vorausgesetzt, Sie haben einen bootloader wie GRUB installiert, läuft ein C-Programm auf einer x86 (in form eines kernel -) nimmt sehr wenig tatsächliche setup, nur ein Assembler-Programm zum Aufruf der main-Funktion und der eigentliche C-code.
Gibt es eine Möglichkeit, dies zu erreichen mit einem Raspberry Pi?
Es würde eine große Weise sein, erfahren Sie mehr über low-level-ARM-Programmierung, und es hat bereits ein paar komplexe Peripherie zu Durcheinander herum mit (USB, Ethernet, etc.)
InformationsquelleAutor der Frage watswat5 | 2015-04-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Während der bare-metal-ist es möglich auf dem Pi, ich würde es vermeiden da Linux immer so leicht ist und behandelt eine ganze Reihe von Sachen für Sie.
Hier ist ein tutorial, um Ihnen den Einstieg, wenn Sie wollen immer noch lernen, bare-metal-Zeug: http://www.valvers.com/open-software/raspberry-pi/step01-bare-metal-programming-in-cpt1/
Mit alles, was gesagt, würde ich laden Sie einfach Ihre Lieblings-embedded-linux-Distribution (RT gepatcht werden könnten, bevorzugt basierend auf Ihren Anforderungen) und nennen es gut.
InformationsquelleAutor der Antwort It'sPete
Eigentlich der Raspberry Pi ist eine der leichteren Waffen an Programm bare-metal (ohne Betriebssystem) ich habe viele Beispiele auf github, um Ihnen den Einstieg
https://github.com/dwelch67/raspberrypi
Eine nette Sache über den raspberry pi ist, dass Sie nicht mit einem bootloader wie uboot, es ist eine gpu, die eigentlich bringt der chip bis zuerst, dann lädt er den kernel (oder bare-metal-Anwendung, was auch immer) in den ram und Zweigen, um es in der gleichen Weise, dass uboot hätte. Eine andere nette Sache ist, die Sie cant Ziegel es, wie man es mit so vielen anderen boards in dieser Klasse, wenn Sie mess up, ziehen Sie die sd-Karte aus, versuchen Sie es erneut, wenn Sie aufgeben, dann setzen Sie eine sd-Karte mit linux auf zurück und führen Sie linux...
InformationsquelleAutor der Antwort old_timer
Vollautomatische minimal bare-metal-blinker Beispiel
Getestet auf Ubuntu 16.04 host, Raspberry Pi 2.
dwelch ist das umfassendste Beispiel, aber das ist ein minimaler, leicht zu setup-Hallo Welt.
Verwendung:
Legen Sie die SD-Karte auf dem host
Bild:
Wo:
/dev/mmblck0
ist das Gerät von der SD-Kartep1
ist die erste partition des Gerätes (/dev/mmblck0p1
)Einschub SD-Karte auf einem PI
Schalten Sie den Strom aus-und
GitHub upstream: https://github.com/cirosantilli/raspberry-pi-bare-metal-blinker/tree/d20f0337189641824b3ad5e4a688aa91e13fd764
starten.S
main.c
ldscript
make.sh
Hier ist ein X86-Beispiel für die neugierigen: Wie ein Programm ausgeführt werden, ohne ein Betriebssystem?
InformationsquelleAutor der Antwort Ciro Santilli 新疆改造中心 六四事件 法轮功
https://www.cl.cam.ac.uk/projects/raspberrypi/tutorials/os/ ist ein großes tutorial, und Sie werden Ihnen sagen, die besten quick-and-dirty Weg, um code auszuführen, der auf blankem Metall ist, entführen Sie eine linux-Distribution, das zu tun, nur kompilieren in den kernel.img (mit der geeigneten Architektur-Optionen) und verwenden Sie es, zu ersetzen, die bestehende linux-Distribution
für die gerade dieser Abschnitt des Tutorials können Sie gehen zu:
https://www.cl.cam.ac.uk/projects/raspberrypi/tutorials/os/ok01.html#pitime
InformationsquelleAutor der Antwort redball
Dem Pi vielleicht ein bisschen suboptimal für das, was Sie wollen zu tun, da das SoC design ist so, dass die ARM-CPU ist ein Bürger zweiter Klasse - das bedeutet, es gibt einige Reifen zu springen durch, um ein bare-metal-Programm auf.
Jedoch, Sie könnten betrügen ein bisschen, und verwenden Sie die U-Boot-API, um Ihnen Zugang zu einigen der features, die U-Boot-bietet doch in der Lage sein, um Ihre eigenen features auf der Seite.
InformationsquelleAutor der Antwort unixsmurf