725 views
Bare metal programming on a budget! Setting up a workplace for Bare-metal. Raspberry Pi 3B AArch64 A practical guide: How to write your first program without tools using only a text editor. It will be interesting for beginners, advanced users, and just people who are interested in computing technology. What is missing in the video. The commands for the program are in the section *C3.5 Data processing - immediate* [Arm Architecture Reference Manual for A-profile architecture] Introduction 0:56 Why this video was released 3:15 Setting up a workplace, tools, what and why. 4:15 Choosing GNU Compiler Collection 6:43 QEMU 7:15 VS Code and plugins 8:12 Setting up paths for tools 0:10:00 Checking the tools for operability 0:11:00 Features of starting QEMU 0:13:00 Starting and configuring gdb. Overview of the main problems when connecting. Main part. 15:36 Main part 2+2. Description of example limitations Before we begin. 16:54 Overview of AArch64 architecture features 18:15 General-purpose registers X0-X30, and others 22:20 Program algorithm and program. Explaining for a three-address command. 24:40 Briefly how to find the necessary commands in the manual section *C3.5 Data processing - immediate* 28:00 Explaining why these commands were chosen 28:30 Explanations for the translation why. 30:00 Command format, alignment. Data format. Registers. 33:50 Alignment, command width. (!) Why branching may not work. 36:45 Little-endian LSB scheme, command width. 39:40 Little-endian coding example. Communication with memory and offsets in a file. 41:30 Encoding a 16-bit value using the LSB scheme Translation 45:55 Translating the HLT command 47:30 Creating a template file that will contain the finished program 50:00 Directly encoding the command 53:00 Result of translating the first command 54:20 Checking the intermediate result 1:02:10 Translating the MOV command 1:04:10 A fresh look at translation methods 1:13:00 End of translation of the first command 1:13:40 Simplifying the translation of the second MOV command 1:14:25 Result after translating two commands 1:14:25 Checking the intermediate result 1:16:25 Translating the ADD command 1:23:50 Final result of the program translation 1:24:20 Checking the final result 1:25:15 What is 2+2? Final word 1:25:30 What was all this for? Resources, tutorials and tool links Repository with this text [Git Hub](https://github.com/Zer0cul/Aarch64-Ar...) Tools used [QEMU download](https://www.qemu.org/download/#windows) [QEMU for window 64](https://qemu.weilnetz.de/w64/) [Aarch64 GNU compiler collection](https://developer.arm.com/downloads/-...) Optional [Visual Studio Code](https://code.visualstudio.com/) Hex Editor plugin for VS Code identifier ms-vscode.hexeditor Manuals and references [Arm Architecture Reference Manual for A-profile architecture](https://developer.arm.com/documentati...) - Reference manual for architecture, in pdf format [Reference manual for instructions AArch64](https://developer.arm.com/documentati...) [Learn the architecture - A64 Instruction Set Architecture Guide](https://developer.arm.com/documentati...) - training commands with examples and tasks to test knowledge