Teaching
ECE 460/560: Embedded System Architectures
Semester: Fall
Offered: 2023
This hands-on course builds upon basic embedded systems knowledge to show how to provide multi-tasking and then use it in a variety of application spaces. The concurrent operation of the CPU and peripherals is highlighted throughout as critical to creating cost-effective embedded systems. This course gives an early introduction to practical multitasking on the CPU, with the goals of improving responsiveness and software modularity while reducing CPU overhead. The interplay of interrupts, peripherals and schedulers is explored.
The development platform hardware is the NXP FRDM-KL25Z MCU board with a 48 MHz ARM Cortex-M0+ CPU core and a custom expansion shield with debug signal connectors, touch-sensitive full color 320x240 LCD, speaker, microSD socket, and asynchronous buck converter driver for high-brightness LED. Software used includes Keil MDK-ARM and the Keil RTXv5 RTOS. To monitor signals and evaluate performance, each student purchases and uses the Digilent Analog Discovery 2 tool as an oscilloscope, logic analyzer, protocol decoder and voltmeter.
Why do architectures matter?
Hardware and software components and interactions
Leveraging architecture to simplify debugging
Getting visibility by adding debug signals (twiddle bits)
Supporting multitasking
Interrupts
Run-to-completion task scheduling
Preemptive task scheduling
Using multitasking
Task synchronization and communication
Response time analysis
Stack size analysis
Leveraging hardware to offload processing
Peripherals and special features
DMA
Software support structures
Architectures and design patterns
Streaming data processing
Message parsing
Digital control systems
Low power systems
User interfaces
Dependable systems for consumer electronics, automotive, aviation
ECE 461/561: Embedded System Design (Analysis and Optimization)
Semester: Spring
Offered: 2024
This hands-on course covers the analysis and optimization of four different embedded system characteristics: code speed (task execution time), system responsiveness, power and energy use, and memory requirements. The quantitative and pragmatic approach of measure, modify, and measure again is used.
The development platform hardware is the NXP FRDM-KL25Z MCU board with a 48 MHz ARM Cortex-M0+ CPU core and a custom expansion shield with debug signal connectors, touch-sensitive full color 320x240 LCD, speaker, microSD socket, and asynchronous buck converter driver for high-brightness LED. Software used includes Keil MDK-ARM and the Keil RTXv5 RTOS. To monitor signals and evaluate performance, each student purchases and uses the Digilent Analog Discovery 2 tool as an oscilloscope, power analyzer, logic analyzer, timing analyzer, protocol decoder and voltmeter.
Speed Optimization
Profiling with PC sampling,
Examining object code without getting lost
Toolchain tuning,
Code optimization
Fixed-point math, polynomial approximations
Responsiveness Optimization
Real-time modeling methods
Response time and schedulability analysis
Power and Energy Optimization
Power and energy modeling and analysis
MCU sleep modes, clock gating, frequency scaling
Memory Size
Map file analysis
Toolchain tuning
Code optimization
ECE 785: Topics in Computer Design
Semester: Spring
Offered: 2024
Students learn to develop multithreaded Linux applications and interface with analog, digital, and serial devices. Students learn how to measure, analyze and optimize the raw code speed for a high-performance CPU running Linux using the compiler and C-language extensions for Advanced SIMD processing. Concepts in for real-time systems, and power or energy optimization are also covered.
Embedded Linux
Fundamentals
Multithreaded programming
Device interfacing
Seeking real-time performance
Power and energy optimizations
Speed
Speed Analysis: Profiling, object code analysis
Speed Optimization: toolchain tuning, code optimization
Neon and Advanced SIMD Programming