MCU & FPGA RTOS Arquitetura Orientada a Eventos no FreeRTOS

Arquitetura Orientada a Eventos no FreeRTOS

Uso combinado: Queue + Task Notification

Em arquiteturas mais refinadas, é comum usar task notifications para acordar a tarefa e queues apenas para transportar dados, reduzindo latência.

void vFastProducer(void *pvParameters)
{
    uint16_t sample;

    for (;;)
    {
        sample = readFastSensor();
        xQueueSend(sampleQueue, &sample, 0);
        xTaskNotifyGive(consumerTaskHandle);
    }
}

A tarefa consumidora:

void vConsumerTask(void *pvParameters)
{
    for (;;)
    {
        ulTaskNotifyTake(pdTRUE, portMAX_DELAY);
        drainQueueAndProcess();
    }
}

Esse padrão evita que a tarefa consumidora acorde repetidamente para cada item, aumentando eficiência e previsibilidade.


Implicações de projeto e dimensionamento

Filas consomem memória proporcional ao tamanho do item × profundidade da fila. Em sistemas embarcados restritos, isso exige planejamento cuidadoso. Além disso, filas grandes podem mascarar problemas de desempenho, atrasando a percepção de gargalos reais.

Do ponto de vista de latência, filas introduzem um pequeno overhead de cópia, mas oferecem robustez e clareza arquitetural. Por isso, devem ser usadas sempre que o evento carrega informação relevante e não apenas sinalização.


0 0 votos
Classificação do artigo
Inscrever-se
Notificar de
guest
0 Comentários
mais antigos
mais recentes Mais votado
Feedbacks embutidos
Ver todos os comentários

Related Post

0
Adoraria saber sua opinião, comente.x