Idézet:
„Pedig ott van a példában.”
Jaj, ennyire ne becsüld túl a képességeimet!
Csak futólag néztem bele a kódba, így nem sokat fogtam még fel belőle...
Idézet:
„
A verem 0..7 szintje az 1. taszké, a 8..15 szint a 2. taszké és így tovább.”
Négy taszknál még elmegy, de 16 vagy 64 taszk esetén már nem járható ez az út. Ha jól látom, a uC/OS-II-ben taszkváltáskor elmentik, illetve visszaállítják a teljes hw stack-et. Ennek nyilván meg kell fizetni az árát...
Idézet:
„Négy taszknál még elmegy, de 16 vagy 64 taszk esetén már nem járható ez az út.”
Egy mezei 18f-es PIC-el ne akarj 16, pláne 64 taszkot futtatni. A 4-5 taszk még megoldható, ha ennél több kell válassz 16 vagy 32 bites procit. Ha belegondolsz a
PIC16-os sorozatnak csak 8 mélységű verme van.
Idézet:
„Egy mezei 18f-es PIC-el ne akarj 16, pláne 64 taszkot futtatni. A 4-5 taszk még megoldható...”
Azért a
PIC18F97J60 vagy PIC18F87J50 esetében ezt túl erős megkötésnek érzem.
Ok. akkor számoljunk egy kicsit. Legyen csak 16 taszk. Ha a programod mérete nem haladja meg a 64kByte-ot (32kSzó) akkor veremszintenként csak 2 byte, egy teljes verem mérete 62 byte. Ezt 16-al szorozva 992 byte-ot kapunk, ami csak a verem mentegetéséhez és visszaállításához szükséges. Mondjuk itt is lehet kötni olyan kompromisszumot, hogy 4 taszkot berakunk egy verembe, és csak akkor mentünk vermet mikor a 4->5, 8->9, 12->13 és 16->1 közötti taszkváltás történik. Ezáltal már 16 taszk esetén is csak 4*62=248 byte kell a verem mentéséhez. Mondjuk a nagyobb probléma C nyelv esetén lenne ahol a szoftver verem fogyna el igen hamar.