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

13 Dec 2010

Sounds nice... so where is it? :)

13 Dec 2010

updated the page to include links to our Professor's backup of the code and webpage, you should be able to see the source if you follow the second link

13 Dec 2010 . Edited: 13 Dec 2010

Dear Mr. Spencer-san

The demo is really great. I enjoyed the video.

I'll try it later. :)

Thanks.

Shin.

04 Jan 2012

since most of us are no students of your university we can't possibly acces the source ....

25 Jan 2012 . Edited: 25 Jan 2012
07 Mar 2018
Can it be used on the mbed online compiler? How can I load it? I search SpaRTOS in the library. There are so many RTOS files.

You need to log in to post a comment