# rust-embedded/rust-raspberrypi-OS-tutorials

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/rust-embedded-rust-raspberrypi-os-tutorials).**

14,682 stars · 873 forks · Rust · Apache-2.0

## Links

- GitHub: https://github.com/rust-embedded/rust-raspberrypi-OS-tutorials
- awesome-repositories: https://awesome-repositories.com/repository/rust-embedded-rust-raspberrypi-os-tutorials.md

## Topics

`aarch64` `arm64` `armv8` `bare-metal` `embedded-rust` `kernel` `operating-system` `os` `raspberry` `raspberry-pi` `raspberry-pi-3` `raspberry-pi-4` `rpi3` `rpi4` `rust` `tutorial`

## Description

This project is an educational resource for developing bare-metal operating systems and kernels from scratch on Raspberry Pi hardware. It provides a structured guide to systems programming using the Rust language, focusing on the implementation of core kernel components that execute directly on ARM-based hardware without the support of an underlying operating system or standard library.

The tutorials emphasize a modular architecture that separates hardware-independent kernel logic from processor-specific and board-specific configurations. By utilizing a hardware abstraction layer and distinct namespaces for device drivers and memory maps, the project demonstrates how to maintain clean code separation while interfacing directly with system registers and peripherals.

The material covers the fundamental requirements for bare-metal development, including the creation of entry points for system initialization, static linking of kernel binaries, and the direct mapping of physical memory. These guides are designed to assist in the construction of custom firmware and operating system subsystems through low-level programming techniques.

## Tags

### Operating Systems & Systems Programming

- [Bare Metal Development](https://awesome-repositories.com/f/operating-systems-systems-programming/systems-programming/bare-metal-development.md) — Provides educational guides for building a kernel from scratch on ARM-based hardware using the Rust programming language.
- [Kernel Development](https://awesome-repositories.com/f/operating-systems-systems-programming/kernel-core-internals/kernel-development.md) — Demonstrates how to interface directly with processor registers and hardware peripherals on ARM-based hardware.
- [Raspberry Pi Systems Programming](https://awesome-repositories.com/f/operating-systems-systems-programming/raspberry-pi-systems-programming.md) — Develops custom software and low-level drivers specifically for the Raspberry Pi hardware platform.
- [Operating System Kernels](https://awesome-repositories.com/f/operating-systems-systems-programming/kernel-core-internals/operating-system-kernels.md) — Constructs core operating system components using low-level programming techniques to manage hardware resources directly. ([source](https://github.com/rust-embedded/rust-raspberrypi-OS-tutorials/tree/master/00_before_we_start/))
- [System Boot Initializers](https://awesome-repositories.com/f/operating-systems-systems-programming/system-resource-initializers/system-boot-initializers.md) — Starts the processor from a power-off state and executes the primary entry point to load the operating system kernel. ([source](https://github.com/rust-embedded/rust-raspberrypi-OS-tutorials/tree/master/00_before_we_start/))
- [Systems Programming](https://awesome-repositories.com/f/operating-systems-systems-programming/systems-programming.md) — Writes low-level software for resource-constrained hardware devices to manage system execution and interact with physical components.
- [Hardware Abstraction Layers](https://awesome-repositories.com/f/operating-systems-systems-programming/hardware-interfacing-drivers/hardware-abstraction-layers.md) — Defines consistent interfaces that decouple core kernel logic from underlying processor and board-specific hardware implementations.
- [Static Linking](https://awesome-repositories.com/f/operating-systems-systems-programming/operating-system-kernel-build-tools/static-linking.md) — Combines compiled modules into a single binary image that contains all necessary code to execute without an underlying operating system.
- [Entry Points](https://awesome-repositories.com/f/operating-systems-systems-programming/systems-programming/bare-metal-development/entry-points.md) — Provides low-level assembly routines to initialize processor state and transition control to the kernel environment.

### Programming Languages & Runtimes

- [Embedded Rust](https://awesome-repositories.com/f/programming-languages-runtimes/programming-language-varieties/programming-languages/systems-languages/rust/operating-systems/embedded-rust.md) — Implements core operating system components like memory management and interrupt handling without a standard library.

### Development Tools & Productivity

- [Board Support Packages](https://awesome-repositories.com/f/development-tools-productivity/project-management-boards/board-support-packages.md) — Separates hardware-dependent settings like memory maps and device drivers into a dedicated namespace. ([source](https://github.com/rust-embedded/rust-raspberrypi-OS-tutorials/tree/master/00_before_we_start/))

### Data & Databases

- [Peripheral Mappings](https://awesome-repositories.com/f/data-databases/memory-mapping-utilities/peripheral-mappings.md) — Accesses system peripherals and registers by mapping physical memory addresses directly into the kernel address space.

### Software Engineering & Architecture

- [Architecture Isolation](https://awesome-repositories.com/f/software-engineering-architecture/execution-control/namespace-isolation/module-isolation/architecture-isolation.md) — Simplifies cross-platform development by organizing processor-specific instructions into dedicated modules. ([source](https://github.com/rust-embedded/rust-raspberrypi-OS-tutorials/tree/master/00_before_we_start/))
