EE319K Introduction to Embedded Systems, Fall 2009 (12/5/09 version)
Course Catalog Description Embedded systems; machine language execution; assembly language programming; local variables; input/output synchronization; analog to digital conversion, digital to analog conversion; debugging; and interrupts.
Overview
  EE319K will continue the bottom-up educational approach, started in EE302 and EE306. The overall educational objective is to allow students to discover how the computer interacts with its environment. It will provide hands-on experiences of how an embedded system could be used to solve EE problems. The focus will be understanding and analysis rather than design. The analog to digital converter (ADC) and digital to analog converter (DAC) are the chosen mechanism to bridge the CE and EE worlds. EE concepts include Ohms Law, LED voltage/current, resistance measurement, and stepper motor control. CE concepts include I/O device drivers, debugging, stacks, FIFO queues, local variables and interrupts. The hardware construction is performed on a breadboard and debugged using a multimeter (students learn to measure voltage and resistance). Software is developed in Freescale 9S12 assembly; 3 out of the 10 labs are simulated-only in TExaS and other 7 are first simulated on TExaS then run on the real 9S12. Software debugging occurs during the simulation stage. Verification occurs in both stages. Labs 1 through 5 are written in 9S12 assembly language. Labs 6 through 10 are written in a combination of assembly and C.
Class: ACA 1.104, Monday, Wednesday, Friday 10-10:50am    Lab: ACA 1.106
Office Hours: Monday 11:15am-12noon, Wednesday 12noon-12:45pm, Friday 1-1:45pm
Instructor: Jonathan W. Valvano, ENS627, 471-5141
email valvano@mail.utexas.edu  (put "EE319K" in the email title, send no ZIP files)  
Web page http://users.ece.utexas.edu/~valvano 
Lecture notes and lab assignments http://users.ece.utexas.edu/~valvano/EE319K
Data sheets http://www.ece.utexas.edu/~valvano/Datasheets  
Starter files http://www.ece.utexas.edu/~valvano/Starterfiles 
Unique Numbers:  16480 Th1-2, 16485 Th2-3, 16490 Th3-4
Text: Introduction to Embedded Systems: Interfacing to the Freescale 9S12, Cengage Publishing 2009, ISBN-10: 049541137X | ISBN-13: 9780495411376, by J. W. Valvano,  Cengage Learning Publisher's Website list of textbook errors
Equipment to buy: You will need a voltmeter (one less than $20 will do), soldering iron (with solder), and a wire stripper. Due to the lead in most solder, please wash your hands after soldering, before eating or drinking. We will be giving you a 9S12DP512 development board, a prototyping board, and some external components. If you are pregnant or think you might be pregnant, have someone else do the soldering.
TAs:                 
     (TA) Suhas Chakravarty, suhas.chakravarty@gmail.com
     (TA) Evgeni Krimer, ekrimer@ece.utexas.edu
     (Yerraballi TA) Manish Arora, floopydrive@gmail.com
     (Yerraballi TA) Fábio Fernandes, fabiogf@gmail.com 
     (Yerraballi TA) Eshwaran Kumar, eshwaran.vijayakumar@mail.utexas.edu
     (Yerraballi TA) Mrinal Deo, mrinal.deo@gmail.com
Reference materials: Data sheets for most of the devices used in this class are available as pdf files on my web site. Please make sure you have access to the CPU12 instruction manual, either in print (from 2nd floor lab or in my office) or pdf form. You should download these data sheets and have them available when you are developing code
32 page CPU12 quick reference http://users.ece.utexas.edu/~valvano/Datasheets/CPU12rg.pdf 
458 page CPU12 programming reference http://users.ece.utexas.edu/~valvano/Datasheets/S12CPUV2.pdf 
9S12DP512 datasheets http://users.ece.utexas.edu/~valvano/Datasheets/MC9S12DP512.zip
Tech arts board information http://users.ece.utexas.edu/~valvano/Datasheets/TechArts9S12DP512.pdf

Short Movies describing TExaS http://users.ece.utexas.edu/~valvano/Readme.htm
Web videos of the Example lessons from the book  

