A real-time operating system (RTOS) is an operating system (OS) intended to serve real-time application process data as it comes in, typically without buffering delays. Processing time requirements (including any OS delay) are measured in tenths of seconds or shorter. A key characteristic of an RTOS is the level of its consistency concerning the amount of time it takes to accept and complete an application's task; the variability is jitter.A hard real-time operating system has less jitter than a soft real-time operating system. The chief design goal is not high throughput, but rather a guarantee of a soft or hard performance category. An RTOS that can usually or generally meet a deadline is a soft real-time OS, but if it can meet a deadline deterministically it is a hard real-time OS.

RTOS

  • INTRODUCTION AND SCOPE
  • An Introduction to Multi Tasking in Small Embedded Systems
  • What is FreeRTOS?

TASK MANAGEMENT

  • TASK FUNCTIONS
  • TOP LEVEL TASK STATES
  • CREATING TASKS
  • xTaskCreate() API Function
  • Example 1. Creating Tasks
  • Example 2. Using the Task Parameter
  • TASK PRIORITIES
  • Example 3. Experimenting with priorities
  • EXPANDING THE NOT RUNNING’ STATE
  • The Blocked State
  • The Suspended State
  • The Ready State
  • Completing the State Transition Diagram
  • Example 4. Using the Blocked state to create a delay
  • vTaskDelayUntil() API function
  • THE IDLE TASK AND THE IDLE TASK HOOK
  • Idle Task Hook Functions
  • Limitations on the Implementation of Idle Task Hook Functions
  • Example 7. Defining an Idle Task Hook Function
  • CHANGING THE PRIORITY OF A TASK
  • vTaskPrioritySet() API function
  • uxTaskPriorityGet() API
  • Example 8. Changing task priorities
  • DELETING A TASK
  • vTaskDelete() API function
  • Example 9. Deleting tasks
  • THE SCHEDULING ALGORITHM – A SUMMARY
  • Prioritized Preemptive Scheduling
  • Selecting Task Priorities
  • Co-operative Scheduling

QUEUE MANAGEMENT

  • INTRODUCTION AND SCOPE
  • Scope
  • CHARACTERISTICS OF A QUEUE
  • Data Storage
  • Access by Multiple Tasks
  • Blocking on Queue Reads
  • Blocking on Queue Writes
  • USING A QUEUE
  • xQueueCreate() API Function
  • xQueueSendToBack() and xQueueSendToFront() API Functions
  • xQueueReceive() and xQueuePeek() API Functions
  • uxQueueMessagesWaiting() API Function
  • Example 10. Blocking When Receiving From a Queue
  • Using Queues to Transfer Compound Types
  • Example 11. Blocking When Sending to a Queue / Sending Structures on a Queue
  • WORKING WITH LARGE DATA

INTERRUPT MANAGEMENT

  • INTRODUCTION AND SCOPE
  • Events
  • Scope
  • DEFERRED INTERRUPT PROCESSING
  • Binary Semaphores used for Synchronization
  • vSemaphoreCreateBinary() API Function
  • xSemaphoreTake() API Function
  • xSemaphoreGiveFromISR() API Function
  • Example 12. Using a Binary Semaphore to Synchronize a Task with an Interrupt
  • COUNTING SEMAPHORES
  • xSemaphoreCreateCounting() API Function
  • Example 13. Using a Counting Semaphore to Synchronize a Task with an
  • Interrupt
  • USING QUEUES WITHIN AN INTERRUPT SERVICE ROUTINE
  • xQueueSendToFrontFromISR() and xQueueSendToBackFromISR() API Functions
  • Efficient Queue Usage
  • Example 14. Sending and Receiving on a Queue from Within an Interrupt
  • INTERRUPT NESTING

RESOURCE MANAGEMENT

  • INTRODUCTION AND SCOPE
  • Mutual Exclusion
  • Scope
  • CRITICAL SECTIONS AND SUSPENDING THE SCHEDULER
  • Basic Critical Sections
  • Suspending (or Locking) the Scheduler
  • vTaskSuspendAll() API Function
  • xTaskResumeAll() API Function
  • MUTEXES (AND BINARY SEMAPHORES)
  • xSemaphoreCreateMutex() API Function
  • Example 15. Rewriting vPrintString() to Use a Semaphore
  • Priority Inversion
  • Priority Inheritance
  • Deadlock (or Deadly Embrace)
  • GATEKEEPER TASKS
  • Example 16. Re-writing vPrintString() to Use a Gatekeeper Task

MEMORY MANAGEMENT

  • INTRODUCTION AND SCOPE
  • Scope
  • EXAMPLE MEMORY ALLOCATION SCHEMES
  • Heap_1.c
  • Heap_2.c
  • Heap_3.c

Real Time Application Design

  • Using Free RTOS in small Embedded System
  • INTRODUCTION
  • TOP Level software requirement
  • Application Component
  • Why use an RTOS kernel?
  • Synopsis
  • Implementation
  • Scheduling application functions
  • Making a fully Preemptive system
  • Reducing RAM utilization
  • Reducing Processor Overhead
COMMENCING NEW BATCHES
ENQUIRY FORM
FOLLOW US ON
SUBSCRIBE TO OUR NEWSLETTER

WE ACCEPT ONLINE PAYMENTS
PAY ONLINE