Realtime Operating System
Note: Until more detailed information is transfered here, see http://users.ece.gatech.edu/~hamblen/489X/SpaRTOS/spartosWebsite/ (for a link to the demo video and more information) or see http://users.ece.gatech.edu/~hamblen/489X/SpaRTOS/rtosSource/ (for source code to be built with Keil compiler)
SpaRTOS - By Spencer Reardon and Kenneth Adams
SpaRTOS was designed to be a light weight, realtime operating system for the mbed models that use the NXP LPC1768. The operating system offers various features for any application running on top of it including: multitasking support, task sleeping, stack overflow detection and protected kernel memory region(s), cross-task synchronization, general purpose IO (serial, LED, timers, etc), and more.
Applications
We implemented several demo applications to show a few of the features of the operating system:
- Shell (SpaSh)
- Audio-22KHz mono over PWM
- Video-10fps (80x30 character res) over serial
- Top-like program to show task information
- And more
Scheduler
SpaRTOS allows 4 priority levels (realtime, high, normal, and low). Each priority level has a running-queue that keeps track of all the currently running tasks, and allows the scheduler to operate at O(1) complexity. Once a task enters a generic sleep, waits on a mutex, or waits on IO, it is moved into the corresponding sleep queue, where it stays until the resource it seeks becomes available or the timeout period elapses.
Drivers
Currently, SpaRTOS has several drivers which support IO from the local filesystem, GPIO and PWM (output only), UARTs, and Timers.
System Calls
Tasks
- task_create()
- task_exit()
- task_wait()
- task_detach()
- task_self()
- sleep()
Synchronization
- mutex_create()
- mutex_lock()
- mutex_unlock()
I/O
Standard C library functions such as fopen(), fread(), fprintf(), etc. are supported and implemented as wrappers around I/O system calls.
- open()
- close()
- write()
- read()
- seek()
- ioctl()
System Management
- query_tasks()
- flash_write()
6 comments
You need to log in to post a comment
Sounds nice... so where is it? :)