update README
parent
a5892b3523
commit
9fc2b207a4
@ -1,29 +1,44 @@
|
|||||||
# stmos
|
# stmos
|
||||||
|
|
||||||
stmos is an operating system for STM microprocessors. It aims to support (or be able to support) all STM Cortex-M processors.
|
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:
|
Features:
|
||||||
* Unprivileged code execution
|
* Advanced heap that does its best to keep large chunks of memory available
|
||||||
* ELF loading and execution (loads an init from the initrd)
|
* Round-robin multitasking that keeps tasks in userspace
|
||||||
* Near-full C standard library support for loaded ELFs
|
* A virtual filesystem implementation with stdio/initrd built into the kernel
|
||||||
* libgpio: GPIO access for loaded ELFs
|
* Ability to execute ELF files loaded from the filesystem
|
||||||
|
* A nearly complete C standard library implementation available to loaded ELFs
|
||||||
|
(using [PDCLib](https://github.com/DevSolar/pdclib))
|
||||||
|
* libgpio: The first userspace library; makes GPIO available to loaded ELFs
|
||||||
|
|
||||||
Currently supported processors:
|
Currently supported processors:
|
||||||
* STM32L476RG (board: NUCLEO-L476RG)
|
* STM32L476RG (board: NUCLEO-L476RG)
|
||||||
|
|
||||||
### building
|
### building
|
||||||
To build stmos, you'll need the following programs:
|
To build stmos, you'll need the following programs:
|
||||||
* The arm-stmos toolchain (see the ```arm-stmos``` folder)
|
* The arm-stmos toolchain (see the `arm-stmos` folder)
|
||||||
* openocd
|
* openocd
|
||||||
* gdb (with multiarch support)
|
* gdb (with multiarch support, `gdb-multiarch` on Debian)
|
||||||
|
|
||||||
To compile stmos simply run ```make``` (-j option supported). To upload, use ```run.sh``` to start openocd/gdb; do ```lo``` to load stmos, and ```c``` to run it.
|
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
|
### notes
|
||||||
Only the initrd works right now in regards to filesystem access. Files in the folder ```src/initrd/files``` are put into the initrd. C source files in ```src/initrd``` are compiled with libgpio, placing the program in ```src/initrd/files```.
|
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?
|
What's next for stmos?
|
||||||
* SD card support
|
* Processor independence
|
||||||
* Display support (ILI....)
|
* SD card support?
|
||||||
* Script program support (a shell like sash, maybe lua)
|
* Display support? (ILI....)
|
||||||
* More ELF work (better execve, signals?, etc.)
|
* 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.)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue