Advanced C Programming

Many engineers work with the C programming language everyday for real-time embedded development. However, some hit a plateau and never feel comfortable with certain aspects of the language.This course aims to progress individuals and give them a fuller appreciation of the more advanced aspects of the language.

Due to the requirements for programming real-time embedded systems, this course goes beyond just addressing the language issues and explores compile, link and run-time issues. In addition it covers interrupts and multi-tasking areas specific to C.

50% of the course is spent writing code for a real target

4 days
£2250 - 10% discount given if a previous Feabhas C course has been attended
pdf download
12 - 15 Jan 2016

Course Overview


An intensive four day course covering the advanced aspects of C programming for the real-time embedded programmer.

Course Objectives:

  • To become comfortable with the advanced aspects of the C programming language
  • To gain an in-depth knowledge on what is happening at compile, link and runtime on a target processor
  • To introduce good quality and style for real-time embedded programming
  • To gain hands-on experience of programming up interrupts and real-time operating systems (RTOS).

Delegates Will Learn:

  • Advanced aspects of the C programming language
  • The traps and pitfalls of the language (e.g. structure packing, dynamic memory, etc.)
  • Compile, link, and run-time memory models
  • MISRA-C ( guidelines
  • What parts of C should and should not be used in real-time embedded systems programming


  • A good grasp of the fundamentals of C


Who Should Attend:
This course is designed for engineers who want to improve their grounding and understanding of the C programming language. It is specifically aimed at issues relevant to real-time embedded software engineers.


  • Four days

Course Materials:

  • Delegate handbook

Related Courses:

Course Workshop:
The course workshop uses the IAR compiler and the NXP LCP2129 ARM7TDMI microcontroller as a target for the hands-on sessions. Exercises are designed to stretch attendees’ abilities and explore subtleties of the language. A good working knowledge of the C programming language is essential as some of the exercises involve extensive programming.

Course Outline


Day 1


Declarations and definitions

  • Fundamental concepts

The build process

  • compilation, linking, memory sections, libraries

System startup & runtime

  • What happens before main
  • What is happening at runtime

Day 2

Pointers and arrays

  • Arrays & pointers; compatibility and incompatibility

Function Pointers

  • Basics
  • Callbacks
  • State machine

Day 3

Dynamic Memory

  • Malloc, calloc and realloc
  • Variable sized structures
  • Dangers

Structures, Unions and Enumerations

  • Enum vs #define
  • Struct layout
  • Uses of union


  • Hardware interrupt models
  • Software interrupts

Day 4

Multi-Tasking (Multi-threading)

  • Terminology
  • Advantages and disadvantages
  • Mutual exclusion
  • Intertask Communication & sychronisation

Coverage on


  • Summary of significant new features

Writing Safer C

  • Misra-C Guidelines