Design News CEC – Baremetal C Programming for Embedded Systems

Course Overview: The C programming language is one of the most widely used and successful computer programming languages of all time. When developing firmware for an embedded system without an operating system there are a number of C concepts that can easily trip up a developer. This course will review key concepts for developing an embedded system using C, examine development techniques for real-time systems without an OS, driver design techniques and demonstrate design patterns that are critical to decrease costs and time to market.

CECDay 1 – C Concepts for Embedded Systems
This session will review important concepts every developer needs to understand when developing an embedded system using C. These concepts will form the foundation for topics the rest of the week. These concepts will include a look at scope, proper register access techniques, understanding complex declarations, function pointers, memory allocation, interrupts and assertions to name a few. Attendees will walk away with an understanding of the fundamentals of C and some advanced concepts too.

Registration and Playback located here

Day 2 – Baremetal Scheduling Techniques
It isn’t uncommon for developers to default to a real-time operating system (RTOS) when developing an embedded system. As it turns out there are a number of scheduling techniques that can be used to achieve real-time performance before an RTOS is even necessary. This session will explore baremetal scheduling techniques, RMA theory and analysis while peering into the time domain of the microcontroller. Attendees will be equipped with an expert understanding of scheduling techniques.

Registration and Playback located here

Day 3 – Driver Design Techniques
This session will walk attendees through three different methods for developing drivers. The methods will start with the simplest and least reusable through an advanced technique that is easily portable to multiple systems. Attendees will walk away with an understanding of how to use bit manipulation, structures and unions in driver design, in addition to portable driver design concepts and example driver source.

Registration and Playback located here

Day 4 – Design Patterns for Firmware
This session will demonstrate common design patterns that are used to develop embedded software. A continuation of driver design concepts will be presented to include a discussion on blocking vs non-blocking drivers with a reusable SPI driver example. There will also be a look at data handling techniques such as circular buffer implementation, leaving the attendee with functional, reusable code that can be used in their next design project.

Registration and Playback located here

Day 5 – Writing Portable Code
One technique to minimize project costs and time to market is to leverage a reusable code base. A code base usually isn’t developed overnight and requires careful thought and consideration in order to maximize the benefit. This session will cover how to develop a reusable code base starting with the design of APIs. An example will be provided on how to create a portable EEPROM chip driver that pulls together concepts and source from the GPIO and SPI drivers in earlier sessions.

Registration and Playback located here

Course Resourses

  • Doxygen C Templates Download can be here
  • Example Driver Source Code can be found here
  • An example cooperative scheduler can be found here
  • EDN Blog Articles can be found here
  • Sign-Up for the Embedded Bytes Newsletter here

Share >

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.