FreeRTOS V9.0.0 e alocação estática de memória

- por Sergio Prado

Categorias: FreeRTOS Tags:

Há duas semanas foi liberado o FreeRTOS V9.0.0, e com uma grande novidade! Agora é possível criar qualquer objeto do kernel (tarefa, queue, semáforo, etc) estaticamente. Ou seja, agora o FreeRTOS é capaz de trabalhar sem de alocação dinâmica de memória!

freertos

Para isso, novas funções foram criadas. Todas as funções de criação de objetos do kernel, como por exemplo xTaskCreate() e xQueueCreate(), ganharam uma versão para trabalhar com alocação estática, respectivamente xTaskCreateStatic() e xQueueCreateStatic().

1
2
3
4
5
6
7
8
9
10
11
12
TaskHandle_t xTaskCreateStatic( TaskFunction_t pxTaskCode,
                                const char * const pcName,
                                const uint32_t ulStackDepth,
                                void * const pvParameters,
                                UBaseType_t uxPriority,
                                StackType_t * const puxStackBuffer,
                                StaticTask_t * const pxTaskBuffer );
 
QueueHandle_t xQueueCreateStatic( UBaseType_t uxQueueLength,
                                  UBaseType_t uxItemSize,
                                  uint8_t *pucQueueStorageBuffer,
                                  StaticQueue_t *pxQueueBuffer );

Para utilizar estas funções, é necessário alocar estaticamente a memória para o objeto e passar o ponteiro desta região de memória para a função de criação do objeto.

Foram criadas definições para habilitar as funções que utilizam alocação estática (configSUPPORT_STATIC_ALLOCATION) e alocação dinâmica (configSUPPORT_DYNAMIC_ALLOCATION) de memória. Para habilitar as funções que utilizam alocação estática, deve-se definir configSUPPORT_STATIC_ALLOCATION com 1 no FreeRTOSConfig.h.

1
#define configSUPPORT_STATIC_ALLOCATION    1

Esta versão é totalmente compatível com o FreeRTOS V8.X.X, e contém mais algumas novidades. Foi criada uma nova função chamada xTaskAbortDelay(), que possibilita uma tarefa de desbloquear automaticamente outra tarefa que esteja esperando algum tipo de delay. Foram feitas também alterações para que o FreeRTOS suporte processadores de 64 bits.

Como sempre, o histórico completo de alterações está disponível no site do projeto.

Um abraço,

Sergio Prado

Sem Comentários

Nenhum comentário até agora... é a sua chance de ser o primeiro a comentar!

Faça um Comentário

Navegue
Creative Commons Este trabalho de Sergio Prado é licenciado pelo
Creative Commons BY-NC-SA 3.0.