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).

Logbücher
(neueste | älteste) Zeige ( | ) (20 | 50 | 100 | 250 | 500)
  • 15:59, 3. Jun. 2026 Satyria Diskussion Beiträge erstellte die Seite Datei:Lang1.png
  • 15:59, 3. Jun. 2026 Satyria Diskussion Beiträge lud Datei:Lang1.png hoch
  • 15:55, 3. Jun. 2026 Satyria Diskussion Beiträge erstellte die Seite Datei:Erw4.png
  • 15:55, 3. Jun. 2026 Satyria Diskussion Beiträge lud Datei:Erw4.png hoch
  • 15:55, 3. Jun. 2026 Satyria Diskussion Beiträge erstellte die Seite Datei:Erw3.png
  • 15:55, 3. Jun. 2026 Satyria Diskussion Beiträge lud Datei:Erw3.png hoch
  • 15:54, 3. Jun. 2026 Satyria Diskussion Beiträge erstellte die Seite Datei:Erw2.png
  • 15:54, 3. Jun. 2026 Satyria Diskussion Beiträge lud Datei:Erw2.png hoch
  • 15:54, 3. Jun. 2026 Satyria Diskussion Beiträge erstellte die Seite Datei:Erw1.png
  • 15:54, 3. Jun. 2026 Satyria Diskussion Beiträge lud Datei:Erw1.png hoch
  • 15:50, 3. Jun. 2026 Satyria Diskussion Beiträge erstellte die Seite Datei:Path3.png
  • 15:50, 3. Jun. 2026 Satyria Diskussion Beiträge lud Datei:Path3.png hoch
  • 15:49, 3. Jun. 2026 Satyria Diskussion Beiträge erstellte die Seite Datei:Path2.png
  • 15:49, 3. Jun. 2026 Satyria Diskussion Beiträge lud Datei:Path2.png hoch
  • 15:47, 3. Jun. 2026 Satyria Diskussion Beiträge erstellte die Seite Datei:Path1.png
  • 15:47, 3. Jun. 2026 Satyria Diskussion Beiträge lud Datei:Path1.png hoch
  • 07:28, 3. Jun. 2026 Satyria Diskussion Beiträge erstellte die Seite Professionelle GUI mit Debugging für Bare-Metal auf dem Raspberry Pi 5 (Die Seite wurde neu angelegt: „== Professionelle GUI mit Debugging für Bare-Metal auf dem Raspberry Pi 5 == Viele Entwickler wünschen sich eine professionelle Möglichkeit, die Bare-Metal-Entwicklung direkt in einer grafischen Benutzeroberfläche (GUI) zu realisieren. In dieser Anleitung zeige ich Ihnen, wie Sie eine solche Entwicklungsumgebung aufsetzen können. Als IDE (Integrated Development Environment) nutzen wir Visual Studio Code von Microsoft, das unter der Open-Source-Lizenz…“)
  • 11:34, 29. Mai 2026 Satyria Diskussion Beiträge erstellte die Seite Bare-Metal Debugging (Die Seite wurde neu angelegt: „== Raspberry Pi 4 == Die Verwendung der **Raspberry Pi Debug Probe** mit einem **Raspberry Pi 4** unter Windows 11 ist ein exzellenter Weg, um echtes Bare-Metal-Debugging zu betreiben. Da der Pi 4 im Gegensatz zum Pi 5 keinen dedizierten Debug-Port hat, müssen wir die **GPIO-Pins** dafür konfigurieren. Hier ist der Schritt-für-Schritt-Plan, um GDB zum Laufen zu bringen: --- ### 1. Hardware-Verbindung (SWD & UART) Die Debug Probe hat zwei Anschlüs…“)
  • 08:59, 8. Aug. 2025 Satyria Diskussion Beiträge erstellte die Seite Speicherverwaltung (PI4) (Die Seite wurde neu angelegt: „Speicherverwaltung“)
  • 06:29, 31. Jul. 2025 Satyria Diskussion Beiträge löschte die Seite Interrupt (PI4) (Inhalt war: „Eine neue "boot.S" mrs x1, mpidr_el1 //Lies den Inhalt des Systemregisters MPIDR_EL1 (Multiprocessor Affinity Register) und speichere ihn in Register x1. and x1, x1, #3 cbz x1, 2f 1: // Core 1-3 schlafen legen wfe b 1b Wir werden zunächst keine Multi-CPUs unterstützen. Damit der Raspberry Pi 4 nicht durcheinander kommt, verbieten wir die Ausführung der CPU 1-3. W…“. Einziger Bearbeiter: Satyria (Diskussion))
  • 09:40, 28. Jul. 2025 Satyria Diskussion Beiträge erstellte die Seite Interrupt Teil 2 (PI4) (Die Seite wurde neu angelegt: „Im vorhergehenden Kapitel haben wir einen Interrupt für den Timer erstellt. Dies ist zur Zeit auch der einzige, der in unserem System, welches wir entwickeln, zur Verfügung haben. Im nächsten Kapitel wird es dann aufwendig. Wir werden uns um den USB-Eingang kümmern und zunächst einen Treiber für die Tatstatur und anschließend noch auf Mausbewegungen reagieren. Dazu werden wir dann auch Interrupts benötigen, die ausgelöst werden, wenn jemand auf…“)
  • 07:45, 25. Jul. 2025 Satyria Diskussion Beiträge erstellte die Seite Beispiel Timer-Interrupt (PI4) (Die Seite wurde neu angelegt: „Nun versuchen wir, einen Timer-Interrupt zu erstellen und verwenden eine Vector-Tabelle, wie diese zuvor beschrieben wurde. Wir verzichten zunächst auf die Gleitkomma-Unterstützung. Wir verwenden die Vectortabelle aus der vorigen Beschreibung. Unterstützen allerdings nur "IRQs" und "Synchronous Exception". Andere Ausnahmen werden in eine Dauerschleife versetzt: <syntaxhighlight lang="asm"> .align 11 .globl VectorTable VectorTable: // Vektoren für EL1…“)
  • 07:53, 17. Jun. 2025 Satyria Diskussion Beiträge erstellte die Seite Datei:Logo hexenlaedle.png
  • 07:53, 17. Jun. 2025 Satyria Diskussion Beiträge lud Datei:Logo hexenlaedle.png hoch
  • 15:56, 19. Apr. 2025 Satyria Diskussion Beiträge erstellte die Seite Interrupt (PI4) (Die Seite wurde neu angelegt: „Du kannst den Source-Code als ZIP-Datei mit folgenden Link downloaden: https://www.satyria.de/arm/sources/RPI4/C/9.zip ----- {| style="width: 100%; | style="width: 33%;" | < Zurück (Systeminformationen (PI4)) | style="width: 33%; text-align:center;" | < Hauptseite > | style="width: 33%; text-align:right;" | Weiter (xyz) > |}“)
  • 08:27, 19. Apr. 2025 Satyria Diskussion Beiträge erstellte die Seite Systeminformationen (PI4) (Die Seite wurde neu angelegt: „Du kannst den Source-Code als ZIP-Datei mit folgenden Link downloaden: https://www.satyria.de/arm/sources/RPI4/C/8.zip“)
  • 07:56, 16. Apr. 2025 Satyria Diskussion Beiträge erstellte die Seite Interrupts (PI4) (Die Seite wurde neu angelegt: „Was sind Interrupts“)
  • 10:23, 11. Apr. 2025 Satyria Diskussion Beiträge erstellte die Seite Sprungadressen (Labels) (Die Seite wurde neu angelegt: „= Labels im ARM64-Assembler = Labels sind **Bezeichner für Adressen** im Code oder in den Datenabschnitten. Sie dienen vor allem dazu, Sprünge, Verzweigungen und Datenzugriffe lesbar und wartbar zu gestalten. Es gibt zwei Hauptarten von Labels: == 1. Benannte Labels == Ein benannter Label ist ein selbstgewählter Name, der mit einem Doppelpunkt abgeschlossen wird: <syntaxhighlight lang="asm"> loop_start: // Anweisungen b loop_start // Sp…“)
  • 19:05, 8. Apr. 2025 Satyria Diskussion Beiträge erstellte die Seite Übersicht der Fehlercodes (Die Seite wurde neu angelegt: „{| class="wikitable" |+ Übersicht der Fehlercodes |- ! Fehlercode !! Kurzname !! Bedeutung |- | 1 || EPERM || Vorgang nicht zulässig |- | 2 || ENOENT || Datei oder Verzeichnis nicht gefunden |- | 3 || ESRCH || Kein solcher Prozess |} #define EPERM 1 Vorgang nicht zulässig: #define ENOENT 2 No such file or directory: #define ESRCH 3 No such process: #define EINTR 4 Interrupted system call: #define EIO 5 I/O error: #de…“)
  • 09:03, 8. Apr. 2025 Satyria Diskussion Beiträge erstellte die Seite NEON Coprozessor (Die Seite wurde neu angelegt: „== NEON Coprozessor == Der NEON-Coprozessor, der in ARM64-Prozessoren integriert ist, bietet erweiterte SIMD (Single Instruction, Multiple Data)-Fähigkeiten. Diese ermöglichen es, mehrere Datenpunkte mit einer einzigen Anweisung zu verarbeiten, was die Leistung bei bestimmten Arten von Berechnungen erheblich steigert. NEON-Coprozessor: Überblick Architektur und Integration: SIMD-Fähigkeiten: NEON erweitert die ARMv8-A-Architektur (auch bekannt als A…“)
  • 08:48, 8. Apr. 2025 Satyria Diskussion Beiträge erstellte die Seite Makros in Assembler (Die Seite wurde neu angelegt: „== Makros == .macro Name übergabe1,übergabe2,... Beispiel: .macro speicher wert1,wert2 ldr x0,=\wert1 ldr x1,=\wert2 .endm .global _start _start: speicher buffer1,buffer2 ... .data buffer1: .fill 255,1,0 buffer2: .fill 255,1,0 Beim Aufruf "speicher" wird an dieser Stelle des Codes einfach das Makro eingesetzt. Das definieren des Makros erzeugt keinen Code!“)
  • 07:56, 8. Apr. 2025 Satyria Diskussion Beiträge erstellte die Seite Direktiven (Die Seite wurde neu angelegt: „* .data -> Dezimalzahl: Beginnt mit 1-9 und enthält 0-9 -> Oktalzahl: Beginnt mit 0 und enthält 0-7 -> Binärzahl: Beginnt mit 0b und enthält 0-1 -> Hexadezimal: Beginnt mit 0x und enthält 0-f -> Gleitkommawerte: Beginnt mit 0f oder 0e und enthält die Gleitkomma-Zahl -> Präfix: "-" nimmt das Zweierkomplement, "~" nimmt das Einerkompliment .byte -0xa3, -22, ~0b11010010 Directive Beschreibung .ascii Eine Zeichenfolge in doppelten Anführungszeichen…“)
  • 07:50, 8. Apr. 2025 Satyria Diskussion Beiträge erstellte die Seite Logische Operatoren (Die Seite wurde neu angelegt: „and{s} Xd, Xs, Operand2 eor{s} Xd, Xs, Operand2 orr{s} Xd, Xs, Operand2 bic{s} Xd, Xs, Operand2 | and | eor | orr | bic | Xs | 1100 | 1100 | 1100 | 1100 | Operand2 | 1010 | 1010 | 1010 | 1010 | Ergebnis | 1000 | 0110 | 1110 | 0100 | * CMN Xn, Operand2 -> addiert Operand2 von Xn * TST Xn, Operand2 -> Bitweise AND von Operand2 und Xn“)
  • 07:47, 8. Apr. 2025 Satyria Diskussion Beiträge erstellte die Seite Aliase (Die Seite wurde neu angelegt: „== Aliase == -> Verwendung von Aliase, um den Code besser zu verstehen, Problem beim debuggen, objdump, da eventuell andere Aliases verwendet werden. Die von dir beobachtete Diskrepanz resultiert aus dem Unterschied zwischen der **Assembly-Syntax** und der tatsächlichen **Maschinencodierung** sowie der Art und Weise, wie `objdump` und der Assembler die Befehle interpretieren. Lass uns das Schritt für Schritt erklären: --- ### **1. ARM64-Befehlsalias…“)
  • 07:45, 8. Apr. 2025 Satyria Diskussion Beiträge erstellte die Seite Shiften und Rotation (Die Seite wurde neu angelegt: „ mov x0, #0b00000011 // Lege 3 nach x0 (GDB p /t $x0) lsl x0,x0,#4 // -> 00110000 In der ARM64-Assemblerprogrammierung spielen Shift- und Rotationsoperationen sowie der Umgang mit dem Carry-Flag eine wichtige Rolle für die Manipulation von Bits in Registern. Hier ist eine detaillierte Übersicht: --- ### **1. Shiften (Bitverschiebung)** #### **Logical Shift Left (LSL)** - Verschiebt die Bits eines Registers nach links. -…“)
  • 07:43, 8. Apr. 2025 Satyria Diskussion Beiträge erstellte die Seite Big vs. Little Endian (Die Seite wurde neu angelegt: „== Big vs. Little Endian == -> Reihenfolge der Bytes im Speicher -> ARM-Prozessor erlaubt beide Versionen -> Linux verwendet Little Endian“)
  • 07:39, 8. Apr. 2025 Satyria Diskussion Beiträge erstellte die Seite Diassemblieren (Die Seite wurde neu angelegt: „== Diassemblieren == -> objdump -s -d HelloWorld.o > HelloWorld.diassem Hello.o: file format elf64-littleaarch64 Contents of section .text: 0000 200080d2 e1000058 a20180d2 080880d2 ......X........ 0010 010000d4 000080d2 a80b80d2 010000d4 ................ 0020 00000000 00000000 ........ Contents of section .data: 0000 48656c6c 6f20576f 726c6421 0a Hello World!. Disassembly of section .text: 000000000000…“)
  • 11:58, 7. Apr. 2025 Satyria Diskussion Beiträge erstellte die Seite Gleitkommaoperationen (Die Seite wurde neu angelegt: „In diesem Kapitel werden wir uns mit Gleitkommaoperationen im ARM64-Assembler beschäftigen. Die Schwerpunkte liegen auf den FPU-Registern (Floating Point Unit), einem Überblick über die Register und deren Verwendung in Funktionen. Ebenso werden wichtige Hinweise zur Verwendung der Register für Gleitkommaoperationen gegeben. == FPU-Register: Überblick == Unter ARM64 haben wir eine dedizierte Einheit für Gleitkommaoperationen, die sogenannte FPU (Fl…“)
  • 11:39, 7. Apr. 2025 Satyria Diskussion Beiträge erstellte die Seite Interaktion mit C (Die Seite wurde neu angelegt: „In diesem Kapitel werden wir die Integration von ARM64-Bit-Assembler und C-Programmen beleuchten. Die folgenden Themen werden behandelt: * C-Funktionen aus Assembler aufrufen * Assemblerfunktionen in C aufrufen * Inline-Assembler in C * Bibliotheken verwenden * C-Funktionen aus Assembler aufrufen == C-Funktionen aus Assembler aufrufen == Um C-Funktionen aus Assembler heraus aufzurufen, müssen Sie die folgenden Schritte beachten: * Deklaration der C-F…“)
  • 09:38, 7. Apr. 2025 Satyria Diskussion Beiträge erstellte die Seite GPIO Programmierung (Die Seite wurde neu angelegt: „GPIO-Programmierung mit ARM64-Bit-Assembler In diesem Kapitel werden wir uns mit der GPIO-Programmierung (General Purpose Input/Output) auf dem Raspberry Pi beschäftigen. Dazu besprechen wir: Grundlagen der GPIO-Programmierung Direkte Steuerung der GPIO-Pins Besondere Register und Konfiguration Grundlagen der GPIO-Programmierung GPIO steht für "General Purpose Input/Output" und bezieht sich auf die universell einsetzbaren Pins auf dem Raspberry Pi, d…“)
  • 13:39, 3. Apr. 2025 Satyria Diskussion Beiträge erstellte die Seite Übersicht der Linux ARM64 Systemaufrufen (Die Seite wurde neu angelegt: „https://gvisor.dev/docs/user_guide/compatibility/linux/arm64/ # Name 0 io_setup 1 io_destroy 2 io_submit 3 io_cancel 4 io_getevents 5 setxattr 6 lsetxattr 7 fsetxattr 8 getxattr 9 lgetxattr 10 fgetxattr 11 listxattr 12 llistxattr 13 flistxattr 14 removexattr 15 lremovexattr 16 fremovexattr 17 getcwd 18 lookup_dcookie 19 eventfd2 20 epoll_create1 21 epoll_ctl 22 epoll_pwait 23 dup 24 dup3 25 fcntl 26 inotify_init1 27 inotify_add_watch 28 inotify…“)
  • 13:14, 3. Apr. 2025 Satyria Diskussion Beiträge erstellte die Seite Systemaufrufe (Die Seite wurde neu angelegt: „Systemaufrufe In diesem Kapitel werden wir uns mit Systemaufrufen unter Linux beschäftigen. Insbesondere werden wir: Eine Einführung in Linux-Systemaufrufe geben, Grundlegende Systemaufrufe wie exit, read, write, open und close kennenlernen und Erklären, wie Parameter übergeben und Rückgabewerte entgegengenommen werden. Einführung in Linux-Systemaufrufe Systemaufrufe sind Schnittstellen, die es Programmen ermöglichen, Dienste und Funktionen des…“)
  • 12:35, 3. Apr. 2025 Satyria Diskussion Beiträge erstellte die Seite Funktionen und Stack (Die Seite wurde neu angelegt: „Funktionen und Stack In diesem Kapitel werden wir uns mit der Erstellung und Verwendung von Funktionen im ARM64-Assembler beschäftigen. Insbesondere werden wir uns mit den folgenden Themen befassen: Funktion aufrufen und Rückkehr Funktionsparameter und Rückgabewerte Verwendung des Stacks für lokale Variablen und Funktionsaufrufe Regeln für das Aufrufen von Funktionen (AAPCS) Funktion aufrufen und Rückkehr Eine Funktion im ARM64-Assembler wird dur…“)
  • 12:42, 1. Apr. 2025 Satyria Diskussion Beiträge erstellte die Seite General Purpose I/O(e) (Die Seite wurde neu angelegt: „In this chapter, I will discuss the GPIO pins that the Raspberry Pi can use for communication with the outside world. Ideally, a pin is connected to an LED on the board so that we can initially forego external hardware and effectively see a result. Among bare-metal programmers, this is closest to a "Hello World" program. In the first subchapter, we will make the LED blink. In the next one, we will try to bring some structure to the source code and then im…“)
  • 12:17, 1. Apr. 2025 Satyria Diskussion Beiträge erstellte die Seite The First Program (Die Seite wurde neu angelegt: „Our first program will initially do nothing; it will simply run an infinite loop. We use it as a foundational building block to create all further experiments. I will first describe how such a program is created, what peculiarities there are, how it is compiled, and then how it is executed. == Creating the Source Code == First, we open our text editor to write our first assembly program. <syntaxhighlight lang="asm"> /* The first program 13.10.2020 www.s…“)
  • 12:06, 1. Apr. 2025 Satyria Diskussion Beiträge erstellte die Seite System Programming / Bare Metal (Die Seite wurde neu angelegt: „In this course, we will focus on system programming for a Raspberry Pi. I will repeatedly emphasize that we have to program everything from the ground up, and fundamentally, the system knows nothing except where certain functions lie within the Raspberry's address space. These functions, referred to as registers on the Raspberry Pi, directly interact with the hardware. Certain values stored there directly interface with the hardware. We can use these regi…“)
  • 11:27, 31. Mär. 2025 Satyria Diskussion Beiträge erstellte die Seite Bare-Metal Debugging with JTAG and RPI 4 (Die Seite wurde neu angelegt: „Introduction: When developing software, a debugger is often needed to find and fix errors. A common debugger is GDB. As long as the program can be started from an environment like Linux or Windows, this debugger can be used directly. However, in bare-metal development, things are somewhat more challenging because the usual operating system environment is absent. In such cases, emulators or special hardware solutions are necessary. Since emulators usually…“)
  • 14:33, 13. Mär. 2025 Satyria Diskussion Beiträge erstellte die Seite Programmierumgebung erstellen unter Linux (Die Seite wurde neu angelegt: „HIer ist eine Anleitung, wie es hier im Beispiel unter Linux Mint funktioniert. Ich habe hierfür Linux Mint in der Version 22.1 verwendet. Zunächst sollte das System auf den aktuellen Stand sein. Dazu wird die Aktualiesierungverwaltung verwendet. Crosscompiler installieren: apt://gcc-aarch64-linux-gnu“)
  • 13:16, 11. Mär. 2025 Satyria Diskussion Beiträge löschte die Seite Allzweckregister, Nullregister und Stapelzeiger (Inhalt war: „Die 31 Allzweckregister werden R0-R30 genannt. Das Register R31 ist ein spezielles Register, das entweder den aktuellen Stapelzeiger (Stack Pointer, SP) oder das Nullregister (Zero Register, ZR) darstellt, abhängig vom Kontext der Verwendung. Wenn die Register in einer bestimmten Befehlsvariante verwendet werden, müssen sie qualifiziert sein, um die Operandendaten- und Befeh…“. Einziger Bearbeiter: Satyria (Diskussion))
  • 20:41, 9. Mär. 2025 Satyria Diskussion Beiträge erstellte die Seite Datei:Verbindung.png
(neueste | älteste) Zeige ( | ) (20 | 50 | 100 | 250 | 500)