Testimonial

"Barr Group training courses should be required before writing any embedded code."

spacer

Master Firmware

Registration is now open for the popular hands-on Embedded Software Boot Camp. Consult our public training calendar for upcoming dates and locations.

spacer

Sign Up Now

Receive Michael Barr's Firmware Update newsletter for free how-to articles and industry news by e-mail. Sign up now.

Bookmark It

Bookmark this page or share it with a colleague.

Hardware Interfacing with C Course

The development of device drivers and embedded software is full of challenges. But it is possible to write easy-to-read portable C code to control peripherals ranging from simple timers and UARTs to complex custom FPGAs. This important course covers a large number of subjects ranging from C startup code and the “world before main()” to the development of interrupt-based device drivers that interact with peripheral control and status registers through memory-mapped I/O, overlayed structs, and bitfields.

Length/Options

  • 2 days (hands-on)
  • 1 day (lecture only)

Audience

  • Programmers with no prior embedded software experience
  • Embedded software developers seeking to enhance their C skills
  • Embedded software developers moving from assembly to C

Prerequisites

  • Working familiarity with the C programming language

Related Courses

  • Embedded Software Boot Camp
  • Hardware-Firmware Interface Design
  • Embedded Programming with the GNU Development Tools
  • Embedded Programming with C++
  • Multithreaded RTOS Programming
  • Alternatives to Real-Time Operating Systems

Outline

  • Introduction
    • The C Standard(s)
  • Embedded C Fundamentals
    • Fixed-Width Integers
    • Binary Data Manipulation
    • Fixed and Floating Point Math
    • Performance Improvement
    • Data Storage and Lifetimes
    • The World Before main()
  • Peripheral Control
    • Peripheral Registers
    • Memory-Mapped I/O
    • Struct Overlays
    • Volatile Keyword
    • Bitmasks vs. Bitfields
    • Device Drivers
  • Interrupt Handling
    • Interrupt Service Routines
    • Vector Tables
    • Hardware Hurdles
    • Disabling Interrupts
    • Interrupt Latency
  • Language Choice
    • C vs. Assembly
    • C vs. C++

Hands-On Tools/Platform

  • IAR C Compiler
  • STR912F (ARM9) Development Kit

Learn More

To request pricing or dates, or for more information about this course, contact us.

gipoco.com is neither affiliated with the authors of this page nor responsible for its contents. This is a safe-cache copy of the original web site.