/smolOS

smolOS - a tiny and simple ๐Ÿงช research โš™๏ธ operating system โŒจ๏ธ written in ๐Ÿ MicroPython for microcontrollers giving user a POSIX-like ๐Ÿ“ environment and ๐Ÿงฐ tools to play.

Primary LanguagePythonMIT LicenseMIT

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:

smolOS XIAO

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:

smolOS XIAO

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 :)

smolOS list

smolOS help

smolOS editor

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