Skip to content

Because why not? Pi Zero bare metal project that ends in an RTOS implementation

Notifications You must be signed in to change notification settings

kpishere/PiZeroRTOS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PiZeroRTOS

Because why not? This repo starts out as a Pi Zero bare metal project and it could very well end up as a viable RTOS implementation with a brand as yet to be determined.

Various bare-metal developers and hackers out there have made great resources on Raspberry Pi 2/3/4 arm7 and beyond to aarch64 but have appeared to abandon the Pi Zero and its arm1176jzf-s processor.

Well, perhaps I'm too stupid to know better but I submit that this is a worthy target now that qemu sufficiently supports the Pi Zero as an emulated device.

This is a work in progress project but what I put up is a working example of starting the Pi Zero on qemu emulator.

I hope it proves to be a worthy foundation to greater things for you.

What to anticipate from this work

  • A really bare bones OS that is not much more than a task scheduler
  • Ability for a task to take ownership of a hardware device directly - there is no expectation of a device driver that is brokered by the OS
  • A method for tasks to inter-communicate, preferably by hardware supported means
  • A functioning frame buffer with hardware supported OpenGL
  • UART, I2C, and SPI device examples
  • Interrupt handling
  • DMA (even if only used between SPI and Frame buffer)

What it is now

  • UART working
  • bare metal booting
  • Attempt to save the Pi 3/4 examples that are copied but then transposed to Pi Zero where only Pi Zero is actively tested
  • Working build examples (built on a MacOS environment augmented by many gcc et. al. tools)

Some key requirements

Most usefull links

I'm seeing interest in this subject, so I leave it here but also add this -- use of JTAG on raspberry pi with the pi as the target

proc pi_reboot {} {
  targets rspi.arm
  halt
  mww 0x20100024 0x5a000001
  mww 0x2010001c 0x5a000020
}

Update

The project embox is hands-down everything this project aspires to be and more. Regardless, this still has value as a tool for foundational understanding. Also, I'd add for GUI and direct OpenGL rendering to framebuffer etc, the already embox-tested project Nuklear is ideal.

About

Because why not? Pi Zero bare metal project that ends in an RTOS implementation

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published