Alle öffentlichen Logbücher
Aus C und Assembler mit Raspberry
Dies ist die kombinierte Anzeige aller in C und Assembler mit Raspberry geführten Logbücher. Die Ausgabe kann durch die Auswahl des Logbuchtyps, des Benutzers oder des Seitentitels eingeschränkt werden (Groß-/Kleinschreibung muss beachtet werden).
- 09:35, 22. Aug. 2024 Satyria Diskussion Beiträge erstellte die Seite General Purpose I/O (Die Seite wurde neu angelegt: „General Purpose I/O“)
- 09:35, 22. Aug. 2024 Satyria Diskussion Beiträge erstellte die Seite Das erste Programm (Die Seite wurde neu angelegt: „Das erste Programm“)
- 09:27, 22. Aug. 2024 Satyria Diskussion Beiträge erstellte die Seite Setting up the Programming Environment (32-Bit) (Die Seite wurde neu angelegt: „== Installing the GNU Toolchain == The GNU Toolchain can be downloaded directly from ARM: https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads There is only a 32-bit version available, but this does not affect us. Download the ZIP file. none|400px === Downloading and Extracting the Toolchain === Go to your download directory, select the ZIP file, and right-click on it. Choose "Extract All…". === Selecting th…“)
- 13:29, 21. Aug. 2024 Satyria Diskussion Beiträge erstellte die Seite Using printf in C (PI5) (Die Seite wurde neu angelegt: „printf“)
- 13:29, 21. Aug. 2024 Satyria Diskussion Beiträge erstellte die Seite The Terminal in C (PI5) (Die Seite wurde neu angelegt: „The Terminal“)
- 13:20, 21. Aug. 2024 Satyria Diskussion Beiträge erstellte die Seite Chars in C (PI5)e (Die Seite wurde neu angelegt: „== Drawing Characters on the Raspberry Pi == After we have implemented a function to set individual pixels, we now want to teach the Raspberry Pi to display text on the screen. Texts consist of characters that the computer does not inherently know. Similar to a human, the computer must first "learn" what each character looks like before it can display it. These characters are defined in a specific code that the computer understands. One of the most widely…“)
- 12:59, 21. Aug. 2024 Satyria Diskussion Beiträge erstellte die Seite Our First Program in C (PI5) (Die Seite wurde neu angelegt: „Our first program will initially do nothing. It will simply run an infinite loop. This serves as a basic building block for all further experiments. I will explain how to create, compile, and run such a program. First, let's check if everything works. == Creating the Source Code == Unfortunately, when working with BareMetal, we can't avoid using Assembly language, even though the Assembly program doesn't do much at the moment. It will be needed later, fo…“)
- 19:59, 20. Aug. 2024 Satyria Diskussion Beiträge erstellte die Seite Unser erstes Programm in C (PI5) (Die Seite wurde neu angelegt: „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 s…“)
- 12:16, 19. Aug. 2024 Satyria Diskussion Beiträge erstellte die Seite Printf in BareMetal (PI5) (Die Seite wurde neu angelegt: „Printf in BareMetal“)
- 10:54, 19. Aug. 2024 Satyria Diskussion Beiträge erstellte die Seite Das Terminal in C (PI5) (Die Seite wurde neu angelegt: „### Das Terminal Nachdem wir nun Zeichen auf den Bildschirm anzeigen können, werden wir ein Terminal bauen. Ein Terminal ist ein Bereich auf dem Bildschirm, in dem Texte angezeigt werden können und später auch Eingaben erfolgen können. Ein Beispiel für ein Terminal ist die Eingabeaufforderung, die beim Starten von Linux erscheint. #### Wie sieht ein Terminal aus? Zuerst müssen wir uns überlegen, wie das Terminal aussehen soll. Da wir die Bildsch…“)
- 06:32, 19. Aug. 2024 Satyria Diskussion Beiträge erstellte die Seite Chars in C (PI5) (Die Seite wurde neu angelegt: „== Zeichnen von Zeichen auf dem Raspberry Pi == Nachdem wir eine Funktion zum Setzen einzelner Pixel implementiert haben, möchten wir nun dem Raspberry Pi beibringen, Text auf dem Bildschirm anzuzeigen. Texte bestehen aus Schriftzeichen, die der Computer nicht von Natur aus kennt. Ähnlich wie ein Mensch muss der Computer zunächst "lernen", wie jedes einzelne Zeichen aussieht, bevor er es darstellen kann. Diese Zeichen sind in einem bestimmten Code defi…“)
- 12:46, 13. Aug. 2024 Satyria Diskussion Beiträge erstellte die Seite Error Handling in C (PI5) (Die Seite wurde neu angelegt: „Since we currently don't have a way to display information directly to us, we'll use the LED to indicate when something goes wrong. To do this, we’ll create a function that displays an error code using the LED. We will extend our "led.c" code with the following function: <syntaxhighlight lang="C"> void LED_Error(u32 errorcode) { while (TRUE) { for (u32 z = 0; z < errorcode; z++) { LED_on(); // Turn the LED on…“)
- 12:34, 13. Aug. 2024 Satyria Diskussion Beiträge erstellte die Seite Fehlerbehandlung in C (PI5) (Die Seite wurde neu angelegt: „Da wir bisher keine Möglichkeit haben, Informationen bewusst an uns zu senden, nutzen wir nun die LED, um festzustellen, wenn etwas schiefgeht. Dazu erstellen wir eine Funktion, die über die LED einen Fehlercode anzeigen kann. Wir erweitern dazu unseren "led.c" Code mit dieser Funktion: <syntaxhighlight lang="C"> void LED_Error(u32 errorcode) { while (TRUE) { for (u32 z = 0; z < errorcode; z++) { LED_on(); // LED…“)
- 10:18, 13. Aug. 2024 Satyria Diskussion Beiträge erstellte die Seite Chars (PI5)e (Die Seite wurde neu angelegt: „English Chars“)
- 07:38, 13. Aug. 2024 Satyria Diskussion Beiträge erstellte die Seite Graphics in C (PI5) (Die Seite wurde neu angelegt: „Vorab:“)
- 13:20, 12. Aug. 2024 Satyria Diskussion Beiträge erstellte die Seite Making the LED Blink in C (PI5) (Die Seite wurde neu angelegt: „Our current goal is to make the built-in LED of the Raspberry Pi blink. I will explain each step and why it has been implemented this way in this project. === Preparing the Directory === First, create a new directory, e.g., LED, and place the Makefile and the linker.ld file in it. Also, create the include directory within LED to organize our header files. === Programming the Startup Behavior of the Raspberry Pi === Unfortunately, we cannot completely…“)
- 09:44, 23. Jul. 2024 Satyria Diskussion Beiträge erstellte die Seite Graphics (PI5) (Die Seite wurde neu angelegt: „'''Note:''' On the Raspberry Pi 5, graphics have undergone significant changes, making it more challenging for BareMetal developers to program graphics correctly. There has already been a discussion on GitHub regarding this: Raspberry Pi Firmware Issue #1904. '''I am not pleased with this development or decision!''' Nevertheless, I managed to implement a display on the Raspberry Pi 5 that is functional. Unlike previous models, the screen is set in the c…“)
- 09:18, 23. Jul. 2024 Satyria Diskussion Beiträge erstellte die Seite Error Handling (Die Seite wurde neu angelegt: „Since we currently have no means to send information to ourselves consciously, we will use the LED to indicate when something goes wrong. To achieve this, we will create a function that can display an error code using the LED. We will extend our '''led.s''' code with this function: <syntaxhighlight lang="asm"> .globl LED_Error // In w0 = Error code LED_Error: mov w10, w0 // Save w0 as the function "wait" uses w0 as a timer 1: mov w11,…“)
- 07:48, 12. Jul. 2024 Satyria Diskussion Beiträge erstellte die Seite Lass die LED leuchten in C (PI5) (Die Seite wurde neu angelegt: „Unser jetziges Ziel ist es, die fest eingebaute LED des Raspberry Pi zum Blinken zu bringen. Ich werde jeden Schritt erklären, warum er in diesem Projekt so implementiert wurde. === Vorbereitung des Verzeichnisses === Erstelle zunächst ein neues Verzeichnis, z.B. LED, und platziere darin das Makefile und die Datei linker.ld. Erzeuge auch das Verzeichnis include innerhalb von LED, um unsere Header-Dateien zu organisieren. === Programmierung des Startv…“)
- 07:26, 12. Jul. 2024 Satyria Diskussion Beiträge erstellte die Seite Grafik in C (PI5) (Die Seite wurde neu angelegt: „Vorab: Auf dem Raspberry Pi 5 hat sich in Sachen Grafik einiges geändert, was es für BareMetal-Entwickler schwieriger macht, die Grafik richtig zu programmieren. Dazu gab es bereits eine Diskussion auf GitHub: [https://github.com/raspberrypi/firmware/issues/1904 Raspberry Pi Firmware Issue #1904]. Diese Entwicklung oder Entscheidung gefällt mir nicht! Dennoch habe ich es geschafft, eine Anzeige auf dem Raspberry Pi 5 zu implementieren, die funktional…“)
- 19:59, 6. Jul. 2024 Satyria Diskussion Beiträge erstellte die Seite Making the LED Blink (PI5) (Die Seite wurde neu angelegt: „With the previously created Makefile and linker script, we have established a foundation to develop a meaningful program. Our goal is to make the built-in LED of the Raspberry Pi blink. I will explain each step and why it is implemented in this project. === Directory Preparation === First, create a new directory, for example, LED, and place the Makefile and the linker.ld file in it. Also, create the "include" directory within LED to organize our header…“)
- 19:32, 6. Jul. 2024 Satyria Diskussion Beiträge erstellte die Seite Working with Make and Linker Script (Die Seite wurde neu angelegt: „In this section, we will learn how to develop an operating system on the Raspberry Pi 5 by creating multiple source files and linking them with a linker. We will also use a Makefile to automate the build process. Additionally, we will cover C and C++. === Creating a Makefile === A Makefile helps us automate the build process and keep track of our files. Here is an example Makefile: <syntaxhighlight lang="shell"> CSRCS := $(wildcard *.c) CPPSRCS := $(wildc…“)
- 19:25, 6. Jul. 2024 Satyria Diskussion Beiträge erstellte die Seite Running the Program on the Raspberry Pi 5 (Die Seite wurde neu angelegt: „== Preparing the SD Card == To create a bootable SD card for the Raspberry Pi 5, we first need an SD card formatted in FAT32. === Downloading the File === Download the following file from this GitHub repository https://github.com/raspberrypi/firmware/tree/master/boot: *bcm2712-rpi-5-b.dtb === Copying the File to the SD Card === Copy the downloaded file to the SD card. === Creating config.txt === Create a file named config.txt on the SD card and add th…“)
- 19:22, 6. Jul. 2024 Satyria Diskussion Beiträge erstellte die Seite Our First Program (PI5) (Die Seite wurde neu angelegt: „Our first program will initially do nothing. It will simply run an infinite loop. This serves as a basic building block for all further experiments. I will explain how to create, compile, and run such a program. First, let's check if everything works. === Creating the Source Code === Open a text editor to write our first Assembly program: <syntaxhighlight lang="GAS"> // // The first program // 01.07.2024 www.satyria.de // .section .init // Ensure the link…“)
- 19:19, 6. Jul. 2024 Satyria Diskussion Beiträge erstellte die Seite Introduction to C and Assembly Programming with the Raspberry Pi 5 (Die Seite wurde neu angelegt: „In this tutorial, we will cover some topics not described in the previous script for the Raspberry Pi 4. Creating an operating system requires various functions. For example, we need to set up memory management and handle interrupts. Interaction via a USB interface can also be complicated. Later on, we will introduce disk operations, launching additional programs written for this operating system, and more. === Why C and Assembly? === Although the focus o…“)
- 19:17, 6. Jul. 2024 Satyria Diskussion Beiträge erstellte die Seite Setting up the Programming Environment (64-Bit) (Die Seite wurde neu angelegt: „== Installing the GNU Toolchain == The GNU Toolchain can be downloaded directly from ARM: https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads There is only a 32-bit version available, but this does not affect us. Download the ZIP file. none|400px === Downloading and Extracting the Toolchain === Go to your download directory, select the ZIP file, and right-click on it. Choose "Extract All…". === Selecting th…“)
- 12:50, 5. Jul. 2024 Satyria Diskussion Beiträge erstellte die Seite Setting up the Programming Environment (Console) (Die Seite wurde neu angelegt: „To create programs, it is essential to establish a suitable programming environment where both programming and compiling are possible. In the following sections, I will explain how to set up such an environment. It is generally possible to program directly on the Raspberry Pi. For this, an operating system must be installed to serve as a development environment. However, this can be challenging when it comes to writing an SD card for the self-created ke…“)
- 12:40, 5. Jul. 2024 Satyria Diskussion Beiträge erstellte die Seite Basics of Assembly (Die Seite wurde neu angelegt: „Assembler is a programming language designed for the specific instruction set of a particular processor. This programming language was developed by Nathaniel Rochester between 1948 and 1950 and represents the second generation of processor programming. Previously, programming had to be done with very obscure numeric codes. Assembler code is more readable than the binary codes of machine language. Commands and their operators are represented in text form.…“)
- 12:37, 5. Jul. 2024 Satyria Diskussion Beiträge erstellte die Seite Preface (Die Seite wurde neu angelegt: „For ARM assembly, there isn't much available yet. Even on the internet, it’s not as easy to find as one might think. But why ARM assembly? The ARM instruction set is used in many devices: in most smartphones and tablet computers as well as in embedded systems. And just now, as I write this, a press release announced that the new Apple MAC will receive a processor that uses this instruction set. Why that is, I will reveal later. Many people wonder why o…“)
- 12:07, 5. Jul. 2024 Satyria Diskussion Beiträge erstellte die Seite English (Die Seite wurde neu angelegt: „== <strong>ARM Assembly Programming with the Raspberry Pi</strong> == frameless|300x300px Matthias Steiner Satyria Press © 2020-2024 == Content == *Preface *Basics of Assembly **The ARM Assembler *Setting up the Programming Environment (Console) == Raspberry Pi 5 == *Setting up the Programming Environment (64-Bit) *Introduction to C and Assembly Programming with the R…“)
- 12:01, 5. Jul. 2024 Satyria Diskussion Beiträge erstellte die Seite Chars (PI5) (Die Seite wurde neu angelegt: „Chars“)
- 10:07, 4. Jul. 2024 Satyria Diskussion Beiträge erstellte die Seite Grafik (PI5) (Die Seite wurde neu angelegt: „Die Grafik“)
- 16:53, 3. Jul. 2024 Satyria Diskussion Beiträge erstellte die Seite Fehlerbehandlung (Die Seite wurde neu angelegt: „Da wir bisher keine Möglichkeit haben, Informationen bewusst an uns zu senden, nutzen wir nun die LED, um festzustellen, wenn etwas schiefgeht. Dazu erstellen wir eine Funktion, die über die LED einen Fehlercode anzeigen kann. Wir erweitern dazu unseren '''led.s''' Code mit dieser Funktion: <syntaxhighlight lang="asm"> .globl LED_Error // In w0 = Fehlercode LED_Error: mov w10, w0 // Da die Funktion "wait" w0 als Zeit verwendet, müssen wir w0 zu…“)
- 07:35, 3. Jul. 2024 Satyria Diskussion Beiträge erstellte die Seite Lass die LED leuchten (PI5) (Die Seite wurde neu angelegt: „Mit den zuvor erstellten Makefile und Linker-Script haben wir eine Basis geschaffen, um ein sinnvolles Programm zu entwickeln. Unser Ziel ist es, die fest eingebaute LED des Raspberry Pi zum Blinken zu bringen. Ich werde jeden Schritt erklären, warum er in diesem Projekt so implementiert wurde. === Vorbereitung des Verzeichnisses === Erstelle zunächst ein neues Verzeichnis, z.B. LED, und platziere darin das Makefile und die Datei linker.ld. Erzeuge au…“)
- 19:29, 2. Jul. 2024 Satyria Diskussion Beiträge erstellte die Seite Arbeiten mit Make und Linker-Script (Die Seite wurde neu angelegt: „In diesem Abschnitt werden wir lernen, wie man ein Betriebssystem auf dem Raspberry Pi 5 entwickelt, indem wir mehrere Source-Dateien erstellen und mit dem Linker verknüpfen. Wir werden auch ein Makefile verwenden, um den Build-Prozess zu automatisieren. Zusätzlich werden wir auf C und C++ eingehen. === Ein Makefile erstellen === Ein Makefile hilft uns, den Build-Prozess zu automatisieren und den Überblick über unsere Dateien zu behalten. Hier ist ein…“)
- 19:05, 2. Jul. 2024 Satyria Diskussion Beiträge erstellte die Seite Programm auf dem Raspberry Pi 5 ausführen (Die Seite wurde neu angelegt: „== SD-Karte vorbereiten == Um eine bootfähige SD-Karte für den Raspberry Pi 5 zu erstellen, benötigen wir zunächst eine SD-Karte, die im FAT32-Format formatiert ist. === Dateien herunterladen === Laden Sie die folgenden Dateien von diesem GitHub-Repository https://github.com/raspberrypi/firmware/tree/master/boot herunter: *bcm2712-rpi-5-b.dtb *bootcode.bin *fixup.dat *start.elf === Dateien auf die SD-Karte kopieren === Kopieren Sie die heruntergela…“)
- 15:37, 2. Jul. 2024 Satyria Diskussion Beiträge erstellte die Seite Unser erstes Programm (PI5) (Die Seite wurde neu angelegt: „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 === Öffnen Sie ein Textprogramm, um unser erstes Assemblerprogramm zu schreiben: <syntaxhighlight lang="asm"> // // The first program // 01.07.…“)
- 15:30, 2. Jul. 2024 Satyria Diskussion Beiträge erstellte die Seite Einführung in C- und Assemblerprogrammierung mit dem Raspberry Pi 5 (Die Seite wurde neu angelegt: „In diesem Tutorial werden wir einige Dinge behandeln, die im vorhergehenden Skript für den Raspberry Pi 4 nicht beschrieben wurden. Um ein Betriebssystem zu erstellen, sind verschiedene Funktionen notwendig. Beispielsweise müssen wir eine Speicherverwaltung einrichten und uns mit Interrupts befassen. Auch die Interaktion über eine USB-Schnittstelle kann kompliziert sein. Später werden wir Disk-Operationen einführen, das Starten von zusätzlichen Prog…“)
- 15:18, 2. Jul. 2024 Satyria Diskussion Beiträge erstellte die Seite Programmierumgebung erstellen (64-Bit) (Die Seite wurde neu angelegt: „== Installation der GNU Toolchain == Die GNU Toolchain kann direkt bei ARM heruntergeladen werden: https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads Es gibt zwar nur eine 32-Bit-Version, aber das spielt für uns keine Rolle. Laden Sie die ZIP-Datei herunter. none|400px === Herunterladen und Extrahieren der Toolchain === Gehen Sie in Ihr Download-Verzeichnis, markieren Sie die ZIP-Datei und klicken Sie mit d…“)
- 15:18, 2. Jul. 2024 Satyria Diskussion Beiträge erstellte die Seite Datei:Verzeichnis64Bit.png
- 15:18, 2. Jul. 2024 Satyria Diskussion Beiträge lud Datei:Verzeichnis64Bit.png hoch
- 15:13, 2. Jul. 2024 Satyria Diskussion Beiträge erstellte die Seite Datei:Toolchain64-Bit.png
- 15:13, 2. Jul. 2024 Satyria Diskussion Beiträge lud Datei:Toolchain64-Bit.png hoch
- 15:12, 2. Jul. 2024 Satyria Diskussion Beiträge erstellte die Seite Programmierumgebung erstellen (32-Bit) (Die Seite wurde neu angelegt: „== Installation der GNU Toolchain == Die GNU Toolchain kann direkt bei ARM heruntergeladen werden: https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads Es gibt zwar nur eine 32-Bit-Version, aber das spielt für uns keine Rolle. Laden Sie die ZIP-Datei herunter. none|400px === Herunterladen und Extrahieren der Toolchain === Gehen Sie in Ihr Download-Verzeichnis, markieren Sie die ZIP-Datei und klicken Sie mit de…“)
- 15:11, 2. Jul. 2024 Satyria Diskussion Beiträge erstellte die Seite Datei:Verzeichnis32Bit.png
- 15:11, 2. Jul. 2024 Satyria Diskussion Beiträge lud Datei:Verzeichnis32Bit.png hoch
- 15:10, 2. Jul. 2024 Satyria Diskussion Beiträge erstellte die Seite Datei:Toolchain32-Bit.png
- 15:10, 2. Jul. 2024 Satyria Diskussion Beiträge lud Datei:Toolchain32-Bit.png hoch
- 14:59, 2. Jul. 2024 Satyria Diskussion Beiträge erstellte die Seite Datei:Msys6.png
- 14:59, 2. Jul. 2024 Satyria Diskussion Beiträge lud Datei:Msys6.png hoch