You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
Clyne 9fc2b207a4 update README 5 years ago
arm-stmos Merge branch 'master' of https://github.com/tcsullivan/stmos 6 years ago
src Reviewed stmos, made small format/doc fixes 5 years ago
tools vfs, initrd 6 years ago
.gitignore working toochain build script 6 years ago
LICENSE initial commit 6 years ago
Makefile libgpio, better initrd structure 6 years ago
README.md update README 5 years ago
link.ld hello world from initrd 6 years ago
run.sh Fixed syscalls, initrd program works 5 years ago

README.md

stmos

stmos is an attempt to implement a general-purpose operating system on ARM microcontrollers. The name "stmos" is due to the fact that this was first implemented on an STM32L476RG MCU (ARM Cortex-M4F), and the operating system still includes many operations/values that are specific to this processor (currently limiting the portability of this OS).

Eventually, this OS aims to support at least all Cortex-M MCUs.

Features:

  • Advanced heap that does its best to keep large chunks of memory available
  • Round-robin multitasking that keeps tasks in userspace
  • A virtual filesystem implementation with stdio/initrd built into the kernel
  • Ability to execute ELF files loaded from the filesystem
  • A nearly complete C standard library implementation available to loaded ELFs (using PDCLib)
  • libgpio: The first userspace library; makes GPIO available to loaded ELFs

Currently supported processors:

  • STM32L476RG (board: NUCLEO-L476RG)

building

To build stmos, you'll need the following programs:

  • The arm-stmos toolchain (see the arm-stmos folder)
  • openocd
  • gdb (with multiarch support, gdb-multiarch on Debian)

To compile stmos simply run make (-j supported). To upload, use run.sh to launch OpenOCD and GDB; then, do lo to load stmos, and c to begin execution.

notes

Currently, the only available filesystem driver is for the initrd. Files in the folder src/initrd/files are put into the initrd. C source files in src/initrd are compiled (with libgpio available), placing the programs in src/initrd/files

What's next for stmos?

  • Processor independence
  • SD card support?
  • Display support? (ILI....)
  • Support for running a popular program (e.g. a shell like sash, maybe lua)
  • Growth of features available to loaded ELFs (better execve, signals?, etc.)