[IMPORTANTE] Bug in STM32CubeMX impedisce l'uso di malloc()/free() con FreeRTOS

[IMPORTANTE] Bug in STM32CubeMX impedisce l'uso di malloc()/free() con FreeRTOS

by Jacopo Maltagliati -
Number of replies: 0

Buonasera a tutti,

Durante la stesura del progetto io e alcuni colleghi abbiamo incontrato alcune difficoltà nell'utilizzo della funzione sprintf() in concomitanza con FreeRTOS: in pratica, un bug nel programma crea un linker script che corrompe la memoria quando vengono effettuate chiamate a malloc/free/ecc.

Di seguito un articolo che tratta il problema nel dettaglio: http://www.nadler.com/embedded/newlibAndFreeRTOS.html. E' una lettura tanto interessante quanto triste.

Il risultato? Non è possibile usare STM32CubeMX per generare progetti FreeRTOS funzionanti. a meno che si sia certi di usare solo ed esclusivamente il set di funzionalità (limitate) fornite dalle varie implementazioni di gestione della memoria fornite da FreeRTOS (heap_4.c ad esempio). Nel caso in cui il problema sia solo sprintf() è possibile rivolgersi ad un'implementazione alternativa. Si noti che queste sono solamente delle mitigazioni e non correggono il problema.