ourpi

Created 3 years ago
Maintained by iam
A bare-metal operating system for the Raspberry Pi 400
Members 1
Ian McLean committed 3 years ago

Ourpi

Ourpi is an operating system for the Raspberry Pi 400. It is designed to enable natively-hosted bare-metal development. This is a work in progress! Comments are welcome at ian.mclean@protonmail.com

Features

  • Custom 64-bit kernel implementation specific to the BCM2711
  • All processes run at supervisor privilege level with complete access to system resources
  • C/C++ standard library implementation included in kernel
  • Command-line interface with bash shell and common system commands

Installation

As this is a work in progress, you should not expect to be able to actually do anything useful with it. Very little is implemented at this point. Most syscalls are stubs, and there is much temporary code. However, you should be able to boot a minimal shell.

  • Build on a standard Linux system. Cygwin, MSYS, or OSX may work, but are untested
  • Run "make" for more information

Notes

  • Currently terminal I/O is serial port only (GPIO pins 14/15). The default baud rate is 3000000, which may be changed in kernel.h
  • An optional LED indicator may be wired to GPIO 18
  • A reset button pull-up may be wired to GPIO 23

Goals

  • Complete signal processing. This is currently woefully inadequate.
  • Enable self-compilation. Binutils and GCC are currently cross-compiling for an Ourpi host, but are non-functional due to missing underlying kernel functionality.
  • Add eMMC memory card support. The current file system is a FAT32 ramdisk, which suffices for testing purposes, but is inadequate for supporting compilation.

Note that there is currently no use of synchronization primitives (semaphores, mutexes, etc), other than a kernel spinlock. This is quite deliberate. Everything is being done by polling until multicore and process multithreading support is added.