Prerequisites: EE306 and EE312 with a grade of C or better. There will be no re-tests, make-ups, or incompletes.
Teaching philosophy
I strongly encourage students to take an active role in this class.  Questions are welcome before, during and after class. Please feel free to email, visit or call me if you have questions.
Detailed Objectives of EE319K
0) Understanding how the computer stores and manipulates data (characters, integers, and fixed-point numbers), the basic arithmetic and logical operations performed by the computer,
1) The understanding of embedded systems (a system with the computer hidden inside) using modular design and abstraction,
2) Assembly language and C programming: considering both function and style,
3) Understanding how the computer executes instructions (fetch opcode, fetch operand, read data, operate, and write data)
4) The use of a microcontroller (strategic use of RAM ROM and I/O) Microcontrollers typically have a little RAM and a lot of ROM. Globals, locals and the heap go in RAM. Constants and programs go in ROM.
5) Debugging and verification using a simulator and on the microcontroller (embedded systems typically do not have a print function) debugging techniques such as breakpoints, scanpoints, profiles, monitors, voltmeters, oscilloscopes, logic analyzers
6) How input/output actually happens (the students wire up analog and digital signals to the 9S12 and measure them with a voltmeter), synchronization,  including switches, LEDs, LCDs, DACs, ADCs, and serial ports,
7) The implementation of an I/O driver (a set of programs that perform input/output)
8) Understanding, from an architecture standpoint, how local variables and parameters work (e.g., a space on the stack is dynamically created, the local variable is accessed using stack-pointer relative addressing, then the space is deallocated.)
9) Analog to digital conversion (ADC) e.g., the students interface a slide potentiometer to the ADC, and write software that measures the position of the slide, creating a display like “1.23 cm”
10) Interrupt synchronization, real-time ADC sampling (periodic timer interrupts), introduction to multithreaded programming
11) Simple motors (e.g., open and closed-loop stepper motor control)
12) Digital to analog conversion (DAC), used to make simple sounds
13) Design and implementation of elementary data structures, such as linked lists, stacks and queues.
After the successful conclusion of EE319K students should be able to understand the basic components of a computer, write assembly language programs that perform I/O functions and implement simple data structures, manipulate numbers in multiple formats, and understand how software uses global memory to store permanent information and the stack to store temporary information.
Grading:
25% Laboratory assignments, due on Thursday (when performed in groups of  2, one solution turned in)

    10% Homework assignments, usually due on Tuesday  

    15% In class Exam 1, Friday September 25, 10-10:50am, ACA 1.104
    15% In lab
Exam 2, Wednesday, October 14, 10:00 to 11am, ACA 1.102, in large lab
    15% In class
Exam 3, Friday November 20, 10-10:50am, ACA 1.104
    20% Final, Tuesday December 15, 9am-12noon, 
UTC 3.132   regularly scheduled time and place
Cutoff scores for the corresponding letter grades will not be determined until after the final exam.  
Attendance: Students are expected to attend lectures. The book covers more information than the class, and we will use lectures to map our way through the book. If you miss class you may find it difficult to catch up.  


Fall 2009 Lab Schedule (labs due on Thursday, and are demonstrated to the TA)

8/27   

   

Go to ACA 1.106 for lab grading policy and demonstration

9/3   

   

Go to ACA 1.106 for demonstration

9/10   

Lab 1

Digital Lock I/O, parallel port, direction register and logical function, written in assembly (simulated, individual)

9/17   

 

Real board demonstration, bring your board to lab

9/24 Lab 2 LED flashing, written in assembly (simulated and board, individual)

10/1   

Lab 3

Debugging Techniques, one switch, one LED, written in assembly (simulated and board, individual)

10/8   

Lab 4  Traffic Light Controller using the real 9S12, written in assembly (simulated and board, individual)

10/14  

  Exam 2 (closed book) in ACA 1.102 Wednesday, starts 30 minutes before regularly class lab time

10/22   

Lab 5 

LCD device driver, decimal fixed-point output, local variables, written in assembly (simulated and board, groups of one or two)

10/29 

Lab 6

Real-time Position Monitor, ADC, interrupts, LCD, mixture of assembly and C (simulated and board, groups of one or two)

11/5   

Lab 7

Distributed DAS, serial port interrupts, FIFO queue, mixture of assembly and C (simulated and board, groups of two)

11/12   

Lab 8

Digital Piano using a 4-bit DAC, C (simulated and board, groups of one or two)

11/19   

Lab 9

Introduction to TRobot, data structures, layered software, stepper motors, mixture of assembly and C (simulated, groups of one or two)

11/26   

 

nothing due, week of  Thanksgiving

12/1   

Lab 10

10pm Lab10 due, uploaded onto Blackboard, there is no late turn in for Lab 10.

12/2   

Lab 10

