EE319K Introduction to Embedded Systems, Spring 2013 (2/15/2013 version)

Course Catalog Description Embedded systems; machine language execution; assembly and C language programming; local variables and subroutines; input/output synchronization; analog to digital conversion and digital to analog conversion; debugging; and interrupts.  
  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 Arm Cortex M assembly and in C; most labs will be first simulated then run on the real LM3S1968. Software debugging occurs during the simulation stage. Verification occurs in both stages. Labs 1 through 6 are written in Arm Cortex M assembly language. Labs 8 and 9 are written in a combination of assembly and C.  Labs 7 and 10 are written in C.
Class: ACA 1.104, Monday, Wednesday, Friday 2-2:50pm    Lab: ENS507
Office Hours (subject to change): Monday 11-12noon, Tuesday 11-12noon, Friday 1-2pm

Instructor: Jonathan W. Valvano, ENS627, 471-5141

  (put "EE319K" in the email title, send no ZIP files).    Email all professors and TAs (
Web page 
Class Web page (Lecture notes, homework, and lab assignments) 
Data sheets  
Starter files 
Unique Numbers (lab times) All labs in ENS507: 
Ramesh Yerraballi Lecture TTh 9:30 NOA  1.126

16145 T 12

16150 Th 12

16155 T 1

16160 Th 1

Andreas Gerstlauer Lecture TTh 12:30 ACA1.104

16165 W 3

16170 T 4

16175 W 4

16180 T 5

Jonathan Valvano Lecture MWF 2 ACA1.104

16205 Th 1

16210 Th 2

16215 Th 3

16220 Th 4

Ramesh Yerraballi Lecture TTh 3:30 CPE2.208

16225 W 2

16230 W 3

16235 W 4

16240 W 5
Text: Embedded Systems: Introduction to ARM Cortex-M Microcontrollers,   ISBN: 978-1477508992  Available from Amazon.


Equipment to buy: Every group of two students will be required to have a Texas Instruments LM3S1968 kit by the start of your lab period on Thursday 2/7. Since this is a new kit with a lot of features that can be used after EE319K is over. Starting Fall 2013 EE319K and EE445L will be transitioning to a newer EK-LM4F120XL LaunchPad kit. If you can afford it, we suggest each student purchase one kit at the start of the semester. The first possibility is to buy or borrow a LM3S1968 kit from a previous EE319K/EE445L student. If you obtain a kit from a previous student, you will need the LM3S1968 board, USB cable, two male headers (soldered onto the board) and a solderless breadboard. If you do buy a board/borrow from another student, I recommend you let the TA test it to make sure the board is functional. The second possibility is to purchase a new Texas Instruments LM3S1968 kit, which includes a board, USB cable, two male headers (not soldered on) and solderless breadboard. The Mouser part number is 595-EDU-VALVANO-K. The student cost will be $60.00 per kit plus about $5 tax and is available from You will have to log in using a University of Texas email (details on Blackboard). Every student should own their own voltmeter and their own wire strippers. A voltmeter less than $20 will do, see BG Micro, or Jameco  Harbor Freight has three locations around Austin and usually sells voltmeters for less than $10 Since you will be making only 5 solder joints all semester, all students will be able to share the soldering iron in lab. However, all EE319K students will need their own voltmeter and wire strippers. The NI MyDAC you bought in EE302 can be used for as the voltmeter.

Safety warnings: Due to the lead in most solder, please wash your hands after soldering, before eating or drinking. If you drop the soldering iron, let it fall to the ground. Do not try and catch it. If you are pregnant or think you might be pregnant, have someone else do the soldering.

TAs:   Pictures  TAs will hold office hours in Lab: ENS507. The office hours will be posted in lab. About 32 students will be assigned to each 20-hour TA, and 16 students to each 10-hour TA.    Email all professors and TAs (         
Sparsh Singhai
Saugata Bhattacharyya
Chinmaya Dattathri
Emily Ledbetter
Kevin Gilbert
Siavash Zangeneh Kamali
Yen-Kai Huang
Michael Xing
Nathan Quang Minh Thai
Katherine Olin
Mitchell Crooks
Prachi Gupta
Mark Meserve

Outcomes: After the successful conclusion of EE319K students should be able to understand the basic components of a computer, write assembly and C 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. 

Lab lectures  These are optional sessions given by the TAs to help answer lab questions.

   Fridays ENS127 3-4pm (covering the lab due the following week)

   Mondays ENS127 6:30-7:30pm (covering the lab due the same week)

   Mondays ENS127 7:30-8:30pm (covering the lab due the same week)

   Tuesdays ENS306 6:30-7:30pm  (covering the lab due the same week)

Reference materials: EE319K will have reading assignments from Patt's Introduction to Computing Systems (textbook for EE306 and BME303). Data sheets for most of the devices used in this class are available as pdf files on the EE319K web site.

Prerequisites: EE306 or BME303 with a grade of at least C-.  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.

Things you should recall from EE306/BME303
1. Bits
    Numbers - Unsigned and Signed Integer representation in 2’s Complement
    True/False - Logical Operations
    Characters - ASCII representation
2. Gates
    DeMorgan’s Laws
3. Computer Components
    Central Processing Unit: Arithmetic Logic Unit, Control Unit, Registers
    Memory – ROM and RAM
    Address Space and Addressability
4. LC3 Assembly Language
    Instruction Set (ISA)
    Op-codes and Operands
    Memory operations
    Arithmetic and Logic operations
    Control operations – Branches/Jumps
    Addressing Modes
5. Programming
    Data Types

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 LM3S1968 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) Digital to analog conversion (DAC), used to make simple sounds
12) Design and implementation of elementary data structures, such as linked lists, stacks and queues.

