C Programming for Embedded Systems

Back to Training Courses >>>

This training course aims to introduce the more advanced elements of the C language, which are so important when developing for embedded systems, such as function pointers, typedefs, structures, unions and bit fields.

The course focuses on the challenges encountered when working with embedded systems programming, such as high performance requirements, synchronisation and limited availability of memory.

The course will aim to teach methods for developing good code practices enabling easier and more effective code testing and maintenance.

Please call to discuss dates for 2006

01962 841290

Participants

This training course is designed to suit developers and programmers of embedded systems with some experience in programming, who wish to widen their C programming knowledge. It would also be of interest to those who wish to get a fresh view on the subject and gain practical experience to be used in their own development.

Previous knowledge

Attendees should have a basic knowledge of C programming and some practical experience in compiling and debugging programs. It is not necessary to have any experience of C in an embedded system.

Practical Exercises / Tools

This course is given as a combination of theory, presented in lecture style, and practical exercises, giving attendees the opportunity to program a test embedded system using industry standard development tools and debugging aids.

Course Length

3 days

Course Aim

At the end of this course attendees will have a thorough understanding of the elements of the C language that can affect performance in an embedded development – both positively and negatively. The practical exercises will give valuable experience in writing C programs, which are optimised for embedded systems, as well as being portable and easily maintainable.

Course Content

Introduction
The origins of C and its impact on embedded development

Standard C (ANSI)
The meaning of the standard and its affect on the portability of C code
A quick review of the basic elements of C

Advanced C constructions
Pointers and function pointers
Structures, unions and bit fields
Typedefs and abstract data types
Memory requirements, static or dynamic, and storage types
Using inline assembler and interfacing to assembly routines

Libraries
An overview of standard functions and libraries
Practical exercises with using libraries for input and output, file handling and strings

Performance in C
How do I write optimal (low maintenance) code?

Generally
Portability – writing code for several target environments
Start-up code and program loading
Optimisation and its effects on debugging
Real-Time Systems

Synchronisation problems
Handling interrupts from external sources
Using semaphores to synchronise events
What makes a function re-entrant and why is this important
Sharing data between functions safely and economically

Advanced debugging and maintenance
Writing code for easy testing
Logging of test results – monitor programs vs hardware debuggers and emulators
Building-in tests for safety-critical performance
Hot-swap - writing programs for on-line-update

Last Updated: December 22, 2005 16:37

Nohau UK Home >>>