Página 1 de 1

Alocação dinâmica com FreeRTOS

MensagemEnviado: 01 Abr 2019 10:30
por mrgadotti
Iniciei um trabalho com o STM32F4 e CMSIS-RTOS, aproveitando o STM32CubeMX para gerar o código base e principais configurações para o projeto no TrueStudio.

Meu problema com esse RTOS está na alocação dinâmica de memória. Utilizei como referência a documentação do FreeRTOS e o link Implementing Malloc With FreeRTOS.

A alocação está funcionando perfeitamente com pvPortMalloc(size), porém ao desalocar essa memória o RTOS está travando na chamada da função vPortFree(ptr). Estou utilizando a heap_4 do FreeRTOS.

Gostaria de trocar uma ideia se alguém já teve algum problema parecido no CMSIS-RTOS e alocação dinâmica no mesmo.

Re: Alocação dinâmica com FreeRTOS

MensagemEnviado: 01 Abr 2019 12:11
por Rodrigo_P_A
já tive problema, usei rotina de malloc externa, tipo essa:

http://g.oswego.edu/dl/html/malloc.html

Você consegue iniciar ela, e usar para alocar e desalocar, e funciona bem, já usei em vários projetos.

Além disso o legal é que você consegue configurar, para usar por exemplo, uma área da RAM, eu usei em um ARM LPC17xx , eu num usava os 16KB de ram da ETHERNET, então inicializei a rotina para usar de forma dinamica aquela área de ram, e o resto deixei usando pelo compilador mesmo ( estática e heap )... dá uma olhada


Eu nunca tive sucesso com a alocação dinamica do freertos, mas usei versão bem antiga, o projeto eu fiz em meados de 2009-2011

Re: Alocação dinâmica com FreeRTOS

MensagemEnviado: 01 Abr 2019 17:41
por mrgadotti
Rodrigo_P_A escreveu:já tive problema, usei rotina de malloc externa, tipo essa:

http://g.oswego.edu/dl/html/malloc.html

Você consegue iniciar ela, e usar para alocar e desalocar, e funciona bem, já usei em vários projetos.

Além disso o legal é que você consegue configurar, para usar por exemplo, uma área da RAM, eu usei em um ARM LPC17xx , eu num usava os 16KB de ram da ETHERNET, então inicializei a rotina para usar de forma dinamica aquela área de ram, e o resto deixei usando pelo compilador mesmo ( estática e heap )... dá uma olhada


Eu nunca tive sucesso com a alocação dinamica do freertos, mas usei versão bem antiga, o projeto eu fiz em meados de 2009-2011


Show, vou testar esse esquema da rotina externa!

Re: Alocação dinâmica com FreeRTOS

MensagemEnviado: 01 Abr 2019 19:24
por Rodrigo_P_A
Dica:
- Após testar, se for usar com o freertos, num se esqueça de fazer tipo um "semáforo simples" para evitar reentrada na rotina de malloc / calloc / realloc / free , pois se duas tarefas chamarem ao mesmo tempo, pode ter problema.