Services & Training

Solutions
Home > Services & Training > Training > Operating Systems/ Real-Time Systems > C for Embedded Systems

C for Embedded Systems


Price 12 800
Number of days 2

We highlight important areas not always covered in introductory programming courses. C is the most important high-level language in the field of industrial programming and for embedded systems. The techniques used for embedded systems can differ from "text-book programming", and a number of these are covered in the course. We also discuss various strategies for optimizing code both for memory space and speed of execution. We even cover the different errors and pitfalls that are common to the C-language when working with the constraints dictated by an embedded system. Throughout the course the connection between the hardware, the software and the interaction with the compiler is treated as a single, inter-related system. All source code in the course is based on realistic examples.

Objectives
We want to share the extensive knowledge of C-programming that Enea has gathered during 30 years. Furthermore, we want to raise the participants' knowledge of the hardware's and compiler's roles in conjunction with the software.

Who should attend?
Those with little or no experience of embedded systems, but who will work with C-programming.

Previous Knowledge
Fundamental C-programming

Recommended following courses
OSE- courses
Safer C

Course Material
Included in the course is our original material in English.

Course Contents

Definition of embedded systems
- Characteristics of an embedded system
- Consequences for the programmer
- Questions to the audience

Relationship between C and embedded systems
- Why use C so often in embedded systems?
- Bit manipulation with C operators
- Pointers, double pointers and the "address of" operator
- Structs and unions in embedded systems
- To implement a linked list


 Memory
 - To link a program
- How to save memory
- Problems: memory leaks and memory monitoring
Stacks
Variables
Recursion
Pointer arguments to functions


Optimization
- Optimizing: memory usage and execution times
- Architectural dependencies
- Bit vectors and structs
- Cache memory
- Indexing of vectors
- Profiling

Portability and inter-operability
- Register size
- The Endian-problem
- Pitfalls in the C-language

Coding style and discipline
- What is "good" programming?
- Good habits



PRINT THIS PAGE