TRobot Finals, mixture of assembly and C  (in class) (simulated, groups of two) (due 10pm 12/1 via Blackboard)

The following schedule is preliminary, please check the web for the most recent version.
Date Reading Assignment Topic
8/26 Chapter 1 aLec01, course description, flow charts, data flow graphs, call graphs
8/28 Appendix 1.1 through 1.8.2 aLec02, using the TExaS simulator, design of a NOT gate
8/31 Chapters 2 and 3 aLec03, numbers, hexadecimal,  TExaS ViewBox and help system
9/2 Chapters 2 and 4 aLec04, 9S12 architecture, registers, simple addressing modes, memory allocation
9/4 Chapter 2 aLec05, stack, subroutines, execution, parallel ports, direction registers
9/9 Chapter 3 aLec06, logical, shift, introduction to addition and subtraction
9/11 Sections 4.6 and 5.8 aLec07, Debugging in TExaS
9/14 Chapters 3 and 5 aLec08, Arithmetic operations, condition code bits, if-then
9/16 Appendix 2 aLec09, Demonstration of the board (bring your board to class)
9/18 Section 2.6 aLec09, Switch input and LED output, real board, voltmeter debugging
9/21 Section 5.1, 5.2, 5.6, 6.11 aLec10, Loops, modular design, subroutines, debugging dump
9/23 Chapters 1-5 aLec11, Exam 1 review,
9/25 Chapters 1-5 Exam 1 (closed book) Room ACA 1.104
9/28 Sections 6.1, 6.2, 6.3 aLec12, pointers using indexed addressing, array
9/30 Sections 4.4, 6.8 aLec13, Timer, Finite state machines
10/2 Sections 5.8, 6.11 aLec14, Functional debugging
10/5 Sections 6.8 aLec15, Finite state machines
10/7 Sections 7.1-7.4, 9.1 aLec16, Local variables, fixed-point numbers, floating point, ASCII,
10/9 Sections 7.1-7.4, 10.5 aLec17, Local variables, LCD interface
10/12 Sections 10.1, 8.4 aLec18, LCD interface, fixed-point conversions
10/14 Chapters 5 and 6 Exam 2 (closed book) in Lab, ACA 1.102, starts 30 minutes before regularly scheduled lab time
10/16 Sections 9.1, 9.2, 9.4, 9.6 aLec19, Timer, introduction to interrupts
10/19 Section 9.6 aLec20, Output compare interrupts, debugging interrupt systems
10/21 Section 10.2 aLec22, C/assembly interface, numerical calculations , emul ediv
10/23 Section 11.1, 11.4 aLec23, Device driver, Metrowerks debugging, analog to digital conversion
10/26 Sections 9.6, 10.1, 11.4 aLec24, Lab 6 hints, design method, tables
10/28 Section 8.1 aLec25, SCI interface, interrupts
10/30 Sections 12.1-12.4 aLec26, Serial port interrupts,  Fifo queue
11/2 Sections 12.1-12.4 aLec27, Real time systems, latency, priority, Fifo queue
11/4    
11/6 Section 11.2 aLec28, Digital to analog conversion
11/9 Section 11.3 aLec29, Sound generation
11/11 Section 8.7 aLec31, Stepper motors
11/13   aLec32, Introduction to TRobots
11/16   aLec30, Debugging in Metrowerks C, EE345L review, future of embedded systems
11/18 aLec33, Exam 3 review
11/20 Chapters 7-12 Exam 3 (closed book)  Room ACA 1.104
11/23   Go over Exam 3, and discuss TRobots strategy
11/25    no class
11/30   aLec35, Systems engineering
12/2   TRobots competition finals, who is the best programmer?
12/4 Chapters 1-13 aLec36, final exam review

