Skip to the content.
« Previous Index Next »

Firmware Coding Standard — Resource Budgets (FreeRTOS)

1) Purpose

Define strict budgeting rules for CPU, memory, stack, and peripheral resources in FreeRTOS-based firmware. Prevent unbounded growth, enforce predictability, and ensure the system fits within target hardware limits.


2) Principles


3) CPU Time Budget


4) Task Stack Budget


5) Heap & Memory Budget


6) IPC Budgets (Queues, Buffers)


7) Peripheral & Timer Budgets


8) Telemetry & Monitoring


9) Anti-Patterns


10) Review Checklist


11) CI/Lint Gates


12) Example Patterns

Task declaration in TASKS.md

Task: comms
Period: 10 ms
WCET: 1.2 ms
Stack: 768 words (measured 600, margin 20%)
Priority: High

Queue with monitoring

if (xQueueSend(q_comms, &msg, 0) != pdPASS) {
    LOG_WARN("COMMS", "Queue full, msg dropped");
    comms_stats.dropped++;
}

Telemetry snippet

void telemetry_report(void) {
    sys_metrics_t m = {
        .heap_free = xPortGetFreeHeapSize(),
        .cpu_load  = get_cpu_load(),
        .stack_comms = uxTaskGetStackHighWaterMark(task_comms_h),
        .queue_comms = uxQueueSpacesAvailable(q_comms),
    };
    send_metrics(&m);
}

« Previous Index Next »