free, small footprint, supported on popular microcontrollers and CPUS, large community of users, maintained by amazon web services, integrates easily with IoT development
New cards
19
FreeRTOS Open Sources
can be customized to specific architectures
New cards
20
Vanilla FreeRtos
original FreeRTOS that runs only on single-core CPUs
New cards
21
Xtensa Port of FreeRTOS
Extends Vanilla FreeROTS to support dual core processing on Xtensa architecture
New cards
22
Symmetric Multiprocessing (SMP) System Concepts
have multiple processor cores running independently, each core has an identical view of memory, multiple threads can execute at the same time, thread can switch between CPU cores during execution
New cards
23
ESP-IDF Free RTOS Task Management Functions
Creating tasks with Vanilla RTOS functions, ESP-IDF specific functions
New cards
24
Characteristics of ESP-IDF FreeRTOS Tasks
can only be in one of the 4 task states (running, ready, block, or suspended), implemented in user-defined a function that never returns, typically implemented in an infinite loop
New cards
25
Semaphore
a “key” that one or more tasks can acquire or release for the purpose of synchronization or mutual exclusion (binary, counting and MuTex)
New cards
26
Binary Semaphore Basics
can have two possible values (0 or 1), when a task takes a semaphore its value becomes 0, when a task releases the semaphore its value becomes 1
New cards
27
Counting semaphore basics
used for access to a pool of identical resources, can have values from 0 to N, when a task takes a counting its value is decremented by 1, when n=0, counting semaphore is no longer available, when task releases the counting its value is incremented by 1, n=1 is just a binary semaphore
New cards
28
MuTex (Mutual Exclusion Object)
same general concept as binary semaphore except locking mechanism, is an object, only modified by the current task, operations are locked or unlocked
New cards
29
Advantages of MuTex over Binary Semaphore
provides mutually exclusive access to a critical selection, only one thread can acquire the lock at a time, if a thread acquires a lock no other thread can take it away, prevents race conditions when multiple threads try to acquire the lock simultaneously
New cards
30
Inter-Task Communication Mechanisms in FreeRTOS
Direct Task Notifications, Mailboxes, Queues, Pipes
New cards
31
Direct Task Notifications in FreeRTOS
event sent directly to a task that can unblock the receiving task, and optionally update the receiving task’s notification value, can only be used when theres only one task that can be the recipient of the event
New cards
32
Mailboxes in FreeRTOS
data buffer managed by the RTOS and used for sending a message to a task, object is like a posting mailbox, task can have a mailbox into which others can post mail, any task or ISK can send the message to mailbox of another task
New cards
33
Using message queues in FreeRTOS
queue can be considered an array of mailboxes, FIFO structure, task or ISR deposits message out in the order they were put in
New cards
34
Queue creation includes
name or ID, length, sending task waiting list, receiving task waiting list
New cards
35
Pipes for RTOS Inter-Task Communication
RTOS object that provides simple communication channels used for unstructured data exchange among tasks, can be opened closed written to and read from, unidirectional data exchange