See also my RISC OS releated site.
YANGTOS MicroKernel OS : About
Home News Docs Links

Welcome to the home site for YANGTOS.
YANGTOS is a hobby project to create a very simple MicroKernel based Operating System. The ultimate goal is to be able to host an OS that is capabable of using RISC OS modules to run many RISC OS programs.

There is also the secondary goal of being able to provide an api similar to that of a Unix style system, to allow easier integration of n*x ported applications with RISC OS. This is the lower priority goal, and may take a good long time to achive.

Initialy the target archetecure will be the BCM2837/BCM2835 based Raspberry Pi A/B/A+/B+/Zero/ZeroW/2B/3B/3B+/3A+. It is hoped that at later times it will be likely to port the OS to other ARM based targets.

YANGTOS is a low priority project at this time, so updating the site and the code is going to be an as time allows. This is to keep me busy when not designing 3D models for printing, writing software to target RISC OS, sleeping, eating, or working on my house (cleaning, maintaining, etc). Expect updates to be somewhat eradic, at least until I complete my current projects to run on RISC OS, then this project will be bumped up a few levels in priority.

YANGTOS is a project to create a simple Microkernel Operating System to help illistrate some of the concepts involved in the creation of an operating system. The choice to target some level of compatibility with RISC OS is two fold, one it is a good way to illistrate how to implement a user space, and two it brings a new side to RISC OS applications, with preemptive multitasking and SMP at the core of the OS the applications are running on.

The kernel will be very minimal, providing the traditional MicroKernel level of function combined with a couple of extras to simplify life:
  • Multitasking with a binary change rate scheduler.
  • SMP task allocation.
  • Very simple message passing, for modules.
  • Address Mapping.
  • Simple memory management
  • Inturrupt forwarding, in a controlled manner.
  • Mutexes.
  • Module startup.
  • Low level message passing.
  • Kernel level support for a RAM Disk, for start up module loading.
  • A simple file system integrated into the kernel to support the RAM Disk
Everything else is to be provided by user mode modules, including the API seen by end user applications. For that mater even the most basic I/O will be by user space modules. This has the advantage of being able to put multiple possible OS personalities on top while sharing the same hardware support, as that is provided by system modules running in user mode.


I am off to a very minimal start so far.

What is working in the kernel so far:
  • Initial BOOT:We get into SVC mode on the Raspberry Pi 3B. Setup the frame buffer for debugging output (very simple, no text)
  • Cache:We enable cache.
  • MMU:We setup page tables, enable the MMU, remap the frame buffer to verify it is working as expected.
  • SMP: We are able to assign tasks to the least used CPU. Seems to work alright for test code (in runnable task modules).
  • Locks: Mutex support is complete, and is working as expected.
  • IRQ Forwarding: Working acceptably, likely more to do.
  • Module Startup: Works for normal module initialization, SWI assignment, Vector Assignment, and IRQ assignment. Does not yet support commands.
  • BOOT RAM Disk: Kernel loading of startup module works.

Other Components:
  • StartUp Module: Reads its script and loads other modules.
  • BOOTFS Module: Full read support for the RAM disk, including setting the current directory, and full subdirectory support. May add write support later.
  • BCM28XXFB Module: Currently only basic functionality, including bitmapped font rendering, rectangle and line drawing. This is the frame buffer graphics driver for the RPi systems.
  • OSCore Module: As much as possible based on currently completed drivers. This is the module that implements the first layer of the user space OS APi, that is this is what the user space applications will see as the kernel, even though it is not.
  • ...
This page created and maintained on RISC OS using !Zap.
Copyright 2018 David Cagle (AKA DavidS).