CS404/504 Special Topics: Real-Time Operating systems

Instructor: Bob Rinker
Office: JEB B28
Email: rinker@cs.uidaho.edu
Phone: (208)885-7378 (direct line), (800)824-2889 (press 1) ext. 7378
Office Hours (Spring 2009): 1:30-2:30 MW, 2:30-3:30 TTh (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% 30%
RTOS Report 10% 10%
Grad Project 15%
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 16 (ps) or (pdf)
Assignment #2 - Due at lecture 18 (ps) or (pdf)
There are several documents I used in class to decribe timer usage:
- Application note AVR130 - Setup and Use of the AVR Timers
- The avr-libc-manual section 6.15, on avr/interrupts, including interrupt vector names
- Specific timer information in the datasheet for the particular model of AVR processor
Assignment #3 - Due at lecture 23 (ps) or (pdf)
Assignment #4 - Due at lecture 29 (ps) or (pdf)
The suggested UIK API is available here.
Assignment #5 - Due at lecture 34 (ps) or (pdf)
Assignment #6 - Due at end of class (ps) or (pdf)

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
- C-based serial port boot loader

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


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
VRTX
pSOS
Nucleus
C Executive
LynxOS
QNX
Multitask!
AMX
FreeRTOS
Quadros
OS/9
THREDX
ucLinux
UNISON
NUT/OS
Integrity

The topics that should be covered is provided here.

Some useful items:

Link to the Atmel Website (here)
Link to "AVRFreaks" (here)
Link to the AVR libc Home Page (here)
They have just released a new version of the libc manual (1.6.5) - the sections have been significantly revised!!! The new organization is probably better, but it is quite different than the previous one - section numbers mentioned in previous lectures no longer apply.
Last updated Sunday, May 3, 2009