Bare-Metal-C-Programmierung am Arm
Dieses Repository enthält ein Tutorial-eBook zum Programmieren eines Backmetallarmsystems. Insbesondere handelt es sich um eine ARMV7A -Version der ARM -vielseitigen Express -Plattform, die auf einem regulären PC über Qemu emuliert ist. Sie können das Repository untersuchen oder Dinge in der Reihenfolge lesen.
Inhaltsverzeichnis
Eine aktuelle PDF-Version ist ebenfalls verfügbar.
Die folgenden Kapitel können als erste Ausgabe des E -Books betrachtet werden und bieten einen vollständigen Pfad von einem Arbeitsprogramm, bei dem Hardwarefunktionen verwendet werden.
- Kapitel 0: Einführung. Ein kurzes Intro in das Thema und das eBook.
- Kapitel 1: Setup. Ein kurzes Kapitel mit der Vorbereitung einer Linux -Umgebung für die Weiterentwicklung.
- Kapitel 2: Der erste Start. Grundlegende Verwendung von QEMU und Cross-Compiler Toolchain, wobei der einfachste Code ausgeführt wird.
- Kapitel 3: Hinzufügen eines Bootloaders. Erstellen Sie den beliebten U-Boot-Bootloader und lassen Sie ihn unseren eigenen Code booten.
- Kapitel 4: Vorbereitung einer C -Umgebung. Dieses Kapitel befasst sich mit den erforderlichen Arbeiten, um vom Start im Assembly -Code zum C -Code zu gelangen.
- Kapitel 5: Bau- und Debug -System. Hier zeigen wir, wie die Arbeit durch Hinzufügen eines CMake-basierten Build-Systems optimiert werden kann und wie das Bare-Metal-Programm debuggen werden kann.
- Kapitel 6: UART -Fahrerentwicklung. In diesem Kapitel wird ein Gerätetreiber für einen UART geschrieben.
- Kapitel 7: Interrupts. Das Kapitel erstellt den Generic Interrupt -Controller des Arms, um Interrupts zu empfangen und zu reagieren. Auch der UART -Treiber wird angepasst, um Interrupts zu verwenden.
- Kapitel 8 - WIP: Planung. In Arbeit arbeiten.
Repository -Struktur
Das Repository besteht aus zwei Ordnern der obersten Ebene. Der doc -Ordner enthält die tatsächlichen Tutorial -Kapitel. Der src -Ordner enthält den Quellcode, der jedem Kapitel entspricht. Zum Beispiel enthält SRC/04_CENV den Quellcode, der sich um das Fertigstellen von Kapitel 4 befasst.
Darüber hinaus hat der src -Ordner einige gemeinsame Dinge. src/common_uboot hält eine abgespeckte Version des in den Beispielen verwendeten U-Boots.
Viel Spaß und zögern Sie nicht, sich zu optimieren und zu experimentieren, das eine großartige Möglichkeit zu lernen!