The Objectives listed here are minimum requirements, an individual student creates more in consultation with the instructor.

1. Learning objectives

2. Overall course goals

2.1. G-ASM: Assembly language

Design firmware for microcontrollers using both assembly and C programming languages.

2.2. G-HWSW: Hardware and software co-design

Design, document, and demonstrate systems that combine dedicated hardware and software to complete a specific task.

2.3. G-PWR: Low power

Create microcontroller programs that conserve energy by effectively using low-power modes.

2.4. G-TMR: Timer signal generation

Write microcontroller programs that relies solely on a timer peripheral to generate output signals with a specific duty cycle, frequency, or PWM signal.

2.5. G-RTOS: Real-time operating system

Design and implement a basic kernel for a real-time operating system.

2.6. G-NEW: Adapt new platforms

Demonstrate an ability to adapt to new technologies/platforms in a rapidly changing field by

  • Developing embedded solutions that operate with different/new pieces of hardware (such as sensors, actuators, communication devices)

  • Developing embedded solutions with more than one CPU architectures/microcontroller families

3. Topics

The topics covered in this course include the following, but are always subject to minor changes to track current events, student interest, and other changing conditions.[1]

  • Architectures

    • Variants

      • 8-bit: AVR (ATtiny85 and ATmega328P)

      • 16-bit: MSP430 (MSP430FR6989)

      • 32-bit: ARM Cortex-M series

    • What happens at power up?

      • POR, BOD, reset

      • Program counter and the first CPU instruction

      • Peripheral states *

  • Assembly language

    • Registers

      • CPU Status register

      • Special featured registers (e.g. AVR’s X, Y, Z)

    • Stack

    • Addressing modes

  • Embedded C programming

    • C ABI conventions

      • Calling functions

      • Use asm from C

    • Stack vs. heap

  • Power

    • Estimation

    • Measurement

    • Optimization

      • Hardware

      • Firmware

  • RTOS, real-time operating systems

    • Tasks

    • Scheduling

    • IPC (inter-process communication)


1. Such as lab PC software, c0v1d-19, and other issues.