About Us | [Public iPhone iPad Courses] | [Public Android Courses] | [Public Arduino Courses] | [Contact Us]

Course SMC104
Advanced C Programming for Embedded Systems

Duration: 5 Days

Intended Audience

Attendees should have some experience of embedded systems programming and a sound basic knowledge of the C language. Course SMC103, "Introduction to C Programming for Embedded Systems" provides suitable background.

Course Overview

The course emphasises the implementation of disciplined and well structured code and the design of modules with clean interfaces. Topics include:

Lab exercises are used to consolidate key concepts.

The course uses PIC16, PIC18, and PIC24 / dsPIC processors as a platform for hands-on work. However, the techniques taught can be readily applied to other architectures. Similarly, the course uses uCOSII and CMX as example operating systems, but Inter-Process Communication techniques are covered in a generic way so that they can be applied to other architectures and operating systems.

Course Benefits

Students completing this course will considerably improve the discipline and rigour with which they design and write embedded systems applications in C.

You'll be able to implement classical data structures such as circular buffers, linked lists, and trees -- and you'll know when it's appropriate to use them.

You'll be exposed to a variety of advanced programming idioms and algorithms with their associated data structures, for tasks such as indexing, data compression and error detection.

You'll learn to write event driven programs, to implement Finite State Machines, and to design hierarchical state machines using statecharts.

You'll learn structured programming techniques for implementing multi-tasking applications, and you'll be able to work with embedded operating systems as well as the standard inter-process communication idioms such as producer-consumer, workcrew and monitors.


Course Contents

Intensive overview of essential C concepts and idioms

Arrays and buffers

Linked Lists in depth

Binary trees, their uses and their relations

Error detection

Implementing simple memory management schemes

Implementing simple flash memory file systems

State Machines and Statecharts

Statecharts

Basic operating systems and multi-tasking concepts

Standard Inter-Process Communication Idioms