ECE 373: Embedded Operating Systems and Device Drivers

Catalog Description

ECE 373 extends the microprocessor interfacing skills gained in ECE 372 to the design of hardware and device drivers for a microprocessor system with an embedded operating system. After a brief introduction to the basic structure and operations of the Linux OS, students will gain extensive practice developing Linux device drivers for a wide variety of hardware devices. Course will also include discussions of security and power management techniques commonly used in embedded microprocessors systems.

Credit hours: 5

Goal

To learn to develop device drivers for interfacing a Linux Operating System with a wide variety of peripheral devices.

Prerequisites

ECE 372 or co-requisite CS 333

Corequisite: ECE 373L

Course Coordinator and Committee

Christof Teuscher (Coordinator)
Douglas Hall
Mark Faust
Garrison Greenwood
Tom Schubert
Roy Kravitz
Xiaoyu Song
 

Textbooks

Essential Linux Device Drivers, Vankateswaran, Prentice Hall, 2008.
Linux Device Drivers, 3rd Edition, Corbet, Rubini and Kroah-Hartman, O'Reilly, 2005.

Learning Outcomes

At the end of this course, students will be able to:

  1. Describe the operation and use of operating system features such as mutual exclusion, pre-emptive and non pre-emptive scheduling, real-time operation and virtual memory.
  2. Describe the basic structure and operation of the Linux operating system with real-time capability.
  3. Analyze and write Linux application programs in the C programming language using the GNU tool chain.
  4. Compile, install, run, and remove a live Linux source module.
  5. Design write, build, install, and run a specified custom module.
  6. Understand and correctly use the Linux kernel internal services of mutual exclusion, memory mapping, DMA operations, interrupt handling, timekeeping and scheduling to write a variety of custom modules.
  7. Design and build a custom device driver.
  8. Modify or design a custom kernel module.
  9. Describe the interfaces for character and block devices, video displays, and network links.
  10. Describe the security and power management techniques commonly used in embedded systems.

Topical Outline

  • Intro to device drivers: what is a device driver?
  • Intro to embedded operating systems: what makes an operating system embedded?
  • Linux kernal internals
  • Linux kernal communication channels: how to talk to the OS
  • Character drivers
  • Kernal and driver debugging techniques
  • Memory types and how Linux partitions memory
  • The PCI subsystem
  • I/O ports (for port-based I/O, versus memory-mapped I/O)
  • Timers, how to account for time and delays
  • USB driver overview
  • Userspace drivers: how to drive hardware from userspace
  • Kernal threads, semaphores and general concurrency
  • DMA and hardware descriptors

    Course Structure and Grading Criteria

    Assignments will be given in class as homework and labwork. Lab time with a teaching assistant is available and expected to be used for most assignments, as most assignments will require the use of little project computers in the lab. Some assignments may be done in small groups of 2-3 students, in order to maximize lab resources. Assignments where this will be permitted will be explicitly identified during the assignment of the homework itself. All others not explicitly identified should be done individually.

    Test questions will closely parallel homework problems and design/programming projects, so to do well on tests it is highly suggested that you complete all these assignments individually rather than as part of a group. Approximate ratios for final grade: Midterm Exam – 25%, Homework – 40%, Final Exam – 35%. A = 94-100, A- = 90-93, B+ = 87-89, B = 84-86, B- = 80-83, C+ = 77-79, C = 74-76, C- = 70-73, D+ = 67-69, D = 64-66, D- = 60-63, F = 0-59. No curve is used in determining grades. Anyone caught copying or cheating in any way will receive a 0 for that test, homework, of design project. Make up exams will be given only if arranged well before the exam time. Late design or programming projects may be given a reduced grade.

    The design projects must be completed satisfactorily to receive credit for class. This includes clear and correct writing and spelling along with technically correct work.

    Relevant Student Outcomes

    The following program outcomes are supported by this course:

    (a) An ability to apply the knowledge of mathematics, science, and engineering principles. 
    (c) An ability to design a system, component, or process to meet a range of informal to formal descriptions/specifications.
    (e) An ability to identify, formulate, and solve engineering problems.
    (g) An ability to communicate effectively. 
    (k) An ability to use the techniques, skills, and modern engineering tools necessary for engineering practice.

    Prepared By: Douglas V. Hall
    Last revised: 7/05/17