# raspberrypi/firmware

**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/raspberrypi-firmware).**

5,485 stars · 1,692 forks

## Links

- GitHub: https://github.com/raspberrypi/firmware
- awesome-repositories: https://awesome-repositories.com/repository/raspberrypi-firmware.md

## Description

This repository contains the pre-compiled firmware, bootloader binaries, device tree overlay files, and Linux kernel modules that power Raspberry Pi single-board computers. It provides the foundational system firmware that initializes the hardware and loads an operating system.

The boot architecture relies on a proprietary VideoCore GPU that co-processes early initialization, memory partitioning, device tree overlay loading, and mailbox-based peripheral configuration before handing control to the main CPU. This multi-stage boot process uses a chain of small binary stages and loads a raw kernel image from a FAT32 file system.

## Tags

### Operating Systems & Systems Programming

- [VideoCore Firmware Boot Sequences](https://awesome-repositories.com/f/operating-systems-systems-programming/firmware-boot-interfaces/videocore-firmware-boot-sequences.md) — Booting the main CPU by first executing proprietary firmware on a separate graphics processor that initialises system memory and loads the ARM boot stage.
- [ARM Firmware and Kernel Image Sets](https://awesome-repositories.com/f/operating-systems-systems-programming/operating-system-kernels/arm-firmware-and-kernel-image-sets.md) — A collection of binary firmware, device tree overlays, and Linux kernel modules for powering Raspberry Pi single-board computers.
- [Pre-Compiled Boot Firmware Sets](https://awesome-repositories.com/f/operating-systems-systems-programming/firmware-boot-interfaces/modern-boot-environment-initializers/pre-compiled-boot-firmware-sets.md) — Raspberry Pi Firmware provides pre-compiled firmware and bootloader binaries that initialize hardware and load an operating system kernel. ([source](https://github.com/raspberrypi/firmware/blob/master/README.md))
- [Raspberry Pi Kernel Boot Sequences](https://awesome-repositories.com/f/operating-systems-systems-programming/kernel-core-internals/boot-startup-management/boot-plugin-managers/boot-configuration-patchers/linux-boot-loaders/raspberry-pi-kernel-boot-sequences.md) — Loading and running a pre-compiled Linux kernel with loadable modules on Raspberry Pi hardware.
- [Multi-Stage Bootloaders](https://awesome-repositories.com/f/operating-systems-systems-programming/kernel-core-internals/boot-startup-management/multi-stage-bootloaders.md) — Using a chain of small binary stages with increasing complexity to initialise hardware and load the operating system kernel from storage.
- [Kernel Loading Mechanisms](https://awesome-repositories.com/f/operating-systems-systems-programming/kernel-loading-mechanisms.md) — Loading a raw kernel image from a simple FAT32 file system using a lightweight bootloader that reads directly from storage blocks.
- [Platform Firmware Distributions](https://awesome-repositories.com/f/operating-systems-systems-programming/os-development-distributions/platform-firmware-distributions.md) — Supplying the foundational firmware that enables Raspberry Pi to boot and communicate with peripherals.
- [Pre-Built Kernel Images](https://awesome-repositories.com/f/operating-systems-systems-programming/pre-built-kernel-images.md) — Raspberry Pi Firmware provides pre-compiled kernel images and loadable modules so an operating system executes without manual compilation. ([source](https://github.com/raspberrypi/firmware#readme))
- [Kernel and Module Distributions](https://awesome-repositories.com/f/operating-systems-systems-programming/raspberry-pi-systems-programming/kernel-and-module-distributions.md) — Pre-compiled Linux kernel images and loadable kernel modules for running operating systems on Raspberry Pi hardware.
- [Raspberry Pi Boot Operations](https://awesome-repositories.com/f/operating-systems-systems-programming/raspberry-pi-systems-programming/raspberry-pi-boot-operations.md) — Providing firmware and bootloader binaries to initialize Raspberry Pi hardware and start an operating system.
- [Device Tree Blob Initializers](https://awesome-repositories.com/f/operating-systems-systems-programming/hardware-device-initializations/device-tree-blob-initializers.md) — Configuring Raspberry Pi hardware peripherals at boot using device tree blobs and overlay files.

### Hardware & IoT

- [Device Tree Overlay Loaders](https://awesome-repositories.com/f/hardware-iot/design-lifecycle-management/hardware-engineering-management/hardware-management/firmware-and-boot-management/device-tree-overlay-loaders.md) — Raspberry Pi Firmware configures hardware peripherals at boot using device tree blobs and overlay files for pinmux, clocks, and other settings. ([source](https://github.com/raspberrypi/firmware#readme))
- [Raspberry Pi Binary Firmware Sets](https://awesome-repositories.com/f/hardware-iot/firmware-management/firmware-generators/pre-compiled-asic-firmware/raspberry-pi-binary-firmware-sets.md) — Pre-compiled firmware and bootloader binaries that initialize Raspberry Pi hardware and load an operating system.
- [Mailbox Peripheral Configurations](https://awesome-repositories.com/f/hardware-iot/mailbox-peripheral-configurations.md) — Communicating with the graphics processor through a mailbox interface to set clock frequencies, voltage, and memory base addresses.
- [Proprietary GPU Boot Blobs](https://awesome-repositories.com/f/hardware-iot/proprietary-gpu-boot-blobs.md) — Relying on proprietary binary firmware for a graphics processor that handles early boot, memory partitioning, and display output.

### System Administration & Monitoring

- [Device Tree Configurations](https://awesome-repositories.com/f/system-administration-monitoring/device-management-tools/device-tree-configurations.md) — Defining pinmux, clocks, and other hardware settings via device tree overlays for Raspberry Pi.
- [Overlays](https://awesome-repositories.com/f/system-administration-monitoring/device-management-tools/device-tree-configurations/overlays.md) — Configuration files for hardware peripherals that customize pinmux, clocks, and other settings at boot time.
