Skip to the content.

Welcome to the Northeastern University, Department of ECE, EECE4534 Course Page

Embedded systems are omnipresent in our environment, e.g. implementing media players, cell phones, or realizing complex control systems in a car. The majority of embedded systems use one or more microprocessors for control and data processing, which is assisted by some generic or specialized hardware. A successful computer engineer needs to be well versed in both software and hardware aspects to master the design and implementation of such complex embedded systems.

This course (EECE 4534) will introduce you to practical microprocessor-based system design issues, such as system specification, understanding hardware capabilities (e.g. embedded processor organization; addressing modes; memory hierarchy; parallel and serial bus protocols), hardware/software co-design aspects, mastering hardware/software interfaces and the design of device drivers. It will also introduce you to writing kernel drivers for Linux.

The course is tightly integrated with the mandatory laboratory (EECE 4535) in which you have the opportunity to practically realize the theoretic aspects of the lecture. The lab centers around a popular embedded platform, the ZedBoard with the Zynq SoC containing a dual core ARM-A9 running Linux and an FPGA fabric. The lab has two parts. The first portion gradually introduces you to embedded systems through a set of ready-made exercises (digital interfacing, polled interfaces, kernel modules, interrupts, audio streaming). These exercises require you to design, construct, and debug hardware and software (C and some assembly, kernel modules) that runs on a common embedded platform, the ZedBoard with the Zynq SoC containing a dual core ARM-A9 and an FPGA fabric. The second portion of the lab allows you to explore a project of your own choosing within a team. Each team will specify, design and implement a complete embedded system, integrating hardware and software.

The lab sequence consists of 6 labs:

  1. Digital Interfacing (user level)
  2. PWM generation (SW, HW) and quality assessment based on scheduling impacts
  3. Kernel platform driver for PWM with animation (hrtimers) + user app
  4. GPIO Mirror Kernel Module with interrupts
  5. Usermode real-time audio output (and scheduling effects)
  6. Audio TX device driver and user program to read audio + user app

We use GitHub Classroom for assignments with code aspects. Assignments will be released via Canvas.

Guides

Manuals and Tech References

Processor

ZedBoard by Avnet

Course-specific ZedBoard Configuration (controlled by bitstream)

Devices

Linux References