30% Laboratory assignments, due on Thursday (performed in groups of  2, one solution turned in)
    10% 2 or 3 in class quizzes, programming practice assignments, and homework assignments   
    15% In class Exam 1, Friday, February 22, 2-2:50pm, ACA1.104, in regular classroom

HW0 through HW5

Lec1 through Lec4, and Lec5 through slide 11 (no arrays)

Worksheets WS_01 to WS_04, and Worksheet WS_05 questions 1 to 5 (no arrays)

Labs 1, 2, and 3
    20% In lab Exam 2, 7-9pm, Thursday, March 28, room TBA, students expected to have a laptop with Keil uVision for the Arm installed, with wireless internet access
    25% Final, Saturday, May 11, 2:00-5:00 pm,  regularly scheduled time and place
There will be suggested programming problems to solve, then 3 or 4 times per semester there will be a 10-minute in class quiz, where the problems will be selected from the suggested programming problems. The date of each quiz will be announced in class around 1 week in advance. The specific dates for these quizzes will not be posted in the syllabus or on blackboard. 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.  

Spring 2013 Lab Schedule. The dates listed in the following lab schedule refer to the week that begins with this date. In Valvano’s class all labs due on Thursdays, and are demonstrated to the TA.



None, do not go to lab



Go to ENS507 for demonstration, install Keil uVision for the Arm on your laptop before coming to your lab


Lab 1

Digital I/O, parallel port, direction register and logical function, written in assembly (simulated, groups of two)



Real board demonstration, bring your board to lab,


Lab 2

For-loops, while-loops, if-then branching, subroutines, and time delays, written in assembly (simulated and board, groups of two)

Sometime after Lab 2 and before Lab 3 arrange to have your TA solder the 66 pins onto the board.


Lab 3

LED and switch interface, written in assembly (board, groups of two)


Lab 4

Debugging Techniques, one switch, one LED, written in assembly (simulated and board, groups of two)


Lab 5 

Traffic Light Controller, written in assembly (simulated and board, groups of two)


Lab 6 

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



Exam 2 (closed book), room TBA, 7-9pm March 28


Lab 7

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


Lab 8

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


Lab 9

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





Lab 10

Design competition, written in C (simulated and board, groups of two)

 The following schedule is preliminary; please check the web for the most recent version.




Lecture Schedule

Week 1   1/14 to


Chapter 1, Chapter 2

Introduction Course administration; Embedded systems, development cycle; Flow charts, data flow and call graph uVision  - simulator; digital logic; sOhm’s Law

Week 2
1/21 to 1/25

no class 1/21


Chapter 2 and 3, Sections 4.1.2, 4.2(Patt, Chapters 11 and 12)

Architecture– Arm Cortex-M3 architecture and execution; Simple addressing modes; Memory allocation; C Programming (C Primer) - Introduction to C; Structure of a C program

I/O, Execution, stack, subroutines - Parallel ports, direction registers; Logical and shift operations; C Programming – Assignment and Boolean Expressions.

Week 3   1/28 to  2/1


Chapters 2 and 3, Section 4.6

Debugging  - Debugging Keil uVision, Switch input and LED output

Arithmetic - Arithmetic operations; Condition code bits; C Programming – Functions

Week 4
2/4  to  2/8


Chapters 4 and 5

Board- Demo of the board);

Modular programming - If-then, loops; C Programming – Loops

Week 5

