<aside> <img src="/icons/burst_gray.svg" alt="/icons/burst_gray.svg" width="40px" />

Domains: Bare-metal, Drivers, ARM Assembly, Hardware Abstraction Layer

</aside>

https://github.com/dark-knightshanks/NovaPi

Overview

This project focuses on building a lightweight bare-metal operating system for the Raspberry Pi 4B from scratch. The system provides a hardware abstraction layer with support for essential components such as communication protocols, interrupt controllers, and HDMI output. To demonstrate its capabilities, the project will feature a simple Pong game rendered over HDMI, fully powered by the custom kernel.

image.png

image.png

Key Concepts

Bare-Metal Programming Running code directly on hardware without the use of an existing operating system, providing complete control over the system.

Hardware Abstraction Layer (HAL) A software layer that provides a consistent interface to interact with hardware components, simplifying driver development.

ARM Assembly Low-level programming language specific to the ARM architecture, used to write critical system routines.

Interrupt Controller Hardware that manages interrupts, allowing the CPU to handle asynchronous events efficiently.

HDMI Output A video interface standard used to render graphical output directly from the system’s custom kernel.

Approach and Workflow

  1. Bootstrapping Initialize the Raspberry Pi 4B hardware and set up the runtime environment for bare-metal execution.
  2. Driver Development Implement drivers for key peripherals, including communication interfaces, interrupt handling, and HDMI display.
  3. Kernel Design Build the core kernel and hardware abstraction layer to provide structured access to system resources.
  4. Graphics Rendering Implement a simple graphics pipeline to render objects on screen via HDMI.
  5. Demo Application Develop a Pong game that runs entirely on the NovaPI OS, showcasing the capabilities of the custom kernel.