Testimonial
"Barr Group training courses should be required before writing any embedded code."
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.
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.