ich benutze RTX indirekt da es in Mbed-OS als RTOS drin ist. Da
Cortex-M0 ja auch viel Flash/Ram haben können, lohnt es sich durchaus
die auch für RTOS zu nutzen. Die GCC behandelt die M0 allerdings etwas
stiefmütterlich was die Codeoptimierung angeht, da war der Keil immer
besser. Ich weiß aber nicht ob das bei den aktuellen Versionen immer
noch so ist.
Das preämptives RTOS hat natürlich mehr 'Verschnitt', alleine dadurch
das Threads eigene Stacks haben und man da ja auch Reserven lässt.
Auch der Programmcode durch nötige Mutex wird größer: die microlib bzw.
newlib-nano bei der GCC sind nicht threadsafe und man muss die
umfangreichere, volle C-Runtime benutzen und das macht je nach
Funktionen schon viele kB aus.
Das genannte define ist bei Mbed auf Grösse 0 gesetzt, ich habe mich um
die Konfiguration bisher nicht kümmern müssen. Bei FreeRTOS gibt es das
auch, da wird es für die eigene Speicherverwaltung benutzt, ich nehme an
das ist bei RTX genauso. Mit Größe 0 muss die C-Runtime benutzt werden,
bei Mbed haben die alloc Funktionen aber Wrapper. Die passen auf das
malloc nicht im Interruptkontext aufgerufen werden (erzeugen dann einen
Runtime Fehler), oder fügen Instrumentierung wie Statistik oder Tracing
hinzu.
Leider ist in IDE/Tools der RTX support eher mau, z.B. im Cortex-Debug
in VSCode gibt es keine Anzeige der Threads wie es das für andere OS
gibt.