Computer Usage: Computers in LRC complex are available for your usage. Sign up procedures are those established by the LRC. TA's in the laboratory are checking off programs and supervising while on duty, thus you can expect to have only a brief consultations with them. You should learn to develop software while on the computer. This course involves some projects that require extended periods of time to complete and a project cannot be done just overnight. Get started on an assignment early so you can get help if you need it. There are ample machine hours to give everyone more than enough time to complete each program. However, expect the laboratory to be crowded and machine time to be scarce if you attempt to work in the lab a day or two before an assignment is due. You will be competing with students in other courses for computer time. We need your assistance in the laboratory. Please report any equipment problems to the TA if they are present. If a TA is not present use the form provided in the lab. If you do this we can rapidly get repair service. Please help to keep the lab clean.
Laboratory policies: This is a programming class. Therefore, the quality of the software you write will significantly affect your grade. In addition to writing software, each lab has specific activities that must be documented and turned in with the lab. These deliverables will be screen shots, circuit diagrams, measurements or data analyses. When you get the program finished, make a printout of your assembly listing, all deliverables, and staple a grading sheet to the front, and then demonstrate it to a TA. The TA will record the performance and demonstration grades on the grading sheet. Labs are due during your scheduled lab period on Thursday. A detailed schedule follows. Late assignments incur a penalty of 10% of the maximum score per day for the first three days and will not be accepted afterwards. Exceptionally "good" programs may be given extra credit. If you do extra functions in your program, point out and demonstrate the extra functions to the TA when you demonstrate your program. Partial credit, not to exceed a maximum of 75% of full credit, may be awarded to a program that does not meet all specifications. Often it is better to demonstrate an incomplete program, rather than incur late penalties while fixing all its bugs. There are five components to the lab grade:
1. Deliverables 20% (graded later):
2. Performance 30% (graded by the TA at the time of checkout):
    How well does it work? Does it crash?
    Does it handle correctly all situations as specified?
    How clean is the user interface?
    Possible 5% Bonus, does it do more than specified?
3. Demonstration 30% (graded by the TA at the time of checkout):
    Can you explain to the TA how your software works? Be prepared to explain the data flow through your system.
    Can you explain why you made certain software engineering tradeoffs?
    Both partners if applicable must be present during the demonstration.
    There is a lot of starter code in the book and installed with TExaS. It is natural and appropriate for you to look at these examples. However, during demonstration you are expected to understand both the algorithm used and the     implementation details of ALL 9S12 assembly software you are running at the time of checkout. In particular, the contents of these starter files will be examinable for the lab checkouts as well as for in-class written exams.
4. Software quality 20% (graded later):
    Clearly describe the data and program structures in the software comments. Simple well-structured software with descriptive labels is much easier to understand than complex software with voluminous comments. Use either top-down or bottom up structure. Modular programming divides the problem into "natural divisions" with minimal coupling. The interfaces should be simple and natural. The software will be graded on the correctness of the program function, the comments, the interface to the user, the style, and the organization. The effort spent to write high quality software will be rewarded both during debugging and when it is time to add features in the future.
5. Late penalties (-10% per day, not including Saturday and Sunday)
Lab Partners: Most labs must be performed individually, and for others you may work either with a partner or by yourself. The lab partnership must be registered with the TA (a simple hand written note or email signed by both students will suffice) 4 calendar days before the assignment is due. Once registered, the partnership will continue. A partnership can be dissolved by either party in writing 4 calendar days before the assignment is due. Both partners must be present during the TA demonstration.
EE319K kit handed out by Daryl Goodnight (2nd floor) and do not need to be returned (however we will expect you to use this board subsequently if you take EE345L and/or EE345M)
 
9S12DP512 board
  Power adapter
  RS232 9-pin cable
  Protoboard
EE319K kit handed out by TAs
and do not need to be returned
 
1 7406
  6 LED (20 mA, red yellow, green)
  6 220 ohm 5%, 0.25 watt resistors
  3 push-button switches
  3 10k ohm 5%, 0.25 watt resistors
  3 1.5k ohm 5%, 0.25 watt resistors
  3 12k ohm 5%, 0.25 watt resistors
  18 inches 6-Wire 24 gauge
  1 0.1 uF ceramic bypass cap
  1 headphone jack
  1 20k ohm slide pot
Item to get from long term checkout
 
1 LCD display and serial cable (if you check out either of these two and do not return them, we will not give you a grade in EE319K)

