smolOS
Specialized Microcontroller-Oriented Lightweight Operating System
smolOS is a tiny (<20KB, <500LOC) and simple ๐งช research โ๏ธ operating system โจ๏ธ written in ๐ MicroPython for microcontrollers giving user a POSIX-like ๐ environment to play. It came with a set of ๐งฐ tools and ๐ช demos.
System should run on any MicroPython supproted board but it's tested and developed on Seeed XIAO RP2040,
Official homepage:
Real Life Usecases
- listing and removing unwanted files on board
- checking free space
- easy way to write simple programs and run them from the OS
- quicly iterating parameters for a program
- editing small bugs in programs
- having fun with microcontrollers
smolOS Features
- Changes microcontroller into a small working PC
- Homemade for fun and learning
- Super small and fast
- Easy to use, simillar to MS-DOS, POSIX-like environments
- List and manipulates files
- Text editor included (very basic but capable)
- Basic tools and demos included (for NeoPixels, Buzzers, LEDs)
- Build on MicroPython with clear code
- Stability and simplicity are the main principle behind the code
- Free and open :)
Additoinal Programs
- ansi - Displays ANSI escape codes
- life - Game of Life implementation for smolOS (text)
- buzz - Simple synthezator for 1-bit music (requies a buzzer)
- bytebeat - Implementation of ByteBeat for a buzzer
All of those are for NeoPixel Grid 5x5 BFF:
- duck - Yellow Rubber Duck for programmers
- neolife - Game of Life implementation
- pixel - Tools for playing with one LED
- plasma - Demoscene plasma effect
- font - Font bitmaps (for scroller)
- scroller - Scrolls text
Installation
Super Quick Quide
- put main system file
smolos.py
onto the board flash (that has latest MicroPython firmware)
- (optional) for auto-boot copy
main.py
too
- restart device
Detailed Guides
Connecting
As normal user:
$ picocom /dev/ttyACM0
Press ctrl+a+x
to exit.
Running
First start. Or after flashing new main.py file. Restart the microcontroller:
>>> machine.soft_reset()
Autoboot
This should restart the device and "boot" you into the smolOS. Like so:
Manual
If you put smolos.py
then you need to boot the system by hand.
In MicroPython REPL write:
>>> from smolos import smolOS
>>> os = smolOS()
>>> os.boot()
Using
Write help
for manual :)
Intresting forks
Missing Features / ROADMAP
Some kind of a roadmap (from high to low priority)
- os: move/copy files
- (external, threaded programs) check exception for used core instead of class variable
- good manual
Articles