2/11  to  2/15


Sections 6.1-6.3, 4.4, (Patt, Chapters 14, 16)

Subroutines parameters and the stack; Pointers - Indexed addressing; Arrays; Strings

Advanced functional debugging. C Programming – Arrays, Indexing, Pointers;

Week 6  

2/18  to 2/22


Chapters 1 – 5

Timers  – Timers; Debugging dump; Profiling Review for Test 1:





February 22 - Test 1 (closed book), in regular class room

Week 7   2/27  to  3/2


Section 6.5, 7.6, 7.1-7.5

FSMs  - Finite state machines (FSMs)

Locals, parameters  - Local variables; Stack frames and parameter passing; I/O synchronization

C  Programming - Structures and data types; FSMs in C

Week 8
3/5   to 3/7


Section 7.1-7.5

C Programming – Scope of variables in C (Local/Global); Parameter Passing: Call-by-value and Call-by-reference. LCD interface - LCD programming; Number conversions

I/O Synchronization; Fixed-point numbers


3/11 to 3/15



Spring Break

Week 9   3/18   to  3/22


Section 7.6, 7.7, 7.8 (Patt, Chapter 17)

Thread synchronization

Chapter 5 and 6

Week 10  3/25  to  3/29


Section 9.1, 9.2, 9.3, 9.4, 9.6 (Patt, Chapter 17)

Interrupts  -interrupts and interrupt processing; SysTick interrupts

  C programming –  C/assembly interface;

Review for Test 2

DAC conversion  - Digital to analog conversion (DAC); Sound generation



Exam 2

March 28 - Test 2 (closed book): In lab (during evening), room TBA, students are expected to have a laptop with Keil uVision for the Arm installed and have wireless internet access

Week 11
4/1  to  4/5


Section 10.1, 10.2, 10.3, 10.4


ADC conversion  - Analog to digital conversion (ADC) Lab 8 design methods

Week 12  
4/8   to 4/12


Section 6.8, Section 8.2

Thread communication  - Producer-consumer problems; FIFO queue; C Programming - FIFO.

Serial I/O - universal asynchronous receiver transmitter (UART); UART programming and interrupts; Lab 9 introduction

Week 13   4/15  to 4/19


Section 11.1-11.4, (Patt, Chapter 19, skip Sections 19.4)



Week 14  
4/22  to 4/26



C structures, abstraction, software design, software testing

Week 15

4/29  to  5/4



Review for Final Exam: Chapter 1 – 11




Design Competition in Class

The following schedule is preliminary; please check the web for the most recent version.

Due Date, Monday 2pm

Homework Schedule, show to TA during class 

1/23 (Wednesday)

Homework 0: Definitions and numbers


Homework 1: Introduction to C


Homework 2: Numbers, arithmetic and logical operations


Homework 3: Loops and arithmetic operations


Homework 4: Pointers and functions, call by value, call by reference


Homework 5: Practice number conversion, carry/overflow bits


Homework 6: Arrays, indexing, pointers


Homework 7: Practice Exam 2s, Exam2_sum and Exam2_Quad


Homework 8: Practice Exam 2s


