RTOS MAXã®ãç¥èã®æ¬ãã®ç« ãåŒãç¶ãé
眮ããŸãã
æåã®éšåã¯äžè¬çã§ããã 仿¥ã¯ãã¿ã¹ã¯ã®ã³ã¢ãšåªå
床ã«å°å¿µãã第2éšã§ãã
ã³ã³ãã³ãïŒå
¬éããã³æªå
¬éã®èšäºïŒïŒ
ããŒã1.äžè¬æ
å ±ããŒã2. RTOS MAXã®ã«ãŒãã«ïŒãã®èšäºïŒ
ããŒã3.æãåçŽãªããã°ã©ã ã®æ§é ããŒã4.æçšãªçè«ããŒã5.æåã®ã¢ããªã±ãŒã·ã§ã³ããŒã6.ã¹ã¬ããåæããŒã«ããŒã7.ã¿ã¹ã¯éã§ããŒã¿ã亀æããææ®µããŒã8.å²ã蟌ã¿ã®åŠçææŠãã
ãã§ã«è¿°ã¹ãããã«ãMACS RTOSã®ã¿ã¹ã¯ã¯ãæ±çšOSã®ãããŒã«é¡äŒŒããŠããŸãã åæã«ãã·ã¹ãã ã§ïŒãã¡ããå©çšå¯èœãªãªãœãŒã¹å
ã§ïŒä»»æã®æ°ã®ã¿ã¹ã¯ãå®è¡ã§ããŸãã æ±çšOSã§ã¯ãããã¯çè«åãæ¢ããŠç·Žç¿ã«ç§»ãããšãã§ããŸããããªã¢ã«ã¿ã€ã OSã®å Žåãããã°ã©ããŒã¯ãã¹ãŠãæ£ããè¡ã£ãããšã確èªããå¿
èŠããããã¿ã¹ã¯ã¯å¿
èŠãªã ãã®ããã»ããµãŒæéãåãåãããšãä¿èšŒãããŸãã ãããŠããã¹ãŠãæ£ããè¡ãã«ã¯ãäœããã®çè«ãç¥ãå¿
èŠããããŸãã ãããã£ãŠãã¿ã¹ã¯ã®äœæ¥ãããè©³çŽ°ã«æ€èšããŸãã
ãã«ãã¿ã¹ã¯ã®çš®é¡
MAX MAX RTOSã§ã¯ãä»ã®ã»ãšãã©ã®ãªã¢ã«ã¿ã€ã ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ãšåæ§ã«ã3ã€ã®ç°ãªãã¿ã€ãã®ãã«ãã¿ã¹ã¯ãå¯èœã§ãïŒæ··éãåèª¿ãæ··åã ãªããããªã«ïŒ å®éãç°ãªãã·ã¹ãã ã§ã¯ç°ãªãã¿ã€ãã䜿çšããæ¹ã䟿å©ã§ãã ãããã£ãŠãæã䟿å©ãªåœ¢åŒã®éžæã¯ãç¹å®ã®ã¢ããªã±ãŒã·ã§ã³ããã°ã©ã ã®éçºè
ã«å§ããããŠããŸãã
ããªãšã³ããã£ããã«ãã¿ã¹ã¯
ãã®ã¿ã€ãã¯ãå€ãã®ããã°ã©ã ã§æãããç¥ãããŠããŸã;ããã«ãããªãšã³ããã£ããã«ãã¿ã¹ã¯ã¯ãæ±çšãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã§äœ¿çšããããã®ãšäŒŒãŠããŸãã ã¹ã±ãžã¥ãŒã©ãŒã¯åã¿ã¹ã¯ã«åºå®ã¿ã€ã ã¯ã©ã³ã¿ã ïŒããã©ã«ãã§1000 Hzã§ããMAKS_TICK_RATE_HZ宿°ã䜿çšããŠèšå®ãããŸããã€ãŸããããã©ã«ãã§ã¯ã©ã³ã¿ã ã¯1ããªç§ã§ãïŒãå®è¡ããæ¬¡ã®ã¿ã¹ã¯ãå®è¡ããŸãã 以äžã§ã¿ã¹ã¯ãåæããåçãæ€èšããŸããããã§ã¯ãã·ã¹ãã ã¿ã€ããŒã«åŸã£ãŠã¿ã¹ã¯ãé çªã«å®è¡ãããããšã«æ³šæããŠãã ããã äžè¬ã«ããã®ã¹ããŒã ã¯ãããŒããŠã§ã¢ã®æŠããå§ãŸããŸã§ãããªãèŠæ ãããããªããŸãïŒæ±çšãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã§äœ¿çšãããã®ã¯åœç¶ã®ããšã§ãïŒã
æ©åšãæäœããéã®ããªãšã³ããã£ããã«ãã¿ã¹ã¯ã®åé¡
ãã€ã¯ãã³ã³ãããŒã©ãŒã®äž»ãªã¿ã¹ã¯ã®1ã€ã¯ãæ©åšã®æäœã§ãã ãããŠããã®æ©èœã¯ããã°ã©ããŒã«å€ãã®è²¬ä»»ãè² ãããŸãã åãSPIãã¹ããç°ãªãCSã©ã€ã³ã§åºåãããè€æ°ã®ããã€ã¹ã«å¯Ÿå¿ããŠããããšã倿ããå ŽåããããŸãã ããããã€ã¹ã§ã®äœæ¥ãå®äºãããŸã§ãå¥ã®ããã€ã¹ã§ã®äœæ¥ãéå§ããããšã¯ã§ããŸããã
å³ 1.è€æ°ã®ããã€ã¹ã§åäžã®SPIãã¹ã䜿çšããäŸI2Cãã¹ã¯å
ã
ãå€ãã®ããã€ã¹ãæ¥ç¶ããããã«èšèšãããŸããã
ã¿ã€ãã³ã°å³ã«ååé«ã粟床ã§èããããšãå¿
èŠãªå ŽåããããŸãã ã¿ã€ã ã¹ã©ã€ã¹ãçµäºãããšããã€ã¢ã°ã©ã ãæªãã§ããŸããŸãã
ããããããªãšã³ããã£ããã«ãã¿ã¹ã¯ã§ã¯ãã¹ã±ãžã¥ãŒã©ã¯å®¹èµŠããããŸããã ã¿ã¹ã¯ãåãæ¿ããããã®ã¿ã€ããŒããã€æ©èœãããã¯èª°ã«ãããããªããããäžèšã®å Žåã¯åæã¡ã«ããºã ã䜿çšããå¿
èŠããããŸãã ç¹å®ã®ã¹ããŒã ã§ã¯ãããã€ãã®åæããªããã£ããå°å
¥ããã ãã§ååã§ãã ããããããã°ã©ããŒã¯åæã«ã€ããŠãããããã°ã©ã ã«ã€ããŠèããããšãäœåãªããããããšã倿ãããããããŸããã ãããŠããã®å Žåãååçµåãæ¯æããŠå
å¶ãã«ãã¿ã¹ã¯ãæŸæ£ããæ¹ãè¯ãã§ãã
å調ãã«ãã¿ã¹ã¯
å調ãã«ãã¿ã¹ã¯ã§ã¯ãåãæ¿ãã¯ã¿ã€ããŒã§ã¯ãªããã¿ã¹ã¯èªäœããã®ã³ãã³ãã«ãã£ãŠå®è¡ãããŸãã ãã®ã¿ã€ã ã¯ã©ã³ã¿ã ã§è¡ãããããšã«ãªã£ãŠãããã¹ãŠãå®äºãããšã圌女èªèº«ãã¿ã¹ã¯ã¹ã€ããã³ã°é¢æ°YieldïŒïŒãåŒã³åºããŸãã ãã®é¢æ°ã®åŒã³åºãã¯ã次ã®ã¿ã¹ã¯ã«å¶åŸ¡ãç§»ãæéã§ããããšãã¹ã±ãžã¥ãŒã©ã«éç¥ããŸãã ãã®çµæãã¿ã¹ã¯ã¯ãããèªäœãã·ã¹ãã ã«åãåããããŸã§å®è¡ãäžæãããªããšããä¿èšŒããããŸãã ããããèšããŸã§ããªããã³ã€ã³ã®è£åŽã¯ããã°ã©ããŒã«ãšã£ãŠå€§ããªè²¬ä»»ã§ãã ã¿ã¹ã¯ãããã»ããµãé床ã«å æããªãããã«ããå¿
èŠãããã®ã¯ãã¢ããªã±ãŒã·ã§ã³ããã°ã©ãã§ãã ã¿ã¹ã¯ãã·ã¹ãã å
šäœãããªãŒãºãããããšãæžãããšãæ
£ç¿ã§ãããç§ã®æèŠã§ã¯ãããã¯ããã«è¯ãã§ãã æ©åšã¯åäœãããããªããã®ã©ã¡ããã§ãã ãµãã·ã¹ãã ã®1ã€ã«é害ãçºçããå Žå-æ©åšãå®å
šã§ãªããªããšãçµæã¯ã²ã©ããªããŸãã ãã®ãããããã€ã¹ãå®å
šã«æ
éããå Žåã§ãããšã©ãŒãèŠã€ããããã®ä¿¡å·ãšããŠæ©èœããŸãã ããã«ãããããããããªãšã³ããã£ããã«ãã¿ã¹ã¯ã®å Žåã1ã€ã®ã¿ã¹ã¯ããã³ã°ããŠãå
šäœãšããŠäœæ¥ãäžæãããããšã¯ãªããå調çãªã¿ã¹ã¯ã®å Žåãã¿ã¹ã¯ã¯åã«ä»ã®ã¿ã¹ã¯ãå¶åŸ¡ããŸããã
ãŸããå調åãã«ãã¿ã¹ã¯ã䜿çšããŠãã·ã³ã°ã«ã¿ã¹ã¯ã·ã¹ãã ããã¢ããªã±ãŒã·ã§ã³ããã°ããç§»æ€ã§ããŸãã 3Dããªã³ã¿ãŒïŒå®éã«ã¯CNCãã·ã³ïŒçšã®Marlinããã¡ãŒã ãŠã§ã¢ãã®æçãèããŠã¿ãŸãããã
void loop() { if(buflen < (BUFSIZE-1)) get_command(); #ifdef SDSUPPORT card.checkautostart(false); #endif if(buflen) { ... process_commands();
loopïŒïŒé¢æ°ã¯ãArduinoã©ã³ã¿ã€ã ã«ãã£ãŠç¡éã«ãŒãã§åŒã³åºãããŸãã åæ§ã®ã«ãŒãã¯ãã¿ã¹ã¯ãåãæ¿ããã¹ã±ãžã¥ãŒã©ã«é¡äŒŒããŠããŸãã ãã¹ãŠãå®éã®ã¹ã±ãžã¥ãŒã©ãŒã«ããçŽããšãloopïŒïŒé¢æ°ãæšãŠãŠãç¡éã«ãŒãã§ã¹ãã³ããã¿ã¹ã¯ã®åœ¢ã§ã³ã³ããŒãã³ããèšèšããæ¬¡ã®å埩ã®åã«YieldïŒïŒãåŒã³åºãããšãã§ããŸãã ããã«ãããã¿ã¹ã¯ãæ©åšãä»ããŠçžäºã«ç«¶åããªãããã«ãªããçžäºã«èªå°ã¿ã€ã ã¢ãŠããäœæãããŸãã ãããŠãå°æ¥çã«ã¯ãã·ã¹ãã ãé©å¿ããã«ã€ããŠãããªãšã³ããã£ããã«ãã¿ã¹ã¯ãžã®åãæ¿ãã詊ã¿ãããšãã§ããŸãã
æ··åãã«ãã¿ã¹ã¯
æåŸã®å¯èœãªãªãã·ã§ã³ãã·ã¹ãã ãããªãšã³ããã£ããã«ãã¿ã¹ã¯ã¢ãŒãã§åäœããŸãããã¿ã¹ã¯ã®äžéšïŒãŸãã¯äžéšïŒãYieldïŒïŒé¢æ°ãåŒã³åºããŸãã ç¹ã«ãã¿ã¹ã¯ãå¶åŸ¡ãåãåã£ããããã®ããŒã¿ã®æºåããŸã æŽã£ãŠããªãããšãããã£ãå Žåã æ¬¡ã«ããªãœãŒã¹ãå æããªãããã«ã圌女ã¯YieldïŒïŒé¢æ°ãåŒã³åºããŠå¥ã®ã¿ã¹ã¯ã«å¶åŸ¡ãæž¡ãããšãã§ããŸãã ãã ããMAX MAX RTOSã®çŸåšã®ããŒãžã§ã³ã§ã¯ãããã¯èš±å®¹ã§ããŸãããæ³šæããŠäœ¿çšããå¿
èŠããããŸãã ã€ã³ãã¯ããé«ããããã«ãèµ€ã§åŒ·èª¿ãããçç±ã
çŸåšã®MAX MAXã§ã¯ãæ··åãã«ãã¿ã¹ã¯ã泚æããŠäœ¿çšããå¿
èŠãããããšã«æ³šæããŠãã ããã å®éã«ã¯ãåºå®åšæ³¢æ°ã§åäœããã¿ã€ããŒã§ããªãšã³ããã£ãã¿ã¹ã¯ã®åãæ¿ããçºçããŸãã 匷å¶çãªã¿ã¹ã¯ã®åãæ¿ãã¯ããã®ã¿ã€ããŒã«ã¯åœ±é¿ããŸããã ã¿ã¹ã¯Aãåžžã«700ÎŒs以å
ã«å®è¡ãããåŸãYieldïŒïŒé¢æ°ã䜿çšããŠã¹ã±ãžã¥ãŒã©ã«å¶åŸ¡ã転éãããšããŸãã ã¹ã±ãžã¥ãŒã©ãŒã¯ã¿ã¹ã¯Bãå®è¡ããŸãããããã300ãã€ã¯ãç§åŸãã¿ã€ããŒããã®å²ã蟌ã¿ãçºçããã¹ã±ãžã¥ãŒã©ãŒã¯æ¬¡ã®ã¿ã¹ã¯Bã«å¶åŸ¡ã転éããŸããå¶åŸ¡è»¢éã¯é 次çºçãããããã¿ã¹ã¯Bã¯æ°žä¹
ã«æå¶ãããŸãã 圌女ã«ã¯åžžã«å£ã£ãæéã®éåãäžããããã¿ã¹ã¯Aã®éåã®æ®ããäžããããŸããã¿ã¹ã¯ã®ç¶æ
ãã«ãã¿ã¹ã¯ã®çš®é¡ã«ç²Ÿéããã®ã§ãã¿ã¹ã¯ãšããã«è¿ãå¶åŸ¡ã転éããããžãã¯ãæ€èšã§ããŸãã ã¿ã¹ã¯ã®ç¶æ
ãšãããã®éã®é·ç§»ã®ã°ã©ããå³ã«ç€ºããŸãã 2ã
å³ 2.åé¡ã®ç¶æ
ãšãããã®éã®é·ç§»ã®ã°ã©ãèµ°ã | æãå¿«é©ãªç¶æ
ã ã¿ã¹ã¯ã¯å®äºããŠããŸãã ãã®ç¶æ
ã§ã¯ãåç¬éã«1ã€ã®ã¿ã¹ã¯ããååšã§ããŸããã |
æºåãã§ã㊠| ã¿ã¹ã¯ãã¿ã€ã ã¹ã©ã€ã¹ã䜿ãæããããããèªäœã§YieldïŒïŒé¢æ°ãåŒã³åºããšãã¿ã¹ã¯ã¯ãã®ç¶æ
ã«å
¥ããã¹ã±ãžã¥ãŒã©ãåã³èšå®ãããŸã§ãã®ç¶æ
ã®ãŸãŸã«ãªããŸãã |
ãããã¯ããã | ããžãŒç¶æ
ã®ãªãœãŒã¹ãèŠæ±ããå Žåãã¿ã¹ã¯ã¯ãã®ç¶æ
ã«ãªããŸãã åæããªããã£ãïŒãã¥ãŒããã¯ã¹ãŸãã¯ã»ããã©ïŒãã€ãã³ãã®æåŸ
ããã¥ãŒããã®ã¡ãã»ãŒãžã®æåŸ
ãå¯èœã§ãã ãªãœãŒã¹ãè§£æŸããããŸã§ãã¿ã¹ã¯ã¯ããã»ããµãµã€ã¯ã«ãç¡é§ã«ããããšãªãããã¯ç¶æ
ã«ãªããŸãã ããã¯ã¿ã¹ã¯ã«ãšã£ãŠéåžžã«éèŠãªç¶æ
ã§ããå®äºããã¿ã¹ã¯ã®æ°ãå°ãªãã»ã©ãæ®ãã®ããã»ããµæéã¯é·ããªãããã§ãã ãµã€ã¯ã«ã§äœãã®æåŸ
ãæŽçããã®ã§ã¯ãªããã¿ã¹ã¯ããããã¯ããŠãã¹ã±ãžã¥ãŒã©ãŒãåŒã³åºãããã¹ãã§ã¯ãªãããšãã¹ã±ãžã¥ãŒã©ãŒã«ç¥ãããããšã匷ããå§ãããŸãã
ãªãœãŒã¹ãè§£æŸããããšãç¶æ³ã«å¿ããŠãã¿ã¹ã¯ã¯ããã«å®è¡ã«é²ãããèšç»ã®æºåç¶æ
ã«ãªããŸãã åŸè
ã¯ãäžåºŠã«è€æ°ã®ã¿ã¹ã¯ãåŸ
æ©ããŠãããªãœãŒã¹ãè§£æŸãããå ŽåïŒçµå±ãå®è¡ã§ããã®ã¯1ã€ã®ã¿ïŒããŸãã¯åªå
床ã®é«ãã¿ã¹ã¯ãçŸåšå®è¡ãããŠããå Žåã§ãã |
éã¢ã¯ãã£ã | äœææããŸãã¯äœæ¥ã®çµäºæã«ã¿ã¹ã¯ãé²ãç¶æ
ã ã€ãŸããã¿ã¹ã¯ãã¹ã±ãžã¥ãŒã©ã«ãŸã æ¥ç¶ãããŠããªãå ŽåããŸãã¯éã«ãã¹ã±ãžã¥ãŒã©ãããã§ã«åæãããŠããå Žåã§ãã ã¿ã¹ã¯ãšã¯é¢ä¿ã®ãªãè£å©ç¶æ
ã |
ã¿ã¹ã¯ã®åªå
床
åã¿ã¹ã¯ã«ã¯ç¬èªã®åªå
é äœããããŸãã
åªå
床ã¯ãã¿ã¹ã¯ã®äžå¯æ¬ ã§éåžžã«éèŠãªããããã£ã§ãã äžè¬ã«ãæ°å€ã«åªå
é äœãä»ããããšãã§ããŸãã ãããã第äžã«ãæ±çšãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã§åªå
é äœãä»ããã®ãäžè¬çã§ãïŒããã§ã¯çã«ããªã£ãŠããŸãããååãšããŠã¯ããŸãããå¯èœæ§ããããŸãïŒã第äºã«ããªããžã§ã¯ãæåã®ã¢ãããŒãã¯é¡ååãšå¯æ¥ã«é¢é£ããŠããŸãã ããã€ãã®æœè±¡çãªæ°åã¯ç°¡åã«æ··åãããå¯èœæ§ããããååãä»ãããšãã«ç¹å®ã®ã¿ã€ãã®ãåªå
床ãã«é¢é£ä»ããããšãã§ããŸãã
ãããã£ãŠãäŒçµ±ãå®ãããã«ããããŠå³å¯ãªã¿ã€ãã³ã°ã確å®ã«ããããã«ãMAX MAX RTOSã§ã¯æ¬¡ã®ã¿ã¹ã¯ã®åªå
é äœãåºå¥ãããŸãã
enum Priority { PriorityIdle,
ã¿ã¹ã¯åãæ¿ãæé
æ±çšãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã«ã€ããŠèª¬æããå Žåããã®ã»ã¯ã·ã§ã³ã¯éåžžãµã€ãºãéåžžã«å€§ãããã¡ã«ããºã ã¯ããŒãžã§ã³ããšã«å€ãããããèè
ã¯ã¡ã«ããºã ã«ã€ããŠç°¡åã«èª¬æãããšä»ãå ããŠããŸãã ããã¯ãæ±çšãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ããã¹ãŠã®ããã»ã¹ã®ãã¹ãŠã®ã¹ã¬ããã®åäœãä¿èšŒããããšãããšããäºå®ã«ãããã®ã§ãã ãªã¢ã«ã¿ã€ã OSã®å Žåããã¹ãŠãã·ã³ãã«ã§ãã ã¿ã¹ã¯ã¯ã©ãŠã³ãããã³ã¢ã«ãŽãªãºã ã䜿çšããŠåãæ¿ããããŸããå³ãå³ã«ç€ºããŸãã 3.ãã®ã¢ã«ãŽãªãºã ã®æ¬è³ªã¯ããªã¹ãã®ã¿ã¹ã¯ãé çªã«å®è¡ãããæåŸã«éãããšãOSããªã¹ãã®å
é ã«åãæ¿ããããšã§ãã ãªã¹ãå
ã§ãå®è¡ããã¿ã¹ã¯ãéžæãããšããªã¹ãã®æ¬¡ã®ã¿ã¹ã¯ãååŸãããŸãã æºåå®äºç¶æ
ã®å Žåãå®è¡ãããŸãã ãããã¯ãããå Žå-次ã®ã¿ã¹ã¯ã«é²ã¿ãŸãã
å³ 3.ã©ãŠã³ãããã³ã¢ã«ãŽãªãºã ã䜿çšããã¿ã¹ã¯ã®åãæ¿ãæãåªå
床ã®é«ãã¿ã¹ã¯ãå®è¡ãããããšã«æ³šæããŠãã ãããã€ãŸããå®éã®ã·ã¹ãã ã§ã¯è€æ°ã®ãªã¹ããååšããå¯èœæ§ããããŸãã ããšãã°ãPriorityNormalåªå
床ãæã€ã¿ã¹ã¯ã®ãªã¹ããšãPriorityHighåªå
床ãæã€ãªã¹ãã ããã«ããã¹ãŠã®ã¿ã¹ã¯ãåŸ
æ©ç¶æ
ã«ãªãå Žåãã¹ã±ãžã¥ãŒã©ã¯åžžã«åªå
床ã®é«ããªã¹ãã®ã¿ã¹ã¯ã®ã¿ãå®è¡ããŸãã
å³ 4.ã¿ã¹ã¯1ã6ïŒåªå
床ãé«ãïŒã®å®è¡ãšã¿ã¹ã¯7ã12ã®å®å
šãªããŠã³ã¿ã€ã ã®äŸïŒä»äºã®åªå
床ã¯äœãïŒãã ããããã¯ãäžéšã®ã¿ã¹ã¯ãç¡èŠãããããšãæå³ãããã®ã§ã¯ãããŸãããæ£ããèšèšãããããã°ã©ã ã§ã¯ãæéã¯ã©ã³ã¿ã ããã¹ãŠã®ã¿ã¹ã¯ã«è¡ããŸãã åªå
床ã®é«ãã¿ã¹ã¯ã¯ãã§ããã ãé »ç¹ã«ãããã¯ç¶æ
ã«ãªãããã«èšèšããå¿
èŠããããŸã-ãªãœãŒã¹ïŒã»ããã©ããã¥ãŒããã®ããŒã¿ãªã©ïŒãåŸ
æ©ããŸãã
å³ 5.åªå
床ã®é«ãã¿ã¹ã¯ã¯ãã¹ãŠãããã¯ããããããã¿ã¹ã¯7ã12ïŒåªå
床ãäœãïŒã®å®è¡äŸéåžžã®åªå
床ãæã€ã¿ã¹ã¯ã¯äž»åã§ãã 圌ãã¯çµ¶ããå埩çãªã¢ã¯ã·ã§ã³ãå®è¡ããŸãïŒé
ãæ©åšãç£èŠããå¶åŸ¡ã¢ã¯ã·ã§ã³ã®å
¥åãæäŸããçµæã衚瀺ããŸãã
éåžžãããäœãåªå
床ãæã€ã¿ã¹ã¯ã¯ãéåžžã®åªå
床ãæã€ã¿ã¹ã¯ã§ããããã¹ãŠãããã¯ç¶æ
ã«ãªãå¯èœæ§ãä¿èšŒãããŠããå Žåãããã°ã©ã ã«å
¥åã§ããŸãïŒã€ãŸããYield颿°ã®åçŽãªåŒã³åºãã§ã¯åœ¹ã«ç«ããªãããããªãœãŒã¹ãåŸ
ã€ãã颿°ãåŒã³åºãå¿
èŠããããŸãé
å»¶ïŒãã ããçŸåšã®åªå
é äœãæã€ãã¹ãŠã®ã¿ã¹ã¯ãã¹ãªãŒãç¶æ
ã«ãªãããã«ããŠãã ããïŒã
åªå
床ã®é«ãã¿ã¹ã¯ã®é©çšã®å
·äœäŸã以äžã«ç€ºããŸãã ãé«éãæ©åšãåŠçããããã«èšèšãããŠããŸãã ãããŸã§ã®éãããã€ãã®åºæ¬çãªã«ãŒã«ãèŠããŠããã°ååã§ãã
- æãåªå
床ã®é«ãããã¯ãããŠããªãã¿ã¹ã¯ãå®è¡ãããŸãã
- ã¿ã¹ã¯ã¯æ¬¡ã
ã«åã§éžæãããŸãïŒã©ãŠã³ãããã³ã¢ã«ãŽãªãºã ïŒã
- ããã°ã©ãã¯ãåªå
床ã®é«ãã¿ã¹ã¯ãåºæ¬çã«ããã¯ç¶æ
ã«ããããšã確èªããå¿
èŠããããŸãã ããããªããšãåªå
床ã®äœãã¿ã¹ã¯ãå®è¡ãããããšã¯ãããŸããã
çé»åæ©èœ
ãã¹ãŠã®ã¿ã¹ã¯ãããã¯ãããç¶æ
ã«ããå Žåãããã»ããµã¯äœããããå¿
èŠããããŸããããã§ãªãå Žåã¯ãã¹ãªãŒãç¶æ
ã«ããå¿
èŠããããŸãã ã·ã¹ãã ã«ã¯ç¹å¥ãªããªããã»ããµå®æ°ããããåäœã®ãããããéžæã§ããŸãã
MAKS_SLEEP_ON_IDLEãã®å®æ°ã1ã®å€ã§å®çŸ©ãããŠããå Žåãã¹ã±ãžã¥ãŒã©ãŒã¯åªå
床ã¬ãã«ã§ã¢ã¯ãã£ããªã¿ã¹ã¯ãèŠã€ããããªããããããã»ããµãŒãã¹ãªãŒãç¶æ
ã«ããæ¶è²»é»åãåæžããŸãã å²ã蟌ã¿èŠæ±ïŒã·ã¹ãã ã¿ã€ããŒãå«ãïŒãå°çãããšç®èŠããŸãã å®çŸ©å€ããŒãã®å Žåããã®ãããªå Žåãåäžã®ã¿ã¹ã¯ãå®è¡ããããªãã¬ãŒãã£ã³ã°ã·ã¹ãã èªäœã«ãã£ãŠåŒ·å¶çã«èµ·åãããå¯èœãªéãäœãåªå
床ãèšå®ãããŸãã
for(;;) { #if MAKS_DEBUG ++ IdleTaskCnt; #endif }
éåžžããã³ç¹æš©ã¿ã¹ã¯ã¢ãŒã
MAX MAX RTOSãå®è¡ã§ããçŸåšã®æ©åšã¯ãã¡ã¢ãªä»®æ³åããµããŒãããŠããŸããããä¿è·ã®äžéšã®èŠçŽ ããµããŒãããŠããŸãã ããã«ãããããã°ã©ã ã®ããã€ãã®ãšã©ãŒããã£ããã§ããŸãã ãã«ãã€ã³ã¿ãŒã«ããã¢ã¯ã»ã¹ã®è©Šè¡ãèšé²ããããã«ããã«ã¢ãã¬ã¹ã®é åã®ã¡ã¢ãªãä¿è·ããã®ãäžè¬çã§ãïŒããšãã°ãã¡ã¢ãªãããŒãžã£ãŒãã¡ã¢ãªãå²ãåœãŠãªãã£ãããã«ãã€ã³ã¿ãŒãè¿ãããã§ãã¯ããã«ããã°ã©ã ã䜿çšãéå§ãããªã©ïŒã
ããã«ãNVICããŒããŠã§ã¢ãžã®ã¢ã¯ã»ã¹ããããã¯ããããšã«ããããŠãŒã¶ãŒããã°ã©ã ãå²ã蟌ã¿åªå
床ã倿Žããã®ãé²ãããšãã§ããŸãã
éåžžãæç®ã§ã¯ãã¢ããªã±ãŒã·ã§ã³ãã¯ã©ãã·ã¥ããå Žåã«ã¡ã¢ãªä¿è·ã«ããã·ã¹ãã ãåäœããç¶ããããšãã§ãããšæžãããŠããŸãããæ©åšã®åäœããµããŒãããããšã«åæããŸããã ããã©ãããããã®ãããªé害ãä¿®æ£ããå Žåã¯ãã§ããã ãæ©ãæ©åšããªãç¶æ
ã«ç§»è¡ããåé¡ãéç¥ããå¿
èŠããããŸãã ãã¹ãŠã®å¥åº·ç¶æã®ãã³ãã¯ãæ±çšOSã«ã€ããŠã®ãã®ã§ãããšããã ãã§ãã ãœãªãã£ã¢ãé£ã³åºããŸãã-圌ãã¯é±å±±åŽåè
ãç«ã¡äžããŸãããã倧ããªéãã¯ãããŸããã æ©åšã®å Žåãã·ã¹ãã ã¯1ã€ã®ã¢ããªã±ãŒã·ã§ã³ãå®è¡ããŸãã å¥ã®å®è¡ã¯äžå¯èœã§ãã ãããŠããµãã·ã¹ãã ã®ããããã®æ
éã¯ãã·ã¹ãã ã®æ©æ¢°çãŸãã¯é»æ°çéšåããã©ãã©ã«ãªããšããäºå®ã«ã€ãªããå¯èœæ§ããããŸãã ãã®ãããã§ããã ãæ©ããã¹ãŠãå®å
šãªç¶æ
ã«ç§»è¡ããåé¡ã«ã€ããŠéçºè
ã«éç¥ããå¿
èŠããããŸãã
ããããæåãªãžã§ãŒã¯ãèšãããã«ã飲ã人ã¯å°ãªãããå¿
èŠããããšèšã人ãããã°ããã£ãšé£²ãå¿
èŠããããšèšã人ãããŸããããã¹ãŠãåæãããšããããšã§ããããªãã¯é£²ãå¿
èŠããããŸãã ãŸããããã§ã¯ãããããç®çã®ããã«ãããè¡ããïŒãã¹ãŠã®ã³ã¹ãã§çåå¯èœæ§ã確ä¿ããããå®å
šãªã·ã£ããããŠã³ãä¿èšŒããŸãïŒãã¡ã¢ãªãä¿è·ããããšã¯éåžžã«äŸ¿å©ã§ãã
ãããã£ãŠããã®ä¿è·ãæäŸããããã«ãã¢ããªã±ãŒã·ã§ã³ãéåžžã®åäœã«ããããšãã§ããŸãã åæã«ãOSã¯ç¹æš©ã¢ãŒãã§åäœããŸãã
ãã ããMAX MAX RTOSã®äžã§å®è¡ãããã¢ããªã±ãŒã·ã§ã³ã¯éåžžã«åçŽã§ãããããç¹æš©ã¢ãŒãã§å®è¡ããããšãã§ããŸãã ãã®å Žåãã¢ããªã±ãŒã·ã§ã³ããã°ã©ãã¯ã·ã¹ãã ãšåãããã«äœ¿çšã§ããŸãããæ©åšã¯äžæ£ãªã¢ã¯ã·ã§ã³ã远跡ããŸããã
ãŸããã¿ã¹ã¯è¿œå 颿°Task :: AddïŒïŒã®åŒæ°ã§ãããæå®ããããšã«ãããç¹æš©ã¢ã¯ã»ã¹ã§åã
ã®ã¿ã¹ã¯ãå®è¡ã§ããŸãã ããã«ãæ¡ä»¶ä»ãã³ã³ãã€ã«ãªãã·ã§ã³MAKS_PROFILING_ENABLEDã1ã«èšå®ãããšããã¹ãŠã®ã¿ã¹ã¯ãç¹æš©ã¢ãŒãã§åäœããŸãã
次ã®èšäºã§ã¯ãMaxã§å®è¡ãããæãåçŽãªããã°ã©ã ã®æ§é ã玹ä»ããŸãã