CSCI 339-80 Embedded Systems


Spring 2005 syllabus

Instructor: Dan Eisenreich

Contact: email - dansix at pobox dot com. Please include the word "CSCI339" in the subject to help get past my spam filters (but no guarantees, if you don't get the expect reply from me then email me again).  I will also provide a phone number in class for urgent communication use (like "my dog ate my final project and its due tomorrow" would be a good use, but "my program won't compile" is not, use email for that).

Office hours: By appointment and 5pm-6pm before class.

Class time/place:  Thursdays 6:10-8:40pm, Tompkins 211

Textbook: Computers As Components, W Wolf, Morgan Kaufman

Course description: The purpose of this course is to engage computer science undergraduates and graduates with hardware and  embedded systems. While CS students get a strong conceptual overview of systems and hardware in various organization and architecture courses, many students have never experienced working with actual hardware (e.g., taking apart a computer, installing a memory board etc). This course will focus on hands-on projects involving both hardware and the software that's close to the hardware. This course will discuss the design issues in an embedded system and technologies needed to support such systems– the focus will be on the software aspects. In addition, we will also cover a gamut of systems-related topics.

Additional theme for this year: Java Virtual Machines for embedded systems and, how virtual machines work.

Grading: Students grade will be based on attendance, lab projects, final project and one in-class presentation.

Some things to remember:

Class Schedule:

January 27

Class 1:

Homework: Read chapter 1 of the book and short intro to Z8 development kit: Test Driving The Z8 (pdf).

Lab: Lab 0 - Getting started with the Z8.  Have this completed by the next class (Feb 3). No writeup is necessary but be prepared to discuss what worked and what didn't.


February 3

Class 2:

Homework:  Read chapter 2 of the book. Start thinking about a topic for your presentation.  Email me if you want to discuss your ideas or if you have questions.

LabLab 1 - A Real Simple Z8 Program.  Have this completed by the next class (Feb 10).  You can give me the files/printout in class or email them to me by the next day.


February 10

Class 3:

Homework:  Read chapter 3 of the book. Start thinking about your final project. Email me if you want to discuss your ideas, plans or questions.

Lab: Lab 2 - Z8 stopwatch.  Have this completed by the Feb 24 class (2 weeks).  


February 17

Class 4:

Homework:  Read chapter 4 of the book.

Lab: Lab 3 - Serial Communications. Have this completed by the March 3rd class (2 weeks).


February 24

Class 5:

Homework

Lab:  Lab 4 - Reading Serial Devices. Have this completed by the March 10th class (2 weeks)


March 3

Class 6:

Homework:  Start working on your projects if you have not already.

Lab: Lab 5 - Using Lego Robotics (graduate studnets only). Due MArch 31st (4 weeks).  

March 10

Class 7:

Homework:  Read chapter 5 of the book.

Lab: Lab 6 - Java Classfile details. Due  March 31st (3 weeks). 

March 17

No Class, Spring Break.  A good time to work on your presentations, labs and project.


March 24

Class 8:

Homework:

Lab: There will be one last lab, something to do with JVMs. I havn't figured out a good one yet. This will be the last lab so the students can focus on their final projects. 

March 31

Class 9:

Homework: Read chapter 7 of the book.  Write a short status report on your project (email is fine).


April 7

Class 10:

Homework:  Raed chapter 8 of the book.


April 14

Class 11:

Homework:


April 21

Class 12:

Homework:  Read  chapter 6 of the book.


April 28

Class 13:

Homework: Read chapter 9 of the book. 


May 5

Class 14:

Homework: Complete all unfinished projects, labs, assignments, presentations.

May 12

Final Exam Week:

No final exam but can be used for project presentations


Labs

For each lab other than the first one (lab 0) the student should send me (email, paper, or CD) your program (all .c and .h files) and a simple write up (nothing fancy) as a simple text file explaining what you did, what problems you had, how you solved them, and what you might do differently if you had to do it again. Include in your writeup which version of the ZDS II IDE you used, your name and email, and anything else you think is important.  Feel free to provide comments on how this lab went, what you think is good or bad about it and how I can improve it. If you email your files, please put all of the files into a simple zip, jar or tar file and send that to me.

Lab 0: Getting started with the Z8. Set up Z8 development kit, install software, try out the samples.  If you have time, install the newer software (ZiLOG Developer Studio II - Z8 Encore! F640X Version 4.6.1) you will need to register and login to get this version. Try the sample and note  what happens when you try to use the older project files with the newer version. Read these two whitepapers on the zilog website about the C compiler. Using the ZiLOG XTools Z8 Encore! C-Compiler White Paper and Compiler Compliance with ANSI Standard C White Paper.

Wander around the zilog web site and see all of the good stuff that is there. Get the documentation for the kit (its on the CD), the software (ZiLOG Developer Studio II - Z8 Encore! User Manual) and the Z8 datasheet ( Z8 Encore! Z8F640 Family of 8-Bit Microcontrollers Product Specification) and keep them handy.  Wonder around some of the Z8 project sites. Lots of  projects ideas at the Z8 Flash for Cash contest results web site. You can read what other folks are doing on the Yahoo Z8 forum and there are some simple projects on Mark Higgins basic Z8. Some low cost Z8 development kits from Ecros Z8 kits and Futurlec Z8 training board. You might fing some Z8 info on the  Zilog Web Ring and in the Electro-Tech microcontroller forum.site.

Lab 1A real simple Z8 program.Type in the LED example program from class or write your own version.  Modify it so that when you press one of the three buttons the corresponding LED array lights (and the others tunr off).  sw1 lights d1, sw2 lights d2 and sw3 lights d3. Lab 2: Z8 Stopwatch. Write a program that makes the Z8 board a simple stop watch. Button 1 starts the LED counting up (about one second per count). Button 1 again, stops the counting but keeps the count displayed. Button 1 resumes counting up. Pressing button 2 pauses the display but the count keeps counting. Pressing button 2 again causes the display to resume counting with the current count. Pressing button 3 clears the display and if its countting, starts counting from 0.
Lab 3: Serial communication. P:ick one (or both if your ambitious) of these. Both of these are similar to applications notes, but I want you to write your own verion, not simply copy the application note.
  1. Serial control
  2. IrDA control

Lab 4: Reading serial devices. Read from the SPI temperure sensor. Display it somehow, by either scrolling it across the LED, sending it by IrDA to another Z8 board, or simple sending out the serial port to a terminal program.  I will give you a 1-wire temperature sensor. Write a program that implements the 1-wire serial protocol (Maxim provides application notes on how to do this). Perhaps pushing one button will display/scroll the SPI device temperature and pushing another button will display/scroll the 1-wire temperature.

Lab 5: Using Lego RoboticsThis is a lab for graduate students only. Get familiar with the Lego Mindstorms kit. Get the RCX controller running with one of the open source Java Virtual Machines (tinyVM or LeJos). Write some programs that demonstrate the capability of using the JVM with the RCX controller (controlling the motors, sensing light and switches). Prepare a 20-30 minute  presentation for the class on this. Include what you did, sample programs, how you got the JVM to work (assuming you did), problems you encountered and how you solved them, improvements that can be made, and the JVM works.

Lab 6: Java classfile details. Write a simple program to read a java classfile and display the information in a human readable form. This can be done in a manner similar to javap or you can simply describe the classfile contents as its read. An example will be given. You can write this in any language you like (c/c++/java/whatever). In your write up, tell me why you pick the language you did and tell me if you think it was a good choice.

Lab 7:  Im still thinking on what this last lab will be.


Presentation

Prepare a 15 minute short tutorial for the rest of the class on an embedded systems topic. Topic of your presentation must be approved by me before starting. Email me a simple proposal (1 paragraph) with your topic and a should outline. Once we have agreed on a good topic we will then agree on a presentation date.

Some examples of topics are:

I will fill in more detail soon.

Final Project

A large part of your grade will be your final project. .You will propose some sort of emebdded development. Keep it reasonable, developing an embedded control system for a rocket may be difficult to demonstrate in the time we have.
Can be similar to otgher projects you have seen, but use the ideas only, implementg your own hardware and write your own prorams.
You will need to use one of the platforms available (Z8 or Lego RCX controller) embedded systems platform or provide your own.

The vision: What do you want to build
Detail the functional requirements. Detail the non-functional requirements.
Determine the types of sensors, actuators, communications and user interface you need.
Determine how to interface these to a microcontroller (or microcontroller project board).
Determine which microcontroller (or embedded board) is suitable and meets your functional/non-functional requirements.
Find sources for your components. Don't forget about cost and availability. Becuase we are time and money limited, plan your project around what you can get. You many need to relax some of your requirements to get your project done in the given time.

I will fill in more detail soon.