|Class description:||Issues associated with developing software for real-time systems, including parallel processing, task synchronization, and task scheduling.|
|Instructor:||Dr. Lotzi Bölöni|
|Office:||ENGR 3 - 319|
The assignments and the other announcements will be posted on the course web site
|Classroom:||Business Administration 216|
|Class Hours:||Tuesday, Thursday 6:00 - 7:30|
|Office Hours:||Tuesday 4:00-6:00|
|Recommended readings:||Concurrent and Real-Time Programming in Java by Andrew Wellings|
|FEEDS/Tegrity video stream:||http://tegrity.ucf.edu/TegrityUtils/GetCourseListing.asp?courseId=eel6897c|
|Projects:||The class requires the students to prepare a major research project in one of the topics explored in the class.|
Class presentation: 20%
Project: 60 %
Standard 90/80/70/60 scale will be used for final grades (curved if necessary)
|Name:||Project type, topic|
|Ilhan Akbas, Zubair Ahmad
Project: Mote project
Project using a set of Crossbow Mica2 motes (hardware available). The project requires programming using the TinyOs operating system and the NesC programming language.
|Kit 1: James Roberts
Kit 2: Tim St.John
Kit 3: Michele Gaetani
Project using the Stiquito robotics toolkit (3 hardware kits available).
The expectation is to build a working robot, with a pulse width modulation control, and implement one or two "gaits". http://www.coe.uncc.edu/~jmconrad/Stiquito_Applications/ECE292-class4.pdf The kit I have is the one coming with the book "stiquito controlled". It would be interesting to push a bit the behavior, for instance implement some sort of dance movements, etc.
|Feras Batarseh, Nestor Rivera and Kalpana Nallavolu
Project: Real-time, peer-to-peer traffic information system
A system which can be integrated in vehicles. It integrates information about the traffic from various sources in real time, distributes data to places which will use it. It should perform a distributed processing and reconciliation of the data.
|Team 1: Ehsan Ghaneie, Ken Waller and Sorosh Olamaei||
Project: Real-time, peer-to-peer disaster management system
A distributed system which coordinates and organizes the work of volunteers in a disaster rescue scenario. The system needs to guide the volunteers to tasks with the highest priority, which are compatible with their skills and preferences. Tasks and volunteers can come dynamically.
|Johua Mahaz and Gloria Law
Project: Control software for a basic motion detection and tracking device
We are interested in using a 180 degree servo and ultrasonic sensor paired with a basic stamp micro-controller to build a basic motion detection and tracking device. The idea being that with the sweeping ultrasonic sensor the device could detect any variations in its surrounding and react by illuminating the target with a laser pointer or flash light. This would be the project at its most basic, time permitting, we would like to add on a passive infrared to give the device further range and a lcd display panel to give more detailed information abosut the current status. I already own a basic stamp development kit that includes much of what we would need for the project and many of the sensors, hardware wise, are plug and play. So are main concern would only be to develop the software for the device.
Project: Small, obstacle avoiding robot, using range finder, AVR microcontroller
I would like to use an Basic-2 stamp micro controller (one that is pre-installed on a development board) to build a small robot which uses a range finder to avoid obstacles. The micro controller will be in charge of motor control, reading in information from the range finder, as well as making decisions on what movements are required to avoid the obstacles.
|Team 1: Loren Stroup, Megan Hefferman
Team 2: Rashad Oreifej, Ghaith Haddad
Project: Distributed, shared whiteboard
Create a shared whiteboard, where multiple people can draw on the same canvas and you can see their drawing in real time, preferably without having a centralized server - you can, for instance use some JavaSpaces implementation for that.
Project: Distributed matrix modeler with JavaSpaces
I am going to create a distributed matrix divider with javaspaces. This project could be extended to create numerical modeling tools that could have large volumetric size. I will attempt to compare my results with MatLabs Distributed Engine to see which tool can outperform the other.
|David Benjamin and Phouc Nguyen||
Project: Computer farm for running distributed genetic algorithms
We would like to create a compute-farm that will implement a genetic algorithm that will evolve an eight bit adder circuit. The circuit will be comprised of AND, NAND, OR, and NOR gates. This project will demonstrate our understanding for concurrency programming in a distributed software environment. The project will have four main components: - Communication layer - Worker clients that implements Genetic algorithm - Server that distribute work orders and manages the resultset - Global view which can connect to the server from anywhere and graph the evolved circuit
Project: Peer-to-peer baby monitoring system
I am planning on the system to stream live media from one PC to another and have different functions that the receiving PC can send to PC on the other end. for example playing a song to make the baby fall back to sleep.
Project: Improvements to a real-time water rendering system
I would like to extend the Thesis work done by Claes Johanson from Lund University on "Real-time water rendering: Introducing the projected grid concept" I would like to extend the CPU vetex shader implementation to a GPU Shader hbased implementation. This will include recoding the depricated functions used with prior DirectX releases. After this stage is complete I will determine what botlenecks have been produced and manipulate the code for optimum threaded performance. Using the current ATI High end Graphics card HD 2900 XT and a High end Processor AMD 6400 it will be interesting to compare performance results with the CPU based shader approach. References: http://graphics.cs.lth.se/theses/projects/projgrid/projgrid-hq.pdf
Project: Boss Detector
A device that will detect and warn a user of an approaching individual in a designated blind spot. The goal is to provide me with a chance to look busy before my boss shows up unannounced at my work cubical. As such, the device will provide the user with an Estimated Time of Arrival (ETA) and/or range of the approaching individual. The device will employ the use of an ultrasonic range finder to approximate distance, calculate ETA, and feed the information to the user via an LED display. The application software will be designed for the Salvo RTOS (from Pumpkin, Inc.), and hosted on a simple 8-bit Microcontroller.
|Name:||Proposed presentation topic|
|Loren Stroup||POSIX threads|
Real-Time Schedulers or Executives
What a scheduler is, what it is for, some of the underlying concepts of a scheduler such as a sync board and interrupts, and then give some practical discussion on MACCE and possibly another scheduler.
CORBA Applications Using ACE/TAO
Tentative Outline: -- What is CORBA? A brief introduction -- CORBA Basics -- Clients, Servers, and Servants -- ORBs and POAs -- IDL and the role of IDL Compilers -- IORs ("Distributed Pointers") -- Overview of ACE/TAO -- Application 1: Simple Client-Server -- CORBA Services -- Naming Service -- Event Service -- Example 2: Using the Naming Service -- Multi-Threaded Issues Using CORBA -- Example 3: A Multi-Threaded Server
|Ghaith Haddad||JavaSpaces / Linda language|
|Rashad Oreifej and Christopher Stricklan||Jini / Apache River|
|Sorosh Olamaei||Performance of multithreaded programs|
|Nestor Rivera, Feras Batarseh and Nallavolu Kalpana||
Concurrency design patterns
from the book Real-Time Design Patterns by Bruce Powel Douglas.
Multiprocessor Pipelining and Parallel Processing with regard to graphic
The main focus will be on the latency produced with different techniques, and an introduction to the graphic pipeline. References include: Real-Time Rendering by T. Akenie-Moller and E. Haines GPU Gems 2 by Various Authors
Introduction to Watchdog Timers and a practical application in an RTOS with multiple threads of execution.
|Joshua Mahaz and Gloria Law||
Developing AJAX applications
Remote Method Invocation in Java
|Jason Beck and Megan Hefferman||Esterel programming language|
|Michele Gaetani||VxWorks operating system|
|David Benjamin||RTOS vs. the traditional interrupt driven approach to system design using microcontrollers.|
|Phuoc Nguyen||The High Level Architecture (HLA) for distributed simulations. HLA > is a model widely used in distributed simulation. HLA covers variety of > topics inluding data distributing, recovering and also time synchronization.|
|Ilhan Akbas, Zubair Ahmad||Real Time Application Interface for Linux. RTAI is a real-time extension for the Linux Kernel which lets you write applications with strict timing constraints for Linux..|
Presentation on the following papers.
Krishna Raman, Yue Zhang, Mark Panahi, Juan A. Colmenares and Raymond Klefstad.
Patterns and tools for achieving predictability and performance with real-time
Java. In Proc. 11th IEEE Int'l Conference on Real-Time and Embedded Computing
Systems and Applications (RTCSA 2005). Hong Kong, China. August 2005. |
Krishna Raman, Yue Zhang, Mark Panahi, Juan A. Colmenares, Raymond Klefstad, and Trevor Harmon. RTZen: highly predictable, real-time Java middleware for distributed and embedded systems. In Proc. ACM/IFIP/USENIX 6th Int'l Middleware Conference (Middleware 2005). Grenoble, France. December 2005.
||Lecture Notes, Readings, Homeworks
-class organization and requirements
-characteristics of concurrent and real time systems
-real time (hard/soft/firm)
Concurrent programming in Java
-the Thread and Runnable objects
[reading] Short introduction to Java for C++ programmers
[slides] Concurrent programming in Java
-the need for synchronization; critical sections
-synchronized functions and code fragments
-wait and notify.
-experiments with creating threads.
-implementing a bounded buffer with the Java synchronization primitives
-implementing Dijsktra's semaphores with Java synchronization primitives
[Reading] Deadlock in Java
[Reading] Dijkstra's semaphores
Semaphore.java - an implementation
-the readers/writers problem
Three different solutions for the readers/writers problem
-Java memory model
-priorities, thread groups, interrupts
[slides] Completing The Java Model
||-discussion on the Java memory model|
-Memory, garbage collecting
-NIST requirements for real-time systems
[slides] Real time Java - 1
||-Memory classes in RTSJ
-Time classes in RTSJ
||-real time Java (cont'd)||[slides] Real time Java - 2
||-real time Java (cont'd)||
||Memory management in RTSJ||[slides] Memory management
||Homework - due Oct 31
Lustre programming language - necessary for the alternative question on problem 2.
||Scheduling issues in real time systems
||Steve Roberts: Real-Time Schedulers or Executives
Jeffrey Schwentner: Watch dog timers
Zubair Ahmad and Ilhan Akbas: Real time application interface for Linux
Loren Stroup: POSIX threads.
David Benjamin: RTOS vs. the traditional interrupt driven approach to system design using microcontrollers.
||Michele Gaetani: VxWorks operating system
Ghaith Haddad: JavaSpaces / Linda language
||Jason Beck and Megan Hefferman: Esterel programming language
Phuoc Nguyen: HLA for distributed simulations
||Bennie Lewis: Remote Method Invocation in Java
Howard Kerey: Multiprocessor Pipelining for Graphic Rendering
||Nestor Rivera, Feras Batarseh and Nallavolu Kalpana:
Concurrency design patterns
Ehsan Ghaneie: Patterns and tools for achieving predictability and performance with real-time Java.
||Rashad Oreifej and Christopher Stricklan: Jini / Apache River
Tim St. John: Real-time Java garbage collectors.
XML (AJAX) based web applications
Ken Waller: CORBA Applications using ACE/TAO
||Final project presentations: Mohammed Zubair, Mustafa Akbas, Ghaith Haddad,
||Homework 2 - Dec 1st, 2007
||Final project presentations: Kerey Howard, Nguyen Phuoc, Dave Benjamin,
Ken Waller, Ehsan Ghaneie, Sorosh Olamaei, Michelle Gaetani
||Final project presentations: Steve Roberts, Tim St.John, Loren Stroup, Megan Hefferman, Jason Beck,
Bennie Lewis, Jeffrey Schwentner
||Final project presentations: Gloria Law, Joshua Mahaz, Feras
Batarseh, Nestor Rivera, Kalpana Nallavolu
HOMEDIR = /opt/timesys/rtsj-ri_alpha KERNEL = 2.6.20 JAVATARGET = -target 1.3 -source 1.3 Hello1.class: Hello1.java javac $(JAVATARGET) -classpath $(HOMEDIR)/lib/foundation.jar Hello1.java run: export LD_ASSUME_KERNEL=$(KERNEL); $(HOMEDIR)/bin/tjvm -Djava.class.path=. -Xbootclasspath=$(HOMEDIR)/lib/foundation.jar Hello1