πOS (you should read it as pì·os) is an embedded Real Time Operating System developed for the Cortex-M4 processor. It fully supports the msp432 launchpad.
To have your application link against πOS you should compile the source code in order to import it on your project. Once you've done that you can flash your app on the microcontroller and run it.
The source code is in the kernel directory, divided into different modules.
- The heap directory contains the code that manages dynamic memory allocation.
- The task directory contains the code for the scheduler.
- In the syscalls directory, you'll find the system calls supported by πOS.
- The synch directory contains the code for tasks synchronization.
- The utils directory contains some utility code.
- Finally, in the port directory you can find source code that is specific to the compiler used to build an application that links against πOS. Much of that code is written in assembly.
To run unit tests, you have two options:
$ make testto run tests on qemu directly.$ make gdbto run tests with GDB. Have a look at the README at this link to learn more about testing with GDB.
In the root directory you can find a transpiler that allows to translate gcc assembly code to ccs assembly code, and vice versa.
The first time you run the transpiler you need to make sure it has execution permissions:
$ chmod +x transpiler.py
The transpiler acceppts as arguments:
- The input assembly file path.
- The output assembly file path.
- The identifier of the target compiler (
gccorccs)
You can run ./transpiler.py without arguments to check the arguments format.
Here you can find a brief presentiation going through some details of πOS
And a short presentation video
A demo app for the TI MSP432 board based on πOS is available as an example of a use case of our embedded Operating System
πOS has been developed by Barbieri Marco, Maglie Francesco and Zaupa Alberto. Main contribution:
Barbieri Marco - Scheduling functions, syscall and synch development
Maglie Francesco - Start-up routine, porting, synch development, Demo APP
Zaupa Alberto - General code organization, memory allocation and syscall development, testing