Should you buy a computer? Let it be perfectly clear that the following remarks are my personal opinion, and do not reflect an official position of the department, college, or university. I feel very strongly that you should have your own computer on which you develop your software and write your reports. I think both software development and report writing should be done without paper, pencil and erasers. Having a computer at home allows you to organize your information (files, directories etc.) as well as your schedule (allocate your software development time for that the time of day during which you are most creative and energetic.) Physiologically most people are more energetic in the morning. On the other hand, there are fewer distractions late at night.
Which computer should I buy? In EE319K, we write assembly language programs for the 9S12 using a simulator which runs on an IBM-PC compatible running Windows 2000, XP or Vista. Many applications do not work properly on Vista, so I advise you put off upgrading to Vista if you can. The software development system will run on most PC's. I think the more money you invest, the happier you'll be.
TEXAS.EXE The simulator application, called Test EXecute And Simulate, is not freeware, so please don't post it on the net or otherwise send it to others. On the other hand, I grant EE319K students indefinite usage of the software, including installing the application on each of your personal computes. If you know of someone interested in the application have them contact me directly. It is the eighth semester we will be using the application in EE319K, but I will be make an updates to fix bugs or add features. Please work through the tutorials and examples to bring you up to speed on the various aspects of the system. Instructions for installing/upgrading TExaS will be provided on Blackboard. The TExaS application itself runs on Vista, but the help system does not run on Vista without a patch. Ask your TA how to get the TExaS help system to run under Vista.
Legal Stuff: The 12th class day is September 11. After this date, I will sign a drop only if the Dean approves it. Your current grade status must be a "C" or better for you to receive a "Q". Course evaluation is conducted on the last class day in accordance with the Measurement and Evaluation Center form. The final exam is at the time and place stated in the course schedule. The University of Texas at Austin provides upon request appropriate academic adjustments for qualified students with disabilities. For more information, contact the Office of the Dean of Students with Disabilities at 471-6259, 471-4241 TDD.
Cheating: "Faculty in the ECE Department are committed to detecting and responding to all instances of scholastic dishonesty and will pursue cases of scholastic dishonesty in accordance with university policy. Scholastic dishonesty, in all its forms, is a blight on our entire academic community. All parties in our community -- faculty, staff, and students -- are responsible for creating an environment that educates outstanding engineers, and this goal entails excellence in technical skills, self-giving citizenry, an ethical integrity. Industry wants engineers who are competent and fully trustworthy, and both qualities must be developed day by day throughout an entire lifetime. Scholastic dishonesty includes, but is not limited to, cheating, plagiarism, collusion, falsifying academic records, or any act designed to give an unfair academic advantage to the student. The fact that you are in this class as an engineering student is testament to your abilities. Penalties for scholastic dishonesty are severe and can include, but are not limited to, a written reprimand, a zero on the assignment/exam, re-taking the exam in question, an F in the course, or expulsion from the University. Don't jeopardize your career by an act of scholastic dishonesty. Details about academic integrity and what constitutes scholastic dishonesty can be found at the website for the UT Dean of Students Office and the General Information Catalog, Section 11-802." 
You are allowed to talk to your classmates about the lab assignments, but you are NOT allowed to look at each other's written work. Oral discussion about an assignment is encouraged and is not considered to be cheating. Copying of any part of a program is cheating without explicit reference to its source. If we find two programs that are copied, there will be a substantial penalty to both students, e.g., failure in the course. Students who cheat on tests or in lab will fail. Prosecution of cases isvery traumatic to both the student and instructor. It is appropriate to use software out of the book, class website as long as all copy-pasted software is explicitly referenced. Copy-pasting software from current or past EE319K students is scholastic dishonesty. Policies concerning the use of other people's software in this class:
    · I strongly encourage you to study existing software.
    · All applications and libraries must be legally obtained. E.g.,
        You may use libraries that came when you bought a compiler.
        You may use software obtained from the web.
        You may copy and paste from the existing source code.
    · You may use any existing source code that is clearly referenced and categorized:
        original: completely written by you,
        derived: fundamental approach is copied but it is your implementation,
        modified: source code significantly edited to serve your purpose,
        copied: source code includes minor modifications.
Curious about my research? See http://users.ece.utexas.edu/~valvano/research 
Online homework submission 
You can work together in groups of any size, but everyone enters a separate online solution. Other than breaking into the system and changing grades, you may get as much help from anyone in any way you please to complete the online homework.
STEP 1:
Log into the Quest Homework Service at the URL https://quest.cns.utexas.edu/student/   Click Get Started, log into with UT EID, you should see EE319K as one of the choices  
STEP 2:

Download: Students' Instructions
Download:     First Homework   
STEP 3: Work one homework question.  Log in again and submit its answer before next class period.
STEP 4: Continue submitting answers until due time.
STEP 5: Download the solutions after due time.


There will be a signup for Lab checkout times. Each student will have a specific checkout time which will be when their lab will be demonstrated to their TA.

HW1 hints:
Microcontroller - see glossary for definition
Microprocessor - see "processor" in Figure 1.1
Microcomputer - see glossary for definition
IBM-PC is not a microprocessor
 The newest version of TExaS is available (UPGRADE to latest version). There are also install CDs that you can checkout from the 2nd floor lab.