recent success story


BE-12 - Fundamentals of Software Engineering

'The lecturer was very detailed in his explanations and ensured relevant subjects were covered in sufficient detail. Top stuff.'

- BAE Systems

BE-30 - Managing MBSE projects

'New method of looking at systemised design, designing from ground up - very interesting! Well presented, answers to questions always given with thought and consideration. An excellent course, thank you'


BE-10 - Use Case Analysis using UML

'The Use Cases exercise was directly applied to the problems we are having in the current projectso we learnt a lot from this course. '

- BAE Systems

SY-02 - System Modelling using SysML

'We really appreciate that Objektum Solutions didn’t limit the discussion to the training material and were able to draft a project specific process which has enabled us to continue our development effort.'

- Brembo

SY-02 - System Modelling using SysML

'The training support provided by Objektum Solutions certainly met our requirements 100% and we appreciated the the professionalism of lecturers, as well as their clear and detailed presentation of the material.'

- Brembo

RE-01 - Expressing Requirements in CoRE

'Everything about this course was spot on.'

- RAF - Conningsby

PG-02 - Programming in Ada95

'The professionalism and quality of training provided by Objektum never ceases to amaze me!'

- RAF - Boscombe Down

PG-10 - Programming in C++

'Really well organised, informative and provided me with enough detail to begin coding immediately. I would highly recommend Objektum Solutions. '

- BAE Systems

PG-02 - Programming in Ada95

'The course was excellent, the lecturers' depth of Ada95 knowledge was amazing.'

- Lockheed Martin

Advanced C for Embedded Systems

Make an enquiry Print

Reference: PG-56
Duration: 5 Day(s)


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

Topics include:

Advanced use of dynamic data structures and algorithms for manipulating them
Structured interrupt handling
Implementation of simple schedulers and operating systems
Working with embedded operating systems
Understanding standard techniques for inter-process communication, and their uses
Finite state machines, statecharts, and their uses
Advanced algorithms and research-oriented approaches.

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.

Company Benefits

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

Personal Benefits

After completion of this course you'll be able to implement classical data structures such as circular buffers, linked lists and trees and you will have developed a thorough understanding of 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.


  • 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
  • Active objects - linking multi-tasking, message passing and event driven programming
  • Memory management services
  • Standard Inter-Process Communication Idioms

Who should attend

Attendees should have some experience of embedded systems programming and a sound basic knowledge of the C language.


Basic programming knowledge is recommended
Make an enquiry

Related courses