All courses
EMB 225
Term 4
3 credits
Debugging and Test for Firmware
This course provides a practical introduction to the fundamental principles and tools used for debugging and testing embedded firmware. Students will learn how to identify, isolate, and resolve software defects in microcontroller-based systems using various hardware and software debugging techniques. Emphasis is placed on systematic testing methodologies to ensure robust and reliable embedded system operation.
Prerequisites
Course outline
Lectures, virtual labs, and graded assignments — completed in your browser.
01Introduction to Debugging and Testing Embedded Systemslecture
02Software Debugging Fundamentals: IDEs, Breakpoints, and Watch Windowslecture
03Lab 1: Basic Software Debugging with a Microcontrollerlab
04Advanced Software Debugging: Call Stacks, Memory Inspection, and RTOS Awarenesslecture
05Hardware Debugging Tools: JTAG/SWD, Oscilloscopes, and Logic Analyzerslecture
06Lab 2: Using Hardware Debuggers for Firmware Fault Isolationlab
07Common Firmware Bugs: Pointers, Memory Issues, and Race Conditionslecture
08Assignment 1: Debugging Challenge - Pointers and Memory Errorsassignment
09Introduction to Firmware Testing: Unit, Integration, and System Testinglecture
10Test Driven Development (TDD) for Embedded Systemslecture
11Lab 3: Implementing Unit Tests for an Embedded Peripheral Driverlab
12Assignment 2: Designing a Test Plan for a Simple Embedded Systemassignment
13Comprehensive Midterm Reviewlecture
14Final Reviewlecture
Syllabus
### EMB 225 Debugging and Test for Firmware (3 credits) **Course description:** This course provides a practical introduction to the fundamental principles and tools used for debugging and testing embedded firmware. Students will learn how to identify, isolate, and resolve software defects in microcontroller-based systems using various hardware and software debugging techniques. Emphasis is placed on systematic testing methodologies to ensure robust and reliable embedded system operation, preparing students for professional roles in embedded development. **Learning outcomes:** * Apply various software debugging techniques, including breakpoint setting, step-by-step execution, and variable inspection, to embedded C/C++ code. * Utilize hardware debugging tools such as JTAG/SWD debuggers, oscilloscopes, and logic analyzers to diagnose complex real-time firmware issues. * Develop and implement unit tests, integration tests, and system-level tests for embedded firmware components. * Identify common firmware defects, race conditions, memory leaks, and timing issues, and apply strategies for their resolution. * Document debugging processes and test plans effectively to support collaborative embedded systems development. **Assessment breakdown:** * Labs: 40% * Assignments: 25% * Midterm Exam: 15% * Final Exam: 20% **Policies:** * **Attendance**: Regular attendance is expected. Students are responsible for all material covered regardless of attendance. * **Late Submissions**: Late assignments may be penalized 10% per day unless prior arrangements are made with the instructor for extenuating circumstances. * **Academic Integrity**: All work submitted must be original. Plagiarism or any form of academic dishonesty will result in a failing grade for the assignment and may lead to further disciplinary action. * **Disability Services**: Students with disabilities who require accommodations should contact the Disability Services office for assistance.