Unser erstes Programm in C (PI5): Unterschied zwischen den Versionen

Aus C und Assembler mit Raspberry
 
Zeile 36: Zeile 36:
make
make
</syntaxhighlight>
</syntaxhighlight>
{|
 
|-
-----
| style="width: 33%; text-align:left;" | [[Arbeiten mit Make und Linker-Script|< Zurück]] || style="width: 33%" | [[Hauptseite|^ Hauptseite]] || style="width: 33%; text-align:right;" | [[Lass die LED leuchten in C (PI5)|weiter >]]
 
{| style="width: 100%;
| style="width: 33%;" | [[Arbeiten mit Make und Linker-Script|< Zurück (Arbeiten mit Make und Linker-Script)]]
| style="width: 33%; text-align:center;" | [[Hauptseite|< Hauptseite >]]
| style="width: 33%; text-align:right;" | [[Lass die LED leuchten in C (PI5)|Weiter (Lass die LED leuchten in C (PI5)) >]]
|}
|}

Aktuelle Version vom 23. August 2024, 10:48 Uhr

Unser erstes Programm wird zunächst nichts tun. Es wird einfach eine Dauerschleife durchlaufen. Dies dient als Grundbaustein für alle weiteren Versuche. Ich werde erklären, wie ein solches Programm erstellt, kompiliert und ausgeführt wird. Zunächst schauen wir, ob alles funktioniert.

Sourcecode erstellen

Leider kommen wir bei BareMetal mit C nicht an Assembler vorbei. Auch wenn das Assemblerprogramm zur Zeit nicht wirklich viel tut, wird es später zum Beispiel für die Interrupt-Progrogramierung benötigt.

Öffnen Sie ein Textprogramm, um unser erstes Assemblerprogramm zu schreiben:

//
// The first program
// 01.07.2024 www.satyria.de
//
.section .init    // Ensure the linker places this at the beginning of the kernel image
.globl _start     // Generates a global label
_start:           // The label _start (entry address)

   mov sp, #0x80000 // Create a stack of 512KB (524288 bytes)
	b main            // Branch to "main"

Speichern Sie die Datei im Standardverzeichnis unter Windows: C:\msys64\home\xxx (wobei xxx in der Regel Ihr Benutzername ist). Unter Linux können Sie die Datei im Home-Verzeichnis speichern. Geben Sie der Datei den Namen erstes.S. Die Endung .S kennzeichnet die Datei als Assembler-Sourcecode.

Da wir ja in C programmieren wollen schreiben wir noch ein kleines main:

//
// main.c
//

int main (void)
{
	while (1){}
}

Hier wird einfach eine Endlosschleife erzeugt.

Kompilieren des Programms mit make

Zuvor habe ich beschrieben unter "Arbeiten mit Make und Linker-Script" beschrieben, wie wir ein Makefile schreiben. Mit diesem Makefile können wir auch dieses Programm kompilieren, wenn im Verzeichnis die Datei "Makefile" und "linker.ld" vorhanden sind:

make

< Zurück (Arbeiten mit Make und Linker-Script) < Hauptseite > Weiter (Lass die LED leuchten in C (PI5)) >