PIC32 FreeRTOS C Programming
Duration: 5 Days
Course Background
As applications become more complex and more likely to evolve over the course of their product lifetime so the advantages of adopting a multi-tasking approach based on an embedded operating system become more attractive. FreeRTOS is a well designed and widely used embedded operating system, with a small code footprint and a rich API (Application Programming Interface). It is available as both a pure open source project and as a commercial certified and commercially supported RTOS. Implementing more complex multi-tasking application requires a sound understanding of various multi-tasking and inter-process communication idioms and patterns over and above an understanding of the basic operating system API. Issues such as integrating various device driver implementations, both polling and / or interrupt driven need to be considered carefully as well.
Course Prerequisites and Target Audience
A good knowledge of embedded systems C programming is assumed. Some knowledge of multitasking and multithreading would be helpful, but is not essential as it will be covered fully in the course.
Course Overview
The course will survey the essential concepts the essential concepts and rationale for the use of embedded operating systems and multi-tasking in the development of responsive multi-tasking applications. It will cover a variety of interprocess communication and synchronisation patterns and also discuss real time aspects of developing embedded systems using an RTOS such as FreeRTOS.
Course Benefits
The course will provide a comprehensive overview of both the FreeRTOS API as well as essential aspects of the FreeRTOS architecture and internals. This course is for engineers who have a good knowledge of embedded C programming but little experience of programming using real time operating systems application programming interfaces (APIs). It will also provide a good understanding of configuring FreeRTOS to work with a variety of PIC32 target board configurations.
Course Outline
- Overview of real-time and embedded systems concepts
- Overview of Linkers and Linking
- Embedded system initialisation
- Characteristics of a Real Time Operating system
- Scheduler
- Objects
- Services
- Features of FreeRTOS
- Task and Scheduler API - task management and scheduling
- Queue API - Queues and queue management
- Semaphore API - Semaphores and semaphore management
- Memory management
- Interrupts and interrupt handling
- Integrating USB and Ethernet Protocol stacks into FreeRTOS
- Understanding tasks
- Creation, scheduling, operations
- Synchronization, communication and concurrency
- Semaphores
- Creation, operations, usage
- Producer-consumer scenario - implementation using circular buffers and semaphores
- Queues
- Concepts
- States
- Storage
- Queue operations
- Queue use
- Timers and timer management
- Memory management
- Implementing device drivers