Embedded Systems Engineer
RTOS questions
199 questions on RTOS for embedded systems engineers, easiest first.
Easy 54
- Delaying inside an RTOS taskeasy
- Mutex compared with semaphoreeasy
- Waiting inside an RTOS taskeasy
- What real-time really meanseasy
- Hard versus soft deadlineseasy
- FreeRTOS task waiting on a queueeasy
- Which task the scheduler runseasy
- Two tasks at the same priorityeasy
- Job of the idle taskeasy
- Converting milliseconds to tickseasy
- Running a task at a fixed rateeasy
- Mutex versus binary semaphoreeasy
- Guarding a pool of 4 bufferseasy
- When to use a recursive mutexeasy
- Waiting for three conditions at onceeasy
- Where a FreeRTOS timer callback runseasy
- What a FreeRTOS queue storeseasy
- Sending to a full queueeasy
- Meaning of portMAX_DELAYeasy
- Units of the stack size argumenteasy
- Zephyr thread priority numberseasy
- Sleeping a Zephyr threadeasy
- Creating a Zephyr thread at build timeeasy
- Enabling a Zephyr featureeasy
- Building a Zephyr app for a boardeasy
- Passing fixed-size messages in Zephyreasy
- Deferring ISR work in Zephyreasy
- What a context switch saveseasy
- Short critical section in FreeRTOSeasy
- vTaskSuspendAll compared with a critical sectioneasy
- Choosing a FreeRTOS heap schemeeasy
- Tasks with no heap at alleasy
- A low-priority task never runseasy
- Two tasks stuck forevereasy
- Checking how much stack a task usedeasy
- Turning on configASSERTeasy
- Catching out-of-heap errorseasy
- Putting the CPU to sleep when idleeasy
- When a super loop is enougheasy
- Cooperative versus preemptive schedulingeasy
- Code after vTaskStartSchedulereasy
- FreeRTOS kernel licenceeasy
- Zephyr project licenceeasy
- Signalling a Zephyr thread from an ISReasy
- Zephyr mutex in interrupt contexteasy
- Priority ceiling protocoleasy
- Priority order under rate monotoniceasy
- What jitter means for a periodic taskeasy
- Changing a task priority latereasy
- What k_yield does in Zephyreasy
- Checking Zephyr thread stack useeasy
- Running Zephyr code on a PCeasy
- Always keeping the latest valueeasy
- Limit of FreeRTOS stream bufferseasy
Medium 81
- Priority inversionmedium
- Passing data between tasksmedium
- Waking a task from an ISRmedium
- Lighter than a semaphoremedium
- Choosing task stack sizesmedium
- Describing hardware in Zephyrmedium
- High-priority task starvesmedium
- Two tasks stop forevermedium
- Blocking call in an ISRmedium
- Watchdog for many tasksmedium
- RTOS tick in a sleepy devicemedium
- Two tasks share strtokmedium
- Loop rate with vTaskDelaymedium
- How long vTaskDelay(1) waitsmedium
- When a 32-bit tick count wrapsmedium
- Timeout check that survives wrapmedium
- Why portYIELD_FROM_ISR is neededmedium
- Lost interrupts with a binary semaphoremedium
- First take of a new binary semaphoremedium
- Releasing another task mutexmedium
- Mutex held during a long waitmedium
- Limits of priority inheritancemedium
- How many bits an event group holdsmedium
- Three tasks meeting at a pointmedium
- Event bit stays set and loopsmedium
- Setting event bits from an ISRmedium
- Blocking inside a timer callbackmedium
- xTimerStart returns pdFAILmedium
- A 2.5 ms software timermedium
- Queueing pointers to large buffersmedium
- Waiting on two queues and a semaphoremedium
- Overhead in a message buffermedium
- Stream buffer trigger levelmedium
- ulTaskNotifyTake as a countermedium
- When task notifications do not fitmedium
- Gatekeeper task for a shared UARTmedium
- Deleted tasks leak memorymedium
- Idle task and priority 0 tasksmedium
- Waking a task out of a long delaymedium
- Measuring CPU use per taskmedium
- CPU load from run-time statsmedium
- Seeing task switches over timemedium
- Allocation fails with free memory leftmedium
- Heap across two RAM banksmedium
- Calling malloc from several tasksmedium
- Task crashes after adding printfmedium
- errno shared between tasksmedium
- Context of a Zephyr k_timer expiry functionmedium
- Running a job 500 ms later in Zephyrmedium
- One work item slows all othersmedium
- Waiting on several Zephyr objectsmedium
- Data put in a Zephyr FIFO gets corruptedmedium
- A Zephyr thread with priority -1medium
- k_sched_lock compared with irq_lockmedium
- Setting a flag from ISR and thread in Zephyrmedium
- Checking a Zephyr device before usemedium
- Moving a sensor to another I2C busmedium
- Logging inside a fast ISR in Zephyrmedium
- Running init code before main in Zephyrmedium
- Finding Zephyr Kconfig optionsmedium
- Running Zephyr tests across boardsmedium
- Adding a bootloader for firmware updatesmedium
- Protecting data on a dual-core Zephyr SoCmedium
- Pinning a task to one coremedium
- Priority assumptions on two coresmedium
- Wi-Fi jitter on an ESP32 control taskmedium
- Isolating an untrusted taskmedium
- Limiting a Zephyr thread to its own memorymedium
- An interrupt the kernel never masksmedium
- Lock-free ring buffer from ISR to taskmedium
- Avoiding malloc after start-upmedium
- Long critical section and interrupt latencymedium
- Measuring task switch timemedium
- Raising the tick rate to 10 kHzmedium
- Priority of an interrupt handler taskmedium
- Using timeouts on every blockmedium
- Embedded Linux or an RTOSmedium
- Utilisation limit under EDFmedium
- Total CPU utilisation of a task setmedium
- Testing FreeRTOS code on a PCmedium
- Spotting a stuck taskmedium
Hard 64
- Corruption in one taskhard
- Missed motor control interruptshard
- Rate monotonic utilisation testhard
- Taking a mutex in an ISRhard
- Garbled log text from two taskshard
- FromISR call from a high priority ISRhard
- The tick keeps waking the CPUhard
- Which stack holds the framehard
- FromISR call trips an asserthard
- Is this task set schedulablehard
- Crash only when printing floatshard
- Worst-case response time of the lowest taskhard
- Above the RM bound but still schedulablehard
- Adding mutex blocking to response timehard
- Task reads garbage from a main localhard
- Parameter from a function that returnshard
- Why FreeRTOS uses PendSV for switchinghard
- Two stack pointers in an RTOS on Cortex-Mhard
- Inheritance through two mutexeshard
- The Mars Pathfinder resetshard
- Critical sections on FreeRTOS SMPhard
- Blocking while the scheduler is suspendedhard
- Interrupt fires before the scheduler startshard
- xQueueSend inside a timer ISRhard
- Critical section inside an ISRhard
- What stack overflow checking catcheshard
- Inversion with a semaphore used as a lockhard
- Software timers fire late under loadhard
- Detecting a missed periodhard
- Burst of runs after a long stallhard
- Allowed NVIC priorities for FreeRTOS callshard
- Recovering from a lock order bughard
- Seeing queue contents in a debuggerhard
- Race between equal-priority taskshard
- Sizing a queue for a bursthard
- Float use in tasks on Cortex-M4Fhard
- Driver and app share a notificationhard
- Tick count after a tickless sleephard
- Periodic Zephyr thread from a k_timerhard
- Lowest-latency interrupts in Zephyrhard
- Limit on Zephyr mutex priority boosthard
- Using a Zephyr condition variablehard
- Waking many Zephyr threads at oncehard
- Crash after adding a large local in mainhard
- Catching thread stack overflow in Zephyrhard
- Time slicing in Zephyrhard
- Allocating memory from a Zephyr ISRhard
- Powering down an idle Zephyr peripheralhard
- Storing config values across reboots in Zephyrhard
- Aborting a thread that holds a mutexhard
- Network throughput collapseshard
- Setting configMAX_PRIORITIES to 64hard
- Running a function in the daemon from an ISRhard
- Two ISRs and a task share a bufferhard
- What breaks first in overloadhard
- Harmonic task periodshard
- Jitter of tick-driven periodic taskshard
- Timer callback waits on a mutexhard
- Deadline shorter than periodhard
- Calling pvPortMalloc in an ISRhard
- Debugger shows only one call stackhard
- RTOS for an IEC 61508 producthard
- Cooperative Zephyr thread hogs the CPUhard
- Active object design in an RTOShard