Advanced C Programming
Length: 4 days
view dates and locationsThis course is delivered in co-operation with Doulos' training partner Feabhas, who specialise in training courses for real-time embedded developers.
Course Description
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 move people off that plateau
and give them a fuller appreciation of the more advanced aspects
of the language. Because of 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.
As part of the course, approximately 50% of the time is given over to writing code for a real target.
As part of the course, approximately 50% of the time is given over to writing code for a real target.
Overview
An intensive four day course covering the advanced aspects of
the 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 experiences of programming up interrupts and real-time operating systems.
• 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 experiences of programming up interrupts and real-time operating systems.
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 (www.mira.org) guidelines
• What parts of C should and should not be used in real-time embedded systems programming.
• The traps and pitfalls of the language (e.g. structure packing, dynamic memory, etc.)
• Compile, link, and run-time memory models
• MISRA-C (www.mira.org) guidelines
• What parts of C should and should not be used in real-time embedded systems programming.
Pre-requisites
• A good grasp of the fundamentals of C, or
• Attendance of Feabhas course C-501 : C for Real-Time Programmers.
• Attendance of Feabhas course C-501 : C for Real-Time Programmers.
Who Should Attend
The 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.
Course Materials
• Delegate Handbook
Related Courses
• Fundamentals of Real-Time Operating Systems
• Real-Time Software Design with UML 2.0
• C for Real-Time Developers
• Real-Time Software Design with UML 2.0
• C for Real-Time Developers
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
Introduction
Program Structure
- Importance of good structure
- Quality and style
Pointers, Arrays & Dynamic
Allocation
- Arrays & pointers; compatibility
and incompatibility
Function Pointers
- Basics
- Callbacks
- State machine
Unscrambling Declarations
- Rules
- Using typedef
Day 2
Enumerations, Structures and
Unions
- Enum vs. #define
- Struct layout
- Uses of union
Interrupts
- Hardware interrupt models
- Software interrupts
Multi-Tasking (Multi-Threading)
- Terminology
- Advantages and disadvantages
- Intertask Communication &
synchronisation
Day 3
The Linker
- Memory sections
Start-up, Runtime and the Stack
- What happens before main
- What is happening at runtime
- Estimation of stack requirements
Dynamic Memory
- Malloc, calloc and realloc
- Variable sized structures
- Dangers
Memory Management and Protection
- Memory protection
- MMU
- Segmentation and paging
Day 4
Writing Safer C
- MISRA-C Guidelines
OOP with C
- Object-based and objectoriented
- Classes, inheritance and polymorphism
- Associations and aggregation
Number Crunching
- Floating-point and fixed-point number systems
- IEEE Standard 754
The Standard Library
- Major issues
C99
- Summary of significant new features
Introduction
Program Structure
- Importance of good structure
- Quality and style
Pointers, Arrays & Dynamic
Allocation
- Arrays & pointers; compatibility
and incompatibility
Function Pointers
- Basics
- Callbacks
- State machine
Unscrambling Declarations
- Rules
- Using typedef
Day 2
Enumerations, Structures and
Unions
- Enum vs. #define
- Struct layout
- Uses of union
Interrupts
- Hardware interrupt models
- Software interrupts
Multi-Tasking (Multi-Threading)
- Terminology
- Advantages and disadvantages
- Intertask Communication &
synchronisation
Day 3
The Linker
- Memory sections
Start-up, Runtime and the Stack
- What happens before main
- What is happening at runtime
- Estimation of stack requirements
Dynamic Memory
- Malloc, calloc and realloc
- Variable sized structures
- Dangers
Memory Management and Protection
- Memory protection
- MMU
- Segmentation and paging
Day 4
Writing Safer C
- MISRA-C Guidelines
OOP with C
- Object-based and objectoriented
- Classes, inheritance and polymorphism
- Associations and aggregation
Number Crunching
- Floating-point and fixed-point number systems
- IEEE Standard 754
The Standard Library
- Major issues
C99
- Summary of significant new features
| Course Dates: | ||
|---|---|---|
| January 16th, 2012 | Swindon, UK | Course has started |
| April 2nd, 2012 | Munich, DE | Enquire |
| April 10th, 2012 | Swindon, UK | Enquire |
Please contact Doulos to schedule a public course to suit you, or to discuss onsite training.
Back to top



