CPE 3600 - Advanced Embedded Systems

3 lecture hours 2 lab hours 4 credits
Course Description
This course is an advanced course where student teams use an agile design methodology to complete the design and implementation of an embedded systems project involving targeted stakeholders. The teams develop requirements, specifications, and test plans appropriate to complete unit testing and system level verification.  An object-oriented language is used to facilitate rapid development using a manufacturer provided hardware abstraction layer. Embedded systems topics such as voltage format conversion (e.g., ADC, DAC, and level conversion), modulation techniques (e.g., data encodings and PWM), wired peripheral interfaces (e.g., I2C and SPI), wireless communication interfaces (e.g., Bluetooth and WiFi), and low power design are used by teams when appropriate to meet requirements.
Prereq: CPE 2610  (quarter system prereq: CE 2812)
Note: None
This course meets the following Raider Core CLO Requirement: Integrate Learning
Course Learning Outcomes
Upon successful completion of this course, the student will be able to:
  • Function effectively as a team member helping to solve a real-world problem
  • Describe and utilize an agile design approach for project management
  • Develop and execute test plans to validate that requirements have been achieved
  • Utilize C++ to build embedded solutions to complex real-world problems implemented on a pre-built hardware development platform
  • Utilize the C++ standard template library in the construction of embedded solutions
  • Assess the impact of executing C++ code under embedded system limitations
  • Construct single and multitask applications utilizing a real time operating system

Prerequisites by Topic
  • Procedural programming experience in C
  • Object oriented programming skills equivalent to a first course in object-oriented programming
  • Program source control utilizing a version control system (e.g., git or svn)
  • Introductory embedded systems coursework including register level configuration of general-purpose inputs and output ports, timers, ADCs, and interrupts

Course Topics
  • Introduction to object creation in C++
  • Inheritance and abstraction in C++
  • Unit testing and code validation in embedded C++
  • Profiling C++ programs in an embedded system
  • Agile design methodology
  • Real-time embedded operating systems
  • Low power design in embedded systems
  • Use of C++ to write serial driver protocols to interface with serial peripherals.
  • Use of C++ to configure timer/counter peripheral for the generation of PWM signals
  • Touchscreen interface design and operation

Laboratory Topics
  • Introduction to agile incremental design using provided milestones.
  • Periodic progress reports from agile design teams
  • Project design and agile print planning
  • Testing and verification of embedded systems
  • Generation of object-oriented APIs for control of complex peripherals (e.g., a touchscreen) in a real-time embedded system via appropriate interface protocols

Coordinator
Dr. Adam Livingston


Print-Friendly Page (opens a new window)