Skip to content

i386, x86_64, ARMv7 assembler/linker; Nothing-like mid-level language; Linear-scan register allocator; Operating system for Raspberry Pi

License

Notifications You must be signed in to change notification settings

tonyg/pi-nothing

Repository files navigation

Programming language, compiler, and operating system for bare-metal ARM

Quickstart

To run the main baremetal Raspberry Pi kernel,

$ git clone git:https://github.com/tonyg/pi-nothing.git
$ make link all
$ cp baremetal/raspberrypi.img /PATH/TO/YOUR/RASPBERRY/PI/SDCARD/kernel.img

Boot the Raspberry Pi.

There is also a simpler kernel for the QEMU-emulated versatilepb machine that can be run in emulation from the host:

$ cd baremetal
$ make versatilepb.img
$ ./run-kernel

A graphical variant also exists.

When running a versatilepb kernel in emulation, you're interacting with the kernel via the emulated board's serial UART. Type characters at it, and it will echo them. When you get bored of this, press C-a x to quit qemu.

Third-party software

This package makes use of a number of programs and resources generously developed and released as free software by other authors:

  • disarm, a disassembler for ARM instructions, developed by and copyright to Gareth McCaughan.

  • udis, a disassembler for x86 and x86-64, written by and copyright to Vivek Thampi.

  • font0, a very simple monospace bitmapped font developed by and copyright to Bitstream, Inc.

  • raspbootin, a boot-over-serial bootloader for the Raspberry Pi, developed by and copyright to Goswin von Brederlow.

and, of course, QEMU and Racket themselves.

About

i386, x86_64, ARMv7 assembler/linker; Nothing-like mid-level language; Linear-scan register allocator; Operating system for Raspberry Pi

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published