CS404/504 Special Topics: Real-Time Operating systems

Instructor: Bob Rinker
Office: JEB 226
Email: rinker@cs.uidaho.edu
Phone: (208)885-7378 (direct line), (800)824-2889 (press 1) ext. 7378
Office Hours (Spring 2008): 10:45-Noon TTh, 2:30-3:30 MW, 1:30-2:30 F (Pacific time), or by appointment, or stop in anytime my door is open

Course Description:
CS 404/504 Special Topics: Real-Time Operating Systems (3 cr). Topics of interest in the implementation of Real-Time Operating Systems, especially as applicable to embedded systems. These include relevant hardware concepts, interrupts and interrupt handling, real-time scheduling principles and implementation, latency issues, task management, shared data and synchronization, timers, message passing, tradeoffs between memory space, and speed. Students will build a simple but relatively complete real-time operating system over the course of the semester. Students will also participate in reviewing commercially-available real-time operating systems. Additional work required for graduate credit. Prereq: CS 240 (Operating systems) or equiv., or permission
Syllabus: Downloadable from here
- On campus (with dates, revised) (ps or pdf).
- Off campus (by lecture number) (ps or pdf).

Policy on Academic Honesty and Cheating - your continued registration in this class indicates that you understand and agree to abide by the policy ( ps or pdf)

Grading:
Your grade will be calculated using the following percentages:
CS404CS504
Two mid-semester exams 30% 30%
Final exam (comprehensive) 20% 15%
Programming Assignments 40% 35%
RTOS Report 10% 10%
Grad Project 10%
Total 100% 100%

The letter grade you receive from the course will be determined as follows:
90%-100%A
89.9%-80%B
79.9%-70%C
69.9%-60%D
Below 60%F
The instructor reserves the right to adjust these percentages lower if deemed necessary.
Assignments: (Assignments will appear in this section shortly after they are assigned)

Assignment #1 - Due at lecture 9 (ps) or (pdf)
Assignment #2 - Due at lecture 12 (ps) or (pdf)
Assignment #3 - Due at lecture 14 (ps) or (pdf)
Assignment #4 - Due at lecture 21 (ps) or (pdf)
Assignment #5 - Due at lecture 24 (ps) or (pdf)

The UIKApi
The UI Kernel API is being formulated as we go through the class. Its current state is given (here).
For the CS504 (graduate) students
You are required to do a "project" as part of your grade. The project can either (1) add to the RTOS itself, or (2) be an application that utilizes your RTOS. A list of possible projects is given below - it is not intended to be an exhaustive list. In fact it would be best if you choose your own project. I envision that each student will do their own project, although a group project might be possible. It is strongly recommended that you discuss your project with me before choosing. After you have chosen, describe your project on this form (ps) or (pdf)

A short list of possible projects:
Additions to RTOS API
- Add an additional timer to the RTOS
- Character-based LCD Display Driver (either butterfly or a 24 x 2 display)
- SD-Card Reader
- ethernet controller
- USB Controller
- Keyboard/keypad controller

Applications that use the RTOS API
- MIDI Recorder
- Memory dump/viewer
- Waveform/wavetable performerk


RTOS Reports
Each student is required to prepare an oral and written report on a particular RTOS or RTOS-related topic. A brief outline of the oral report (1/2 page) should be submitted at least one class period prior to the report. The written report is due at the time of the oral report - that is, you should turn in the written report no later than on your way to the podium to give the oral report. For outreach students, if some means for delivery for the oral report can be determined (live visit to class, YouTube, video tape, audio (telephone) only, etc.), this is preferred. If such a means cannot be arranged, then the written report will be presented by the instructor.

Some rules:
- Each student will report on a different RTOS or topic. It might be possible that a student can report on a different aspect of the same RTOS that someone else has reported on; however, these cases must be preapproved by the instructor.
- First-come-first-served when choosing an RTOS to report on. However, the schedule of reports will also be first-chosen-first-delivered (subject to schedulability).
- The report should focus the unique characteristics of the particular RTOS, rather than the vendor's hype about the RTOS.
- The RTOS can be commercial or free (open source). However, it must be a "real" product in some form.
- Must be an RTOS. No windows, linux, OS/X. Possibly embedded versions are OK - check with me.
- The oral report should be 10-15 minutes in length. Written report should be 3-5 pages in length.
- Decisions about the suitability of topic will be made by the instructor.

Here is a list of RTOS's (initially generated from P. 138 in the book) that may be candidates for a report. As each RTOS is selected, it will be added to this list (if not here already) and marked as taken:
VxWorks - taken
VRTX
pSOS
Nucleus
C Executive - taken
LynxOS - taken
QNX - taken
Multitask!
AMX - taken
FreeRTOS - taken
Quadros
OS/9 - taken
Manwaring's RTOS - taken
THREDX - taken
ucLinux - taken
UNISON - taken
NUT/OS - taken
Integrity - taken
Some hints about what topics should be covered will be provided a little later.
Some useful items:

Link to Lecture Slides: here. Not all lectures have slides associated with them, or only contain examples copied from the book or other documentation, so not all lectures are represented here.
Directory containing some of the code examples we discussed in class here.
Link to the Atmel Website (here)
Link to "AVRFreaks" (here)
Link to the AVR libc Home Page (here)
If you are having trouble downloading the avr-libc manual, get it (here)

Last updated Tuesday, April 2, 2008