Largos: LMM Propeller Operating System
Largos is on hold, it may be resumed for Propeller 2 in the future, after Propeller 2 is released.
This page will contain the official Largos documentation.
Largos is a nano-Unix like OS, with a nano kernel (or even pico-kernel, called such as it is MUCH smaller then current micro kernels) that runs as a process and provides services to client tasks via message passing.
Messages have a fixed format and take four longs, and each client is given a separate mailbox by the kernel. Clients can also create mailboxes and provide services.
Largos provides the following features:
- message passing with 16..32 mailboxes
- stdin, stdout (to serial terminal, or keyboard and tv or vga, theoretically to file system as well)
- memory management (malloc, free, avail (and later gc) for hub and xmm)
- shared LMM libraries
- loading device drivers
- loading applications (Spin, LMM)
- killing drivers/apps
- flash file system with nested sub directories and wear levelling
- a subset of stdlib (getc/putc/puts/getline) with some extensions (putbin,putdec,puthex,error)
- shell provides argc/argv with up to 16 arguments, and over three dozen commands
It’s roughly prototyped right now, mostly in Spin, but the idea is to move to all LMM code as time permits. I will be demonstrating an early pre-release version at UPEW 2009.
There is no fork() but there is an exec().
Some appetizers for you:
- Early prototype Largos kernel can process 2200 empty messages per second!
- cat cd du df ls rm rmdir mv mkdir mkfs pwd touch – some of the current shell commands
Hope the above provides food for thought… the goal is for Largos to have less than an 8KB hub footprint, INCLUDING a 2KB shared buffer, after additional space optimizations and removig all the debugging code.
1. Will there be a version of Largos that can be compiled just with the Propeller Tool or BST?
The current prototype is compiled with the Propeller Tool, and if there is enough demand, I can keep maintaining that version.
2. Will Spin applications running under Largos have full access to all its features?
Yes, as long as they are modified as follows:
- include the “os” object to get access to all of the OS capabilities (for I/O, file system, loading drivers, etc)
- they should not set _clkmode and _xinfreq, the OS does that – they can read them from the hub
- they should not include drivers available in the OS, but use the OS services
If the Spin applications obey the rules above, they only need to be compiled to a .binary file for Largos to run them.