Homework 9: Pointers and testing, (Patt, Chapters 15, and 16 (Patt, Chapter 17)


Homework 10: C programming assignment


Homework 11: C programming assignment


Homework 12: C programming assignment


Pop quiz (evaluations)


Computer Usage: Computers in ENS507 are available for your usage. 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 not enough machine hours to give everyone more than enough time to complete each program. We expect most students to have a laptop have access to a machine to run at home. Unfortunately, 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: See the Lab manual

Lab Partners: See the Lab manual

EE319K kit handed out by TAs and do not need to be returned
1 7406, six open collector drivers used for the LED interfaces
  6 LEDs (20 mA, 2 red, 2 yellow, and 2 green LEDs)
  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
  2 feet of 4-Wire 24 gauge solid wire, used to prototyping
  1 0.1 uF ceramic bypass cap, place across power and ground of the 7406
  1 headphone jack, used in lab 7 to create audio
  1 20k ohm slide pot, used in labs 8 and 9 to measure distance

Item to get from long term checkout
1 LCD display (if you check out the LCD and do not return it and its bag by 5/4, we will reduce your overall grade in EE319K one letter grade)

Item to get from your TA
  serial cable for Lab 9, used to connect one LM3S1968 board to another

Should you buy a computer? We expect each EE319K student to have a personal laptop. This laptop will greatly simplify lab completion, and it is required to complete Exam 2. 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. Some students do their EE319K lab work on campus, but most find it convenient to configure their home computers to work with the EE319K hardware.
Which computer should I buy? You will need to install Keil uVision for the Arm. For drawing electrical circuit diagrams some students use PCBArtist. Both of these applications run on a PC computer running Windows XP, Vista or Windows 7.  The software development systems will run on any PC with a USB port.  I think the more money you invest, the happier you'll be. All software will also run on a Macintosh with an Intel processor; see

PCBArtist. You will be drawing a 5 or 6 circuit diagrams as part of your lab assignments. You are free to draw these diagrams in any manner you wish as long as the information is presented in a complete and professional manner. One option for drawing circuits is PCBArtist, which can be downloaded at . Be careful when downloading and installing this free program; it wants to install a lot of unnecessary add-ons. Therefore we will post the basic installer on Blackboard, and we suggest you install the Blackboard-posted version. The use of a drawing program like PCBArtist is required for EE319K students. If you plan to use a different circuit drawing program, please get it approved by your TA.

Homework submission 
All homework will be submitted in class as one piece of printed paper. There will be approximately one homework assignment each week, due at the start of class on Mondays. Late homework will not be accepted. You are allowed to work in groups of 1 or 2 students on homework. However, both students must complete the online activities, Each student turns in one piece of paper with their name on the top.

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. You can only switch Lab sections using official add/drop procedures.

Legal Stuff: The 12th class day is January 30. The drop policy is extremely complicated. See your academic advisor or the Dean of Students for more information. 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. Students with disabilities may request appropriate academic accommodations from the Division of Diversity and Community Engagement, For more information, contact Services for Students with Disabilities, 471-6259, April 1 is the last day an undergraduate student may, with the dean’s approval, withdraw from the University or drop a class except for urgent and substantiated, nonacademic reasons.
Religious Holy Days By UT Austin policy, you must notify me of your pending absence at least fourteen days prior to the date of observance of a religious holy day. If you must miss a class, an examination, a work assignment, or a project in order to observe a religious holy day, I will give you an opportunity to complete the missed work within a reasonable time after the absence.

Scholastic dishonesty: "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 encouraged to study together and to discuss information and concepts with other students. You can give "consulting" help to or receive "consulting" help from such students in oral form. However, this permissible cooperation should never involve one student having possession of a copy of all or part of work done by someone else, in the form of an email, an email attachment file, a portable storage device, or a hard copy. Copying of any part of a program is cheating without explicit reference to its source. We do enter lab assignments turned in by EE319K students through a plagiarism checker, comparing them to assignments of this and previous semesters. 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 is very 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.

The University Honor Code is "The core values of the University of Texas at Austin are learning, discovery, freedom, leadership, individual opportunity, and responsibility. Each member of the University is expected to uphold these values through integrity, honesty, trust, fairness, and respect toward peers and community."

Abet material
Three lecture hours and one laboratory hour a week for one semester.  
Design Assignments: Labs 5, 8, 9, 10 (1 week each)
Laboratory Projects: Labs 1, 2, 3, 4, 6, and 7
SCH Engineering Topics 3 (Including: 1 SCH of Engineering Design)
Relationship of the Course to ABET EC2000 Program Outcomes:


ABET EC2000 Program Outcomes


a.      An ability to apply knowledge of mathematics, science, and engineering


b.   An ability to design and conduct experiments, as well as to analyze and interpret data


c.   an ability to design a system, component, or process to meet desired needs within realistic constraints such as economic, environmental, social, political, ethical, health and safety, manufacturability, and sustainability


d.   An ability to function on multi-disciplinary teams


e.   An ability to identify, formulate, and solve engineering problems


f.    An understanding of professional and ethical responsibility


g.   An ability to communicate effectively


h.   The broad education necessary to understand the impact of engineering solutions in a global, economic, environmental, and societal context


i.    A recognition of the need for, and an ability to engage in life-long learning


j.    A knowledge of contemporary issues


k.   An ability to use the techniques, skills, and modern engineering tools necessary for engineering practice

 ABET Criterion 9:  Program Criteria for Electrical Engineering Curriculum Achieved:




 Programs must demonstrate that graduates have a knowledge of:


1.   Probability and statistics, including applications appropriate to the program name and objectives;


2.   Mathematics through differential and integral calculus, basic sciences, computer science, and engineering sciences necessary to analyze and design complex electrical and electronic devices, software, and systems containing hardware and software components, as appropriate to program objectives.


3.   (Electrical) Advanced mathematics, typically including differential equations, linear algebra, complex variables, and discrete mathematics.



 Curious about my research? See