ECE 3140 Course Details

ECE 3140 Contents

Syllabus and Course Details
Lecture Notes

Note: Exams, quizzes, problem sets and labs are not available for this course.

Course Description

An introduction to the design of embedded systems, with an emphasis on understanding the interaction between hardware, software, and the physical world. Topics covered include assembly language programming, interrupts, I/O, concurrency management, scheduling, resource management and real-time constraints.

Instructor(s)

Prof. Rajit Manohar
Prof. José F. Martínez
Prof. G. Edward Suh

Course Level

Undergraduate (senior level)

Required Text(s)

No required textbook; course notes distributed via CMS/Canvas.

References:

  • ARM® v7-M Architecture Reference Manual
  • ARM® Cortex™-M4 Devices Generic User Guide
  • E.W. Dijkstra, Cooperating Sequential Processes, EWD-123, 1968
  • C.A.R. Hoare, Monitors: An Operating System Structuring Concept, STAN-CS-73-401, 1973
  • C.L. Liu and J.W. Layland, Scheduling Algorithms for Multiprogramming in a Hard-Real-Time Environment, J. of the ACM, Vol. 20, No. 1, 1973
  • G. Buttazzo, Hard Real-Time Computer Systems: Predictable Scheduling Algorithms and Applications, 3rd Ed., Springer, 2011

Course Structure

The course consists of:

  • Exams: Two preliminary exams, and weekly in-class quizzes.
  • Problem sets: Bi-weekly problem sets.
  • Labs: Six lab assignments on programming an embedded system platform (NXP FRDM-K64F microcontroller. The first five lab assignments have fixed topics, which include:
    • Programming in the ARM assembly language
    • Controlling LED lights (I/O) using interrupts
    • Writing a process scheduler for concurrent program execution
    • Implementing locks and condition variables
    • Implementing real-time scheduling algorithms.
    • The final lab assignment is an open-ended project where student groups choose a topic and build an embedded system using the C language on the FRDM K64F board. Students are expected to work as groups of two on the lab assignments.

Details List of Topics Covered

  • Introduction to assembly language
  • Cortex-M instruction set architecture
  • Assembly support for high-level languages
  • Input-output mechanisms
  • Concurrency control: mutual exclusion, locks, semaphores, condition variables
  • Embedded bus protocols
  • Operating system scheduling
  • Aperiodic real-time scheduling
  • Periodic real-time scheduling
  • Priority inversion

Student Outcomes

  • Understand the function, basic structure, and operation of assembly language, and its relationship to machine code as well as high-level programming.
  • Comprehend how embedded microprocessors communicate with the external world through analog as well as digital I/O, and engineer programmatic responses of such microprocessors to external stimuli using polling, interrupts, etc.
  • Be capable of constructing correct synchronization primitives in a concurrent environment, and of reasoning about these primitives in terms of correctness, progress, and fairness.
  • Understand the concept of process scheduling, real-time and otherwise, and its applicability to constructing complex embedded solutions.
  • Acquire experience in modern agile programming techniques.
  • <li”>Be able to articulate one’s technical reasoning in a succinct, comprehensive, accurate, and clear manner, orally as well as in writing.
  • Learn to seek, appreciate, and incorporate everyone’s points of view and contributions.