Course

Embedded Firmware Essentials


All embedded systems require firmware to enable their features. In addition to C programming, firmware engineers must understand system and CPU architecture as well as the IO and memory interface; master the techniques to manage limited memory and OS processes, and code programs that are suitable for hardware bring-up and application development. This course provides practical in-depth knowledge and coding exercises for firmware development.

The course reviews the embedded system architecture and hardware configurations, including the ARM Cortex-M instruction set. You will be introduced to using C codes to enable or disable hardware features, and gain hands-on experience with clock, timing, delays, and latency when working with different SoC, memory and IO interfaces. You will also learn to write efficient ROM code with limited memory and timing budget.

Most firmware development in industry is done on Linux systems. You should have solid C programming skills and be ready to do all class projects with GNU Tools in a Linux environment. You'll gain experience through a board project. The course will prepare you to take on additional embedded software courses for a wide range of product interests.

Topics Include

  • Introduction to firmware and GNU Tools for ARM embedded processors
  • ARM-Cortex-M computer architecture
  • Memory and system architectures
  • Digital IO: GPIO, RS232, I2C
  • Firmware architecture: Task scheduler
  • Data structure: Circular buffer
  • Flash Memory

Notes: Students are required to bring a laptop with Linux installed for in-class exercises. Options include VMware, VirtualBox, LiveCD, disk partition or separate drive. Students are also required to purchase a small board, breadboard, resistors, LED, and wires (approx. $70 to $120, not included in the tuition) to do class projects on their Linux laptops. Detailed board information and instruction will be provided on the first night of class.

Prerequisite(s):



Course Availability Notification

Please use this form to be notified when this course is open for enrollment.

Contact Us
Speak to a student services representative.

Call (408) 861-3860

Envelope extension@ucsc.edu

Course Inquiry

Ask us any questions you may have about this course.

Contact Us
Speak to a student services representative.

Call (408) 861-3860

Envelope extension@ucsc.edu