|
|
This is the first course in the three-course Embedded and Real-Time Systems Programming Certificate Program. In this course, you will learn the fundamentals of computer architecture and basic hardware concepts; and will learn how to develop software on embedded devices. Special emphasis is placed on how software interacts with hardware, i.e. how a programmer tells a computer what to do at a low level. Regardless of your background in hardware and software, upon completing the course, you should be ready to advance to the second and third courses in the program.
.
After you have mastered the material in this course, you should be able to
1. Proficiency in C or C++ is required for this course. This means that you know about and know how to use the following:
We will be covering some of these topics as they relate to embedded systems. You'll get some review as we progress through the material, but if you are out of practice writing a C program, you will need to brush up on this skill.
2. You must also be familiar with the software development process and some set of development tools. You should be able to build a program, run it, and debug it.
The PC will also need at least one serial port (DB-9) and a parallel port. If your PC doesn't have one of these ports, you won't be able to complete the programming assignments. If you're using these ports for other devices (e.g. printer, handheld device synchronization) you will need to configure your PC to share.
| Lesson | Topics | Homework | Reading Assignment |
| One |
|
Lesson One Written Assignment
Number conversion, arithmetic, ColdFire and MCF5206e manuals Lesson One Programming Assignment Setup and verify board with demo software. Prepare but do not setup wiggler. Install Metrowerks and verify installation. |
Simon:
Ch. 1: A First Look At Embedded Systems Ch. 9: Embedded Software Development Tools ColdFire Microprocessor Family Reference Manual: Skim only for assignment. MCF5206e User's Manual: Skim only for assignment. ColdFire Development Board User's Guide: Referenced during programming assignment. |
| Two |
|
Lesson Two Written Assignment
Problems from Simon Ch. 2 and 3. Development board schematics questions. Lesson Two Programming Assignment Connect the wiggler. Memory performance investigation (speed versus memory type, access width, and alignment). Lesson Two Programming Project |
Simon:
Ch. 2: Hardware Funadamentals for the Software Engineer Ch 3: Advanced Hardware Fundamentals |
| Three |
|
Lesson Three Programming Assignment
Simple memory mapped I/O to light up LEDs. |
ColdFire Development Board
User's Guide:
Referenced during programming assignment. |
| Four |
|
Lesson Four Programming Assignment
Keypad scanning and audio codec. |
ColdFire Development Board User's Guide:
Referenced during programming assignment. |
| Five |
|
Lesson Five Programming Assignment
Single step exercise. Modify assembly routines to unroll loops. |
ColdFire Microprocessor Family Reference Manual:
Referenced during the programming assignment. |
| Six |
|
Lesson Six Programming Assignment
Implementing, testing, and measuring performance of a high performance
|
ColdFire Microprocessor Family Reference Manual:
Referenced during the programming assignment. |
| Seven |
|
Lesson Seven Written Assignment
Questions on interrupts to prepare for the next programming assignment. |
Simon:
Ch. 4: Interrupts |
| Eight |
|
Lesson Eight Programming Assignment
Interrupt driven electronic synthesizer. |
MCF5206e User's Manual:
Referenced during programming assignment. ColdFire Development Board User's Guide: Referenced during programming assignment. Optional Texts: Computer Organization and Design: The Hardware Software Interfaceby David A. Patterson and John L. Hennessy See MIPS Run by Dominic Sweetman |
| Nine |
|
Lesson Nine Programming Assignment
Handling multiple interrupts ( |
MCF5206e User's Manual:
Referenced during programming assignment. ColdFire Development Board User's Guide: Referenced during programming assignment. |
| Ten | Final Exam Preparation |
You must earn an 80 percent average to pass this course. See the FAQ section for assignment criteria.
Just don't do it. I don't want to have to deal with it. If I have to deal with it, the proper university authorities will be notified.
Is collaboration or getting help from others cheating? No (except on exams), but follow the Gilligan's Island rule. I had this rule while in school, and it works well.
Gilligan's Island Rule
If you get help from someone else or some other source (e.g. Internet), you must watch a half hour of Gilligan's Island (or do some other mind numbing activity) before continuing with your work. You cannot use any written notes or anything else from the help session other than what you remember in your brain.
The reasoning is that if you can derive useful information by consulting with someone else, and you can retain the information through a half hour, then you must have learned the information. Since learning the information was the goal in the first place, this isn't cheating.
Please see the course calendar for assignment due dates.
Written assignments. Written assignments should be submitted via the E-submit tool on your syllabus.
Use only Adobe Acrobat PDF format, Postscript (PS) format, or plain text. Do not use Microsoft (Word, Excel, PowerPoint) as these applications are susceptible to the many new macro virii that emerge every day.
Note: Print files to PostScript by using any Windows provided postscript driver and print to file. With Postscript, (as with PDF files) everything is printed as intended (WYSIWYG - What You See Is What You Get).
You also may submit written assignments by e-mail, fax, or postal mail if it
is more convenient.
Programming assignments. Programming assignments should be submitted via E-submit as zipped up projects with sources only (no objects, executables, S-records files, etc.). You may also need to submit some hardcopy to accompany it; in which case, follow the guidelines described for the written assignment.
If you turn in the sources for your programming assignment and you want to make changes, send me another e-mail with your new version, and indicate that it's a new version. Try to minimize the number of times you do this. Turn in your assignments when you're ready—you don't get extra points for being early.
If you incur extenuating circumstances that hinder completing your assignments by the end of the course, please contact me to discuss the possibility of an extension.
It's up to you. If you want to type out your assignments instead of faxing in handwritten ones, go ahead. I have nothing against handwritten assignments as long as I can read your writing. In either case, be sure to show your work (if the question format requires it) and be sure that your answer is obvious. I don't want to sort through a page full of chicken scratch equations to find an answer.
Reading assignments will take from two to three hours, and programming assignments from 10 to 20 hours. If you find yourself working considerably longer, please let me know. My goal is not to break you by loading you down with massive amounts of homework. As it's difficult for me to judge how long each assignment will take, I rely on feedback from you.
Similarly, if you're breezing through the assignments and start to get bored, let me know. I'll try to send you some supplemental material to challenge you.
If you think that a mistake was made in grading your work (assignments or exams), write up a description of the problem on a separate piece of paper and send it to me along with the unaltered original work. I will consider your regrade request. Note that you cannot add more information to your description, and you cannot change your original work. Your grade can go up or down, so be sure you have a legitimate request.
Yes and no. I'm not going to be real particular about how you format your code and name your variables. As long as your code is readable, I'll be happy. To ensure your code is readable, you should follow these rules at a minimum.
A good litmus test is to open your file in Notepad. If it looks good, you're set. If it looks weird, you should go back and do some formatting.
Here is an example of a well-formatted file. It's a derivation of "Cutler Normal Form." Remember that it's just an example of formatting. Each environment—be it an operating system, a company, or a customer—will have a different form. You'll probably be better off trying to fit the mold rather than attempting to do your own thing.
|
Richard Chinn is a Senior Software Engineer at BSQUARE Corp., where he has spent more than three years working with Windows CE on a variety of hardware platforms and devices. Most of his work has been at the operating system and driver level. Prior to working at BSQUARE, Chinn graduated from the University of Washington Department of Computer Science and Engineering with a B.S. degree. During his studies, he had an opportunity to work on the Raven Human Powered Airplane project, where he developed software for the on-board flight computer.
|
During the past 10 years, Ishihara has worked with battery management embedded systems. He currently works with companies such as Charles Industries Marine to license this technology. He was an expert advisor for UW's Electrical Engineering Embedded Microcomputer Systems class to aid students, and he tutored students in embedded systems from other colleges.
|
Dr. Jelena Vucetic has been teaching and researching in the area of business and technology management for more than ten years. She has taught students in distance learning programs, as well as traditional students, at the Masters and Undergraduate levels. Focusing largely on technology, strategic management and the relationship between business and technology, Jelena has taught at the Polytechnic University Brooklyn, NY, the George Washington University in Washington, D.C., University of Maryland University College (online), and University of Phoenix (online). Dr. Vucetic is a business and technology management consultant in the Washington, D.C. area. Her clients are primarily focused on telecommunications industry. She is also a founder of a small high-tech private company that provides products for the wireless telecommunications market. This company has been in business for more than five years, and Jelena was its President and Director of the Board during its first three years.
Dr. Vucetic has more than 15 years of industrial experience in telecommunications and computer systems, including engineering, business development, marketing, sales, operations and manufacturing. Her strong interest and background in embedded systems has been the major motivator for her to take part in the development of this course.
Dr. Vucetic’s educational background includes an MBA degree, a Ph.D. degree in Electrical Engineering, Master's in Computer Science, and a B.S. degree in Electrical Engineering.
Dr. Vucetic is also an author of four patents issued by the USPTO, as well as of around 40 professional publications.
If you need technical help, e-mail Program Support Services at dltechsupp@ese.washington.edu. You may also call (800) 543-2350; fax (206) 543-0887; or call (206) 543-0898 (TTY).