University Course: Fundamentals of Embedded Systems
I developed the course (included below) from scratch for the graduate program in biomedical
engineering at New Jersey Institute of Technology.
The course was based on the following materials:
These materials were used to create a comprehensive hands-on program with ties to
real-life embedded systems experiences.
An Embedded Software Primer: I selected Simon's book because it presents low-level embedded concepts in an easy-to-learn format appropriate
for engineering students from different disciplines. It begins with the important hardware
concepts, then segues to all the important topicslike timing diagrams, interrupts, buses
and memory in a straightforward manner. It also includes testing and debugging information.
The book was well received by the students, who had had absolutely no idea what
an embedded system was, even though we discovered together that they all owned tons of them.
If I Only Changed the Software, Why is the Phone on Fire?: I included my book to tighly couple the textbook lessons with appropriate
real-life examples. Students learn programming and development but are not exposed to the
very debugging techniques when problems arise in those very subsystems.
After specific chapters
in Simon's book, we discussed the relevant Phone on Fire mystery cement the lessons learned.
TI MSP430 Experimenter's board is a wonderful platform for students to learn more than
the basics of embedded systems development. The board has two microprocessors, a touchpad, LCD display,
audio chain, speaker, buzzer, several LEDs and pushbuttons, and sockets for a Zigbee antenna.
Each student had their own board.
IAR Embedded Workbench Kickstart was provided for free (student version) with nearly all of the functionality
available, even including performance profiling. And wonderfully, it runs without a hiccup
on both PCs and Macs.
Classroom Environment: I created this course to be low level and hand's on, using NJIT's studio classroom
concept. Small classes are held in rooms with a computer at every station, allowing
close integration of lecture with lab and hands-on work.
Below is the complete syllabus, lectures, homeworks and references for the course.
If you would like to use this course at your university, please contact me for details
at lisa (at) simoneconcepts.com.
Fundamentals of Embedded Systems
Taught at New Jersey Institute of Technology, 2007-2008
BME 698 Fundamentals of Embedded Systems
3 credits (3-0-3)
Dr. Lisa Simone
Lisa Simone |
Phone on Fire
Class Documents | Class Schedule
The advent of smaller and less expensive electronics has fostered
the rapid deployment of medical devices for point-of-care, home diagnostics
and wearable applications. This course is an introduction to embedded systems
hardware and firmware design as applied to medical instrumentation, focusing
on hands-on exercises in Studio format. Students use an Embedded Integrated
Development Environment (IDE) for project management, code compilation, link
and debugging. This hardware- and software-oriented course will use C language.
C experience is not required, although an understanding of a structured language
is strongly recommended.
- Embedded systems and the design process in biomedical applications
- Hardware fundamentals (gates, timing, memory, DMA, interrupts)
- Microcontrollers and microprocessors
- C language refresher
- Hardware/firmware partitioning
- Interrupts and the stack
- Software architecture
- Real time operating systems
- Embedded software development tools
- Testing and debugging techniques
- Engineering and embedded systems ethics
- Controlling and accessing hardware (digital I/O, analog-to-digital conversion).
- Design performance considerations critical for embedded systems (code optimizations, real-time and latency, memory and power constraints).
Students are expected to read chapters before coming to class to understand the concepts
being presented. Come prepared with questions.
The course is hands-on. Students are expected to demonstrate knowledge of the
microprocessor development device and development environment individually. It is advised
that you install the software on your laptop and bring that laptop to class each session,
and work directly from your laptop. Studio computers are available during class, but not
Syllabus and Required Information
Assignments and guidelines for deliverables will be made available via email and the
website throughout the term. You are responsible for monitoring your email for timely messages.
- 40% - Labs, homework, quizzes, individual participation, attendance
- 30% - Exams
- 30% - Project
- Quizzes are unannounced and may cover any information covered in class.
- Exams cover all material covered in class.
Homework and Assignments
- HW0 - Embedded Devices in Your Life
- HW1 - Medical Device Hardware Components
- HW2 - Software Signal Processing
- HW3 - Understanding Timers
- HW4 - Engineering Documentation: Block diagrams and engineering design documentation for proposed projects
- Project proposal Guidelines.
- Project HW1 - Project Overview and Functional Description
- Sample of good project description and how it is different from technical specs: ReadMyHeart Handheld ECG-EKG Monitor
- Project HW2 - Project Architecture and Design
- Final Project Documentation template is here- 1 per TEAM.
Lectures and Class Documents
- Intro to the MSP430 Experimenter's Board (lecture) Quick overview of features.
- Hardware Fundamentals (lecture) Simon Ch2: Terminology, gates, timing diagrams, memory.
- Software Fundamentals I (lecture) C Language main, variables, word sizes, arrays, loops, function calls.
- Advanced Hardware Fundamentals (lecture) Simon Ch3: microprocessors - basic system and connections, buses, address space, interrupt connections, UARTS, watchdog timer, basic internal elements incl. timers and I/O.
- One page explanation of Wired-OR INT lines showing how bus fights don't happen with pullup resistors.
- Experimenters Board Schematic Elements (lecture). Understanding the schematic of the Experimenters Board.
- Software Fundamentals II Part 1 (lecture). Byte order, big/little endian, number systems (binary, hex, ASCII).
- Embedded Software Development Tools (lecture) Simon Ch9: Compilers Linker/Locators, address resolution, MAP files, getting software into the target system.
- MSP430x2013 Mix Signal Microcontroller system components (block diagram, pinout, registers, interrupt vectors, memory map, peripheral map file, supply voltages).
- Interrupts (lecture) Simon Ch4: Microprocessor architecture, IRQs, ISRs, saving and restoring context, disabling, the shared-data problem, latency.
- Timers (lecture) Information on configuring Timers for Flashing LED II lab.
- Controlling Interrupt Frequencies (lecture).
- Architecture (lecture) Simon Ch5: Round robin, RR with interrupts, Function-queue scheduling, RTOS.
- Debugging Techniques (lecture) Simon Ch10: Debugging Techniques.
- Controlling and Accessing Hardware I (lecture).
- 4618 Serial Communications (lecture).
- Balancing Memory and Performance (lecture) Simon Ch8.6-8.7: Special Topics.
- Accessing Hardware II: LCD Displays - the Softbaugh LCD (lecture).
Assignment Related Information, Templates
(*) = Really Important Stuff
Info about our Hardware and Software (*)
- Purchasing Info: 1) TI's MSP430 Experimenter's Board, Part #MSP-EXP430FG4618 ($99) and 2) MSP430 Flash Emulation Tool, Part # MSP-FET430UIF ($99) TI Web Link for both.
- Programming Language: C, and assembly if desired
- Development Environment: IAR Embedded Workbench Kickstart, V4.xx
- Development Hardware Platform: TI's MSP430 Experimenter's Board (has 2 processors: FG4618 and F2013)
- Target Microcontroller #1: MSP430FG4618 (16-Bit Ultra-Low-Power MCU, 116KB Flash, 8KB RAM, 12-Bit ADC, Dual DAC, DMA, 3 OPAMP, 160 Seg LCD)
- Target Microcontroller #2: MSP430F2013 (16-bit Ultra-Low-Power MCU, 2kB Flash, 128B RAM, 16-Bit Sigma-Delta A/D, USI for SPI/I2C)
- External Debug Hardware: MSP430 Flash Emulation Tool (MSP-FET430UIF)
- LCD Display: Softbaugh SBLCDA4
HOW TO INSTALL OUR DEVELOPMENT SYSTEM (*)
Information on the Texas Instruments MSP430 Family of Microprocessors.
Information on the hardware platform: MSP430 Experimenter's Board
Information on the Development Environment: IAR Embedded Workbench Kickstart
Information on the MSP-FET430 Flash Emulation Tool for the MSP430 microcontroller
Datasheets and Schematics
Help, Support, etc.
Useful Code Snippets
Other documents necessary for upcoming homework assignments and projects
Information about Design
Visit the Embedded Systems Design and Embedded Systems Programming Online Archive
for a searchable library of relevant and useful embedded design information. This *free* magazine is
one of the best in the field - sign up online for a copy.
Visit Jack Gannsle's Embedded Systems website - many short, great articles
on different aspects of embedded systems, including what it's like to work in the field. Jack's articles are fun and easy to read.
Visit Dr. Simone's External Website on Embedded Systems for
a variety of related topics, newsletters, stories, history, and links.
||- Introduction to Embedded Systems (Simon Ch 1)
- The design process, embedded systems
- MSP430 Overview
- Hardware Fundamentals (Simon Ch 2)
- HW0 - Embedded devices in your life.
||- Software Fundamentals I
- IAR Embedded Workbench: In-class installation
- "MSP430FG4618/F2013 Experimenterís Board User's Guide" (slau213a-1.pdf)
- Simon Ch 2 Problems
- Review "program shell" template for C programs
|| - Advanced Hardware Fundamentals (Simon Ch 3)
- IAR Embedded Workbench Configuration
- Experimenters Board Schematic Elements
- Lab 1: Flashing the LED, in class
- Software Fundamentals II
- Embedded Software Development Tools (Simon Ch 9)
- Understanding the MSP430x2013 Mix Signal Microcontroller
- Simulate all SW Fundamentals II snippets
||- Interrupts (Simon Ch 4)
- Lab 2: Flashing LEDs II
- Simon Ch 4,9 problems
||- In class - Lab 2.
- Discuss/propose project ideas
- Discuss Simone "Phone on Fire" Ch 1
||- Exam 1 (All lectures, Simon Ch 1-4, Simone Ch 1-2).
- Discuss Simone "Phone on Fire" Ch 2
- Project teams formed
||- Controlling Interrupt Frequencies
- Architecture (Simon Ch 5)
- Debugging Techniques (Simon Ch 10)
- Project Proposals Ideas
- Discuss Simone "Phone on Fire" Ch 3
- Simon Ch 5, 10
||- In class project proposal work
- Discuss Simone "Phone on Fire" Ch 4
- Project HW1 and HW2 (team)
||- Controlling and Accessing Hardware
- Lab 3 - Processing Analog Inputs
- In class Lab 3. Pictures here
||- Accessing Hardware II: LCD Displays
- Serial Communication
||- Special Topics (Simon Ch 8.6-8.7)
- In class exerise: Performance and Profiling
- Exam 2: Covering everything since Exam 1
- LCD display HW
||- In class Project work
- Performance and Profiling HW
||- In-class Project Demonstrations|
- Project Write-ups due
© 2006-2008 Lisa Simone