Site Sections => About Us | Consultancy | Training | Software | Publications | Open Source | Support | Open Standards | FAQ | Jobs
Site Style Info

Advanced C Programming for Embedded Systems — A 5-day Course

Synopsis

In this course you'll learn advanced programming techniques using dynamic data structures and algorithms. Finite state machines and statecharts and their uses are covered in depth. You'll also learn techniques specific to embedded systems, such as structured interrupt handling, implementation of simple schedulers, and how to work with embedded operating systems. You'll learn the standard inter-process communication mechanisms and their uses. In addition the course overviews various advanced algorithms and discusses research oriented approaches for learning more about these algorithms and their implementation. The course will also show you how to design modules with clean interfaces to achieve disciplined and well structured code.

The course emphasises the implementation of disciplined and well structured code and the design of modules with clean interfaces. 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 Objectives

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.

Key Topics

  • 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

Prerequisites

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

Delivery

This is instructor led C training. Each section of the material covered by the tutor is followed by hands-on practical exercises for which worked examples of the solutions are typically provided.

Scheduled and On-site Courses

Courses in this subject are scheduled on an 'ad-hoc' basis. We can arrange a course at our Carshalton centre or on customer site for any client wishing to send two or more delegates on the same course.

For courses at the Carshalton Centre the fee will be:

  • £3500 + VAT for the first two delegates
  • £1650 + VAT for the third delegate
  • £1200 + VAT for the fourth delegate
  • £400 + VAT for each additional delegate to a maximum of eight

On-site course fees are as above + expenses recharged at cost.

For a 1:1 course in Carshalton the fee is £2750 + VAT. For a 1:1 on-site course the fee is £2750 + VAT + expenses recharged at cost.

If there are any dates showing below this line, a course has been scheduled and places for individuals are available at £1750. Otherwise, no courses are currently scheduled and the above fees apply.


Contents

An Introduction to C

Intensive overview of essential C concepts and idioms

  • Data types, data structures, pointers and arrays
  • Using pointers to search collections of data

Arrays and buffers

  • Circular buffers
  • Polygonal buffers
  • I/O vectors

Linked Lists in depth

  • Singly linked and doubly linked lists
  • Using lists to implements FIFO queues and LIFO queues (stacks)
  • Using lists of linked lists
  • Using linked list nodes containing void * pointers to implement heterogeneous collections of data
  • Using linked lists to implement resizeable arrays

Binary trees, their uses and their relations

  • Basic binary trees
  • Self-balancing binary trees (AVL, Red-Black, Splay)
  • Heaps and their uses
  • Huffman encoding
  • Priority queues

Error detection

  • CRC checksums (16 bit and 32 bit)

Implementing simple memory management schemes

Implementing simple flash memory file systems

State Machines and Statecharts

  • Event driven programming
  • Basic FSMs
  • Pattern matching
  • Parsing
  • State driven hardware and communication protocols
  • Implementing FSMs using switch statements
  • Implementing FSMs using a table driven approach
  • Limitations of FSMs
  • Extended FSMs and hierarchical FSMs
  • Extending FSMs by adding variables and conditional transitions
  • Nesting state machines (push down automata)

Statecharts

  • Hierachical FSMs and extended FSMs (simple statecharts)
  • Orthogonal statecharts and concurrency
  • Active objects - linking multi-tasking, message passing and event driven programming

Basic operating systems and multi-tasking concepts

  • Task structures
  • Task life cycle
  • Task management
  • Task data structures
  • Task queues
  • Message queues
  • Semaphores (counting, binary, mutex)
  • Monitors
  • Pipes
  • Memory management services
  • Signals
  • Timers
  • Device drivers

Standard Inter-Process Communication Idioms

  • Producer - Consumer
  • Monitors
  • Readers and Writers
  • Workcrew

C training UK prices

For publicly scheduled training (individual places), see our UK training schedule.

In-house training for company groups is charged at a daily rate per group — see our In-House UK Training Guidelines.

Publicly Scheduled Training Locations

We currently run public training courses in the following locations:

  • London, UK
  • Leeds, West Yorkshire, UK
  • Birmingham, West Midlands, UK
  • Carshalton, Surrey, UK
  • Chester, North West, UK
  • Coventry, West Midlands, UK
  • Edinburgh, Scotland, UK
  • Glasgow, Scotland, UK
  • Harwell, Oxfordshire, UK
  • Manchester, North West, UK
  • Milton Keynes, Buckinghamshire, UK
  • Newark, Nottinghamshire, UK
  • Reading, Berkshire, UK
  • Slough, Berkshire, UK
  • Stevenage, Hertfordshire, UK
  • Wakefield, West Yorkshire, UK
  • Wokingham, Berkshire, UK

Most UK public training courses are available on a monthly basis.

Please see the individual course outlines or our public training schedule for details.

In-house (on-site) training locations

We deliver in-house courses at client premises and/or training facilities in any part of the world which is practically and commercially accessible.

Our In-house training guidelines outline our basic requirements and our UK pricing structure. To estimate costs for training in other countries, simply convert to your local currency and then make a rough calculation of our tutor's costs for travelling to and staying at your location.


West Yorkshire Office

GBdirect Ltd
Training Division
Bradford Design Exchange
34 Peckover Street
BRADFORD
BD1 5BD
West Yorkshire
United Kingdom

training@gbdirect.co.uk

Training: 0800 651 0338
General: +44 (0)870 200 7273
Finance: +44 (0)1353 615 174

Please call between 0900 and 1700 (UK time) on Monday to Friday


South East Regional Office

GBdirect Ltd
Training Division
18 Lynn Rd
ELY
CB6 1DA
Cambridgeshire
United Kingdom

training@gbdirect.co.uk

Training: 0800 651 0338
General: +44 (0)870 200 7273
Finance: +44 (0)1353 615 174

Please call between 0900 and 1700 (UK time) on Monday to Friday


Please note:
Non-training enquiries should be directed, initially, to our UK national office in Bradford (West Yorkshire), even if the enquiry concerns services delivered in London or South/East England. Clients in London and the South East will typically be handled by staff working in the London or Cambridge areas.