Živjo,
Z zamenjavo družine in št. bitov mikrokontrolerja (iz 8 bit AVR 8 na STM32) gledam prednosti in slabosti RTOS-a in se nekako ne morem odločiti ali grem v to ali ne. Prednosti bi hitro videl, slabosti zaenkrat še ne vidim, kar pa nisem prepričan čisto pa je do kakšnega nivoja naj s tem RTOS-om grem, torej katere dele vse bi s tem delal.
Da opišem kaj imam sedaj:
- merjenje frekvence
- merjenje A/D
- input/output komunikacija preko CAN
- zapisovanje na zunanji flash (spi)
- ogromna glavna znamka, ki ima 50+ razičnih eventov, ki so že sedaj schedulani po nekem razporedju, s timeouti in podobno (z neko globalno časovno spremenljivko, ki ne blokira delovanja). Nekako tako: če je aktivirano to, se sproži neka logika, ki ima potem spet N pogojev za delovanje in je v več fazah, če se ena od faz ne izvede v XY času T, se potem zažene v tem primeru faza 2, če ne gre na fazo 3 ipd. Skratka, zelo prepleteno.
Moje vprašanje torej je, do kakšne mere vpeljati RTOS.
Jasno mi je, da kar je periferije in komunikacije, idealno paše v ta koncept.
Kako pa je s to glavno zanko? Rad bi naredil stvar malo bolj pregledne, da bo to lažje updejtat in dodajat nove stvari, ker je sedaj že zelo nepregledna in imam napisanih preko 30 avtomatiziranih testov, da ob vsakem popravku pregleda, če ostalo še "pije" vodo. Ko dodam neko novo funkcionalnost, je velik rizik, da kaj ne bo delalo več tako kot mora.
- Bi moral biti vsak ta task svoj thread s svojimi pogoji in eventi? Bi jih grupiral po večjih blokih in znotraj tistega potem logiko delal?
- Ohranim veliko zanko in pač dodam samo periferijo v threade?
- Bi z glavno zanko real-time kreiral posamične threade glede na task, ki ga moram izvest, in jih potem ukinil? (če je sploh možno).
Hvala vsem za nasvete.