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

Course IAR105
Developing multi-tasking embedded applications in C using the FreeRTOS operating system

Duration: 5 Days

Intended Audience

Attendees should have a knowledge of embedded C programming and a good working knowledge of multi-tasking concepts

Course Overview

This is a 5 day hands on programming course for experienced C programmers. The course will use the IAR embedded workbench IDE and cover the concepts underlying the use of pre-emptive multi-tasking operating systems, the advantages and disadvantages of this approach, the need for careful and thoughtful design. It will cover the standard patterns and issues associated with this paradigm such as pipes and circular buffers, producer - consumer patterns, reader - writer patterns,workcrew patterns, deadlock, livelock and priority-inversion. In addition the fundamentals of topics such as interrupt handling, device driver development, and deployment, configuration and linker scripts, tuning and debugging will be surveyed. The target platforms will be ARM Cortex M3 / ARM 7 platforms.

Note: the course can be taught using other target platform supported by FreeRTOS and the IAR Embedded Workbench if required

This is a taught course with labs, with a split of about 40% teaching and 60% labs.

Course Benefits

This course helps attendees to develop an understanding of multi-tasking programming patterns and strategies for inter-process communication both in general terms and also specifically using the FreeRTOS API. In addition attendees will also master the techniques for implementing device drivers and integrating them into the FreeRTOS framework will also be covered.


Course Contents

Overview of approaches to multi-tasking in embedded systems

The structure and design of the FreeRTOS operating system

Basic Principles of Implementing Multi-tasking Applications

Patterns for controlling access to shared resources

  • implementing the simple producer - consumer pattern
  • the concept of a critical section
  • pipes as an inter-process communication mechanism and inter-process signaling using event flags
  • readers and writers patterns

messaging and message based application patterns

  • task communication via messages and message queues
  • combining message queues with State Machines - "Active Objects"

interrupt handling

  • hardware specific interrupt handling issues
  • layered interrupt handling - patterns and strategies

time and time handling

prioritisation

embedded systems anti-patterns - how to detect them and how to manage them

  • deadlock
  • livelock
  • priority inversion

power conservation

performance and resource usage analysis and profiling

simple error detection and error handling schemes

safety critical aspects of working with FreeRTOS