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:
- Digital Interfacing (user level)
- PWM generation (SW, HW) and quality assessment based on scheduling impacts
- Kernel platform driver for PWM with animation (hrtimers) + user app
- GPIO Mirror Kernel Module with interrupts
- Usermode real-time audio output (and scheduling effects)
- 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
- Discussion for general discussions, problems and help
- Accept the invitation to neu-ece-4534-sp24/discussions received by email
- Subscribe to notifications by clicking on “Watch” in the repo neu-ece-4534-sp24/discussions
- General Lab Instructions
- Git/Submissions Instructions
- Setup Lab Environment for labs and excercises
- ARM Cross Compilation and Simulation ARMXCompSim
- Connecting to Zedboard and simulation
- VS Code and other Editors to remotely edit files
- Remote GPIO via HTTP now to access your ZedBoard’s LEDs, Switches and Buttons remotely
Manuals and Tech References
Processor
- Xilinx, Zynq-7000 All Programmable SoC Technical Reference Manual, v1.10, 02/23/2015
https://docs.xilinx.com/r/en-US/ug585-zynq-7000-SoC-TRM/Zynq-7000-SoC-Technical-Reference-Manual - Xilinx, Zynq-7000 All Programmable SoC Software Developers Guide, v12.0 09/30/2015
http://www.xilinx.com/support/documentation/user_guides/ug821-zynq-7000-swdev.pdf
ZedBoard by Avnet
- Avnet, ZedBoard Hardware User’s Guide, v2.2 01/27/2014, http://zedboard.org/sites/default/files/documentations/ZedBoard_HW_UG_v2_2.pdf
- Avnet, ZedBoard Getting Started Guide, v7.0 01/30/2014, http://zedboard.org/sites/default/files/documentations/GS-AES-Z7EV-7Z020-G-V7.pdf
Course-specific ZedBoard Configuration (controlled by bitstream)
- ZedBoard Hardware Peripheral Mapping zed_hwmap
- PulseCap module to capture edges from an input signal or Timer generated signals.
- Audio TX Configuration
Devices
- Avnet, ZedBoard Hardware User’s Guide, v2.2, pdf, Guide to the ZedBoard platform
- Xilinx, AXI GPIO v2.0 Product Guide, October 5, 2016, pdf, Sections: Register Space and Programming Sequence
- Analog Devices, ADAU1761: SigmaDSP® Stereo, Low Power, 96 kHz, 24-Bit Audio Codec with Integrated PLL Data Sheet (Rev. C), http://www.analog.com/media/en/technical-documentation/data-sheets/ADAU1761.pdf
Linux References
- Books
- Linux Device Drivers, Third Edition, O’Reilly, 2005 https://lwn.net/Kernel/LDD3/ Note Book examples are for kernel version 2.6, updated examples here
- Tutorials /Training Course
- Linux Kernel Teaching part of Operating Systems II class at University POLITEHNICA of Bucharest.
- Writing Linux Kernel Module (explains some of the background again, but still short) link
- Slides / Materials for Embedded Linux training course (4 days) link
- Slides / Materials for Linux Kernel Module development (5 days) link , based on BBB, PLENTY of details
- Xilinx: Introduction to Linux Device Drivers - Part1, The Basics Video 25min
- Xilinx: Introduction to Linux Device Drivers - Part 2 Platform and Character Drivers Video 32min
- Background Info
- Why not C++ in Kernel? link
- References
- Device Tree for Dummies, Thomas Petazzoni (Apr. 2014): http://j.mp/1jQU6NR