- Mastering the FreeRTOS™ Real Time Kernel
- List of Abbreviations
- Getting Started
- 1. Preface
- 1.1. Multitasking in Small Embedded Systems
- 1.2. Included Source Files and Projects
- 2. The FreeRTOS Kernel Distribution
- 2.1. Introduction
- 2.2. Understanding the FreeRTOS Distribution
- 2.3. Demo Applications
- 2.4. Creating a FreeRTOS Project
- 2.5. Data Types and Coding Style Guide
- Core Kernel Concepts
- 3. Heap Memory Management
- 3.1. Introduction
- 3.2. Example Memory Allocation Schemes
- 3.3. Heap Related Utility Functions and Macros
- 3.4. Using Static Memory Allocation
- 4. Task Management
- 4.1. Introduction
- 4.2. Task Functions
- 4.3. Top Level Task States
- 4.4. Task Creation
- 4.5. Task Priorities
- 4.6. Time Measurement and the Tick Interrupt
- 4.7. Expanding the Not Running State
- 4.8. The Idle Task and the Idle Task Hook
- 4.9. Changing the Priority of a Task
- 4.10. Deleting a Task
- 4.11. Thread Local Storage and Reentrancy
- 4.12. Scheduling Algorithms
- Kernel Objects and Communication
- 5. Queue Management
- 5.1. Introduction
- 5.2. Characteristics of a Queue
- 5.3. Using a Queue
- 5.4. Receiving Data From Multiple Sources
- 5.5. Working with Large or Variable Sized Data
- 5.6. Receiving From Multiple Queues
- 5.7. Using a Queue to Create a Mailbox
- 6. Software Timer Management
- 6.1. Chapter Introduction and Scope
- 6.2. Software Timer Callback Functions
- 6.3. Attributes and States of a Software Timer
- 6.4. The Context of a Software Timer
- 6.5. Creating and Starting a Software Timer
- 6.6. The Timer ID
- 6.7. Changing the Period of a Timer
- 6.8. Resetting a Software Timer
- 7. Interrupt Management
- 7.1. Introduction
- 7.2. Using the FreeRTOS API from an ISR
- 7.3. Deferred Interrupt Processing
- 7.4. Binary Semaphores Used for Synchronization
- 7.5. Counting Semaphores
- 7.6. Deferring Work to the RTOS Daemon Task
- 7.7. Using Queues within an Interrupt Service Routine
- 7.8. Interrupt Nesting
- 8. Resource Management
- 8.1. Chapter Introduction and Scope
- 8.2. Critical Sections and Suspending the Scheduler
- 8.3. Mutexes (and Binary Semaphores)
- 8.4. Gatekeeper Tasks
- 9. Event Groups
- 9.1. Chapter Introduction and Scope
- 9.2. Characteristics of an Event Group
- 9.3. Event Management Using Event Groups
- 9.4. Task Synchronization Using an Event Group
- 10. Task Notifications
- 10.1. Introduction
- 10.2. Task Notifications; Benefits and Limitations
- 10.3. Using Task Notifications
- Advanced Topics
- 11. Low Power Support
- 11.1. Power Saving Introduction
- 11.2. FreeRTOS Sleep Modes
- 11.3. Functions and Enabling Built-in Tickless Idle Functionality
- 11.4. Implementing portSUPPRESS_TICKS_AND_SLEEP() Macro
- 11.5. Idle Task Hook Function
- 12. Developer Support
- 12.1. Introduction
- 12.2. configASSERT()
- 12.3. Tracealyzer for FreeRTOS
- 12.4. Debug Related Hook (Callback) Functions
- 12.5. Viewing Run-time and Task State Information
- 12.6. Trace Hook Macros
- 13. Troubleshooting
- 13.1. Chapter Introduction and Scope
- 13.2. Interrupt Priorities
- 13.3. Stack Overflow
- 13.4. Use of printf() and sprintf()
- 13.5. Other Common Sources of Error