May 28, 2023  
2021-2022 Undergraduate Academic Catalog 
2021-2022 Undergraduate Academic Catalog [ARCHIVED CATALOG]

Add to Portfolio (opens a new window)

CE 2812 - Embedded Systems II

3 lecture hours 2 lab hours 4 credits
Course Description
This course builds on CE 2801  and introduces C as a portable high-level language for embedded systems programming. Topics include C language syntax, variables, and pointers. C functions are covered with special attention to passing by value versus passing by reference. Specialized embedded topics included using pointers to interact with microcontroller subsystems, creating interrupts in C, and the C/assembly interface. Designing modular application by use of multiple files is emphasized throughout the course. Laboratory exercises employ peripheral subsystems as well as reinforce other key topics. (prereq: CE 2801 )
Course Learning Outcomes
Upon successful completion of this course, the student will be able to:
  • Combine assembly and a high-level language to complete basic embedded system programming tasks
  • Employ embedded systems development tools
  • Link multiple files to create a larger application
  • Design and write C functions
  • Use interrupts in C to perform I/O
  • Use the various subsystems of the processor in practical applications

Prerequisites by Topic
  • High-level programming fundamentals including control structures and subroutines
  • Structured assembly language programming
  • Good program documentation and design techniques including flowcharting and pseudocode

Course Topics
  • Introduction to C as a portable language
  • Review control structures typical of high-level languages
  • Pointer basics, null pointers, addressing, indirection, arrays, pointers, character string processing
  • C arithmetic and bitwise operators.
  • Traditional C and C99 types and custom types with typedef
  • Interaction with registers via C pointers
  • C structures
  • Function pointers
  • The C standard library
  • Dynamic memory with malloc and free
  • C functions and parameter passing (by value and by reference)
  • Using multiple files in an application, header files, conditional compilation
  • Serial communication and the USART subsystem
  • Design of a buffered serial API
  • Basic console I/O
  • Basic round-robin context switching

Laboratory Topics
  • Debugging a simple C program on the embedded system
  • Using C to interact with microcontroller peripherals
  • Mixed C/assembly program
  • Console I/O
  • Round-robin context switcher

Dr. Adam Livingston

Add to Portfolio (opens a new window)