Ich habe die Baking Pi-Tutorials bereits gefunden , aber sie verwenden nur Assemblersprache . Ich habe die ersten Lektionen verfolgt, aber ich frage mich bereits, wie ich stattdessen C verwenden soll. Ich meine, es gibt einen Grund, warum sie höhere Sprachen erfunden haben. Ich habe versucht, einfach den C-Code in eine object ( .o
) -Datei zu kompilieren
.section .init
.globl _start
_start:
bl main
loop$:
b loop$
zu einer anderen Objektdatei und verknüpfen sie miteinander und so erhalten kernel.img
. Ich habe dann den bereits vorhandenen Kernel durch meinen eigenen ersetzt, aber er führt den C-Code nicht aus. Der C-Code, den ich geschrieben habe, sollte nur die OK-LED einschalten und dann zurückkehren (dann kommt er loop$: b loop$
). Aber die OK-LED blinkt ein paar Mal zufällig und bleibt dann einfach aus. Hier ist mein C-Code:
int main(int argc, char ** argv) {
volatile unsigned *gpioAddr = (volatile unsigned *)0x20200000;
*(gpioAddr + 4) = 1 << 18;
*(gpioAddr + 40) = 1 << 16;
return 0;
}
Wie verwende ich C für die Betriebssystementwicklung auf einem Raspberry Pi?
Ich bezweifle, dass es sich um einen Fehler im Code handelt (obwohl ich nur ein Bastler bin). Ich bin mir bewusst, dass das Einrichten von C kompliziert sein kann, aber ich bin nicht der erste, der dies tut. AFAIK, alle derzeit vorherrschenden Betriebssysteme sind hauptsächlich in C geschrieben, daher muss es einen Artikel geben, der den Prozess erklärt. Ich würde mich auch über eine Liste von Schritten sehr freuen, damit ich diese Schritte googeln und vielleicht eine etwas weniger umfassende Frage stellen kann.
Hinweis: Die ARM-Assembly, die dem obigen C-Code entspricht, funktioniert einwandfrei. Es schaltet die LED ein (nach einigem Blinken). Ich denke (hoffe), dass mein Raspberry Pi in Ordnung ist.