ã
ç®æ¬¡
çµã¿èŸŒã¿ã·ã¹ãã ã«ããããªã¢ã«ã¿ã€ã OSãšLinux
çµã¿èŸŒã¿ã·ã¹ãã ã®æ§æãèããŠããäžã§ãã©ã®OSãæ¡çšãããã¯ãéçºåææ®µéã«ãããŠãšãŠãéèŠã§ãã
ç¹ã«ãæéçãªå¶çŽãäžå¿ã«èããã®ãã䜿çšããããã«ãŠã§ã¢ãªã©ã®ãœãããŠã§ã¢ãäžå¿ã«èãããã§ã倧ããç°ãªããŸããäžè¬çã«ã¯ãæéçå¶çŽãããã·ã¹ãã ã®å Žåã¯ãªã¢ã«ã¿ã€ã OSãåããŠãããšèšãããŠããŸããäžæ¹ããããã¯ãŒã¯ããã¡ã€ã«ã·ã¹ãã ãé«åºŠãªã°ã©ãã£ã«ã«è¡šç€ºãå¿ èŠãªå Žåã¯LinuxãåããŠãããšèšãããŠããŸãããã¡ãããèŠä»¶ã«ãã£ãŠã©ããŸã§åŠ¥åã§ãããã¯ãã³ã¹ããéçºæéãªã©ãäžæŠã«æ±ºããããªãèŠå ããããããããæ£è§£ããããŸããã
ãã ãæåç¡åã®ãœãããŠã§ã¢ã®çµã¿åãããèãããšãå¿ ãããäžèšã®æ§æããšããšã¯éããŸããããæ··åšããããšãå¢ããŠããŠããŸãããªã¢ã«ã¿ã€ã OSã®å ŽåãCPUãCPUåšãã®æ§èœåäžã«ãããã¯ã³ãããã§ã§ããããšãã ãã¶å¢ããŠããŸãããLinuxã®å Žåãåœç¶å€§ããªã¡ã¢ãªãã¹ãã¬ãŒãžã«çžåœããèšæ¶è£ 眮ïŒãã©ãã·ã¥ROMãeMMCãªã©ïŒãå¿ èŠã§ãããä»åŸã®æ¡åŒµãå ±éãã©ãããã©ãŒã ãšããèãæ¹ãæ®åããŠããã®ã§ãã³ã¹ãã¡ãªããã®äº«åãã
ããã«ãåºæ¿ã®ãµã€ãºãªã©ãéžæè¢ã«å ¥ããŸããããã®ãããã¯è£œåã®åœ¢ç¶ã»ãã¶ã€ã³ã»ä»æ§ã«ãã倧ããç°ãªããšèšããã§ãããã
ãªã¢ã«ã¿ã€ã OSãšLinuxãéžæããäžã§ã®æé
é«ç²ŸåºŠãªèšæž¬ãããªãããã°ã©ãæç»ãè¡ã
ããŠãããããã¯ãäžèšã®æ¡ä»¶ã§çµã¿èŸŒã¿ã·ã¹ãã ã®æ§æãèããŠããå Žåããªã¢ã«ã¿ã€ã OSãLinuxããæ±ºããç°¡åãªæéãèããŠã¿ãããšæããŸãã
â åŠçé床
èšæž¬ã¯ã1ms以å ã«10000ãµã³ãã«ããŒã¿ãåãå¿ èŠãããã
â¡ããã€ã¹ãã©ã€ã
èšæž¬ããããŒã¿ã¯ã100ãµã³ãã«ã®ããŒã¿ãå¹³ååããŠãã¹ãã¬ãŒãžã«ä¿åããã
â¢åŠçé床
ã¹ãã¬ãŒãžã«ä¿åãããããŒã¿ããã°ã©ã衚瀺ãè¡ãã
ãããã£ãå Žåãé«éãªãã€ã³ã³ã䜿ã£ãæ¹ãããããããªãããšããªããšãªãæãã®ã§ã¯ãªãã§ããããïŒããæãããã®ã¯ããããæé以å ã®åŠçããæèšãããŠããããã ãšæããŸããããããªã¢ã«ã¿ã€ã OSã§å®è£ ããŠããå Žåã®èãæ¹ãšãLinuxãªã©ã®ã·ã¹ãã ã§å®è£ ããŠããå Žåã®èãæ¹ããããããã®æéããšã«èŠãŠãããŸãããã
â åŠçé床
ãŸããã®æ¡ä»¶ã«èŠåã£ãåŠçãè¡ãã«ã¯ã1ãµã³ãã«ããŒã¿ãããã100nså¿ èŠã§ãããšèšãããšãåãããšæããŸããã€ãŸãã1ã€ã®ããã°ã©ã å®è¡ãµã€ã¯ã«ãã100ns以äžããã£ãŠããŸãã·ã¹ãã ã§ã¯ãããã«ç ŽããããŠããŸããšèšãããšãåãããŸããã¡ãªã¿ã«ã100nsã¯ã10MHzã§åäœããããšãæäœéã®æ¡ä»¶ã«ãªããŸãããã®ãããã ãšããŸã ãã€ã³ã³ã§ãååã§ããCortex-M0ã§ã¯40MHzè¿èŸºã§åäœãããã®ãå€ãã®ã§ã1ã¯ããã¯åœãã25nsã«ãªãã®ã§ããã®ãããã§ããªããšãåããããšããã§ããã
ãã ããããLinuxã®ã·ã¹ãã ã§åãããšãªããšã40MHzã§Linuxãåããã®ã¯ã»ã»ã»çŸå®çã§ã¯ãããŸãããå°ãªããšãæ°100MHzã®åäœç°å¢ãå¿ èŠã§ãæäœã§ãCPU400MHz以äžã®ã·ã¹ãã ã«ããªããšLinuxãåããããšãé£ããããšã¯ãæ³åã§ãããã§ããMMUãæèŒããªãã¿ã€ãã®Linuxã§ããã°ãã£ãšé ãã¯ããã¯ã§ãäœãšãåããããããŸãããã»ã»ã»ããŸãçŸå®çã§ã¯ãªãã§ãããã
ãããŸã§ãæäœæ¡ä»¶ã§ã®èŠç©ãããªã®ã§ãå®éã«ã¯ä»ã«éãªãæ¡ä»¶ãªã©ããããããã ïŒãšããæå®ã¯ã§ããŸãããããããŠæç€ºãããšãäžèšã®ããã«ãªããããããŸããã
- ããŒã¿ãµã³ããªã³ã°ããŠèšç®ãããªããCortex-M3/4ã§40MHz以äžã§åäœãããã®ïŒãã£ã±ãããããã§ããïŒã
- Linuxåæã ãšãCortex-Aç³»400MHz以äžãåæã
- ãã¥ã¢ã«ã³ã¢ããããã³ã¢ã§äœ¿ãã®ãããã
ãè£è¶³ãããããéžæè¢ããããããªããæ¬¡ã®éžæåºæºã¯ãçé»åããããªãã§ã©ã«ã®æ°ã§ãããšèšãããšã¯èšããŸã§ããããŸããããïŒäžæã«éžãã§ãããŸãããã
â¡ããã€ã¹ãã©ã€ã
次ã«çç®ãã¹ãã¯ãããã€ã¹ãã©ã€ãã§ãããæè¿ã§ã¯ãArmãã€ã³ã³ç³»ãäžå¿ã«CMSISã®ãã©ã€ããã»ãŒæšæºã§çšæãããŠããŸããããªãã§ã©ã«ã®ãã©ã€ããéèŠã§ãããšèšãããšã¯ãã©ã®ããã€ã¹ãã³ããŒãããããã£ãŠããŸããããšãŠã䟿å©ã«ãªã£ããšæããŸããæã¯ãèªåã§äœã£ããããŠããŸããããä»ã¯ããŸãäœã£ãŠããªãã§ããã
ããŠããªãããã€ã¹ãã©ã€ããéèŠãªã®ãïŒãšããããšãããããèªãå¿ èŠã¯ãããŸããããSoCã«æèŒãããŠããDMAãããŸã掻çšããããšãäžã€ã®ã·ã¹ãã æ§èœåäžã«ã€ãªããããã ãšæã£ãŠããŸããDMAãæŽ»çšã§ããã°ãCPUã®è² è·ã忣ããªãããé«ãããã©ãŒãã³ã¹ãçºæ®ããããšãã§ããã®ã§ããããã»ã©ã®1ãµã³ãã«100nsã®æéã§ããŒã¿åŠçãè¡ãå Žåã§ããDMAãæå®ããã¡ã¢ãªã«ãµã³ãã«ããããŒã¿ã転éããŠãããã°ãCPUã®ã¯ããã¯ã¯ãã£ãšé ããŠãéã«åããŸãã
ãããLinuxã®ãã©ã€ãããªãã£ãããããã€ã¹ãã³ããŒãããçšæããŠãããã©ããã§å€ãã£ãŠããŸããããè¿å¹Žã¯ãã©ã€ããçšæããŠããªãããšã¯å°ãªãã§ããããã¹ãŠã®ã·ã¹ãã ã«å¯Ÿå¿ã§ãããã©ããã¯å¥ã®è©±ã§ããç¹ã«ã¡ã¢ãªãããã¯ãããŒãæ§æã«ãã£ãŠå€ãã£ãŠããããšãèããããŸããDMAã䜿ãããªãããã§ãããã®ãããã¯çè§£ããŠããå¿ èŠããããã¬ã¢ã±ãŒã¹ãããããŸããããããã€ã¹ãã©ã€ãã«æãå ããªããã°ãããªãç¶æ³ã«ãªãããšãããåŸãŸãã
ãŸããã»ãšãã©ã®ããªãã§ã©ã«ã¯ãDMAã«å¯Ÿå¿ããŠããããšãã»ãšãã©ãªã®ã§ãäœãããå¿ èŠã¯ããŸããªãã®ãããããŸããããå®å šã«å®è£ ã§ããŠãããã©ããã¯å¥ã®è©±ã§ããå²ã蟌ã¿ã®ã¿ã€ãã³ã°ãšãªãFIFOã®å¶åŸ¡ããã¢ããªã±ãŒã·ã§ã³ã§æå®ãããããã¯ããªã®ã§ããã©ã€ããããã°äœã§ãOKãšããã»ã©ç°¡åã§ã¯ãããŸãããã§ãã1ããäœãããã¯ããã£ãšæ¥œãªã¯ãã§ããAPIããã åŒã³åºãã ãã§ã¯ãªãããã®ãœãŒã¹ã³ãŒããçèªããäžã§ãæäŸããããã©ã€ãã䜿ãããã«ããŸãããã
ãªã¢ã«ã¿ã€ã OSã§å®è£ ããå Žåããªã¢ã«ã¿ã€ã OSåŽã§ãã©ã€ããçšæããŠããããšããããŸãããç¹æ®ãªããªãã§ã©ã«ã»ã©ãã©ã€ãããªãã®ãçŸç¶ã§ãããªã¢ã«ã¿ã€ã OSã¯ã«ãŒãã«ãåäœããããã®æäœéã®ãã©ã€ãã¯çšæããŠããŸããããã以å€ã¯ãŠãŒã¶å®è£ ãšãªã£ãŠããŸããèªç±ã«çµãã代ããã«ããã®åŽåãå¿ èŠã«ãªã£ãŠããããã§ãããããããšãããã€ã¹ãã³ããŒãçšæãããã©ã€ãã䜿ãããšã«ãªããŸããããªã¢ã«ã¿ã€ã OSãšã®é£æºã¯èæ ®ãããŠããªãã®ã§ãæãå ããªããå®è£ ããããšã«ãªããšèããŠãããæ¹ãããã§ãããã
ããã€ã¹ãã©ã€ãã¯ããªãã§ã©ã«ã«ãã£ãŠããã£ã©ã¯ã¿ãŒåããã€ã¹ã§ãã£ããããããã¯åããã€ã¹ã ã£ããããŸãã®ã§ãèªåã®ã·ã¹ãã ã«åããã©ããããœãŒã¹ã³ãŒããèªã¿èŸŒãæéãèšèšæã«ã¯èæ ®ããŠãããšããã§ããã
â¢æç»åŠç
æç»åŠçã ã£ããLinuxãéžæããæ¹ããæ¥œã ãããªïŒãšèª°ããæãããšã§ããããQtãäœ¿ãæ¹æ³ããWebç³»ã®ãªãœãŒã¹ïŒHTMLãšCSSãJavaScriptïŒãªã©ãäœ¿ãæ¹æ³ãããããã§ããããã¡ãããå°çšã®GUIããŒã«ãããã«ãŠã§ã¢ãäžã®äžã«ã¯ååšããŸããç°¡åãªè¡šç€ºã ããªããããã«ãŠã§ã¢ã䜿ããªãæ¹æ³ããããããããšæããŸãã
äžå£ã«æç»ãšèšã£ãŠãããããããªåãå£ããããŸãããäžçªéèŠã§æç»ã«å¿ èŠãªãªãœãŒã¹ã¯ãã¡ã¢ãªã§ãããã©ãã·ã¥ROMã®ã¡ã¢ãªã§ã¯ãããŸãããã¯ãŒãã³ã°ãšãªã¢ã§äœ¿çšããSRAMãDRAMïŒDDRïŒã§ãã衚瀺ã¯èŠãç®ã倧äºãªã®ã§ãããã«æ©ãæç»ãããïŒãéèŠã«ãªã£ãŠããŸãããåå䟡å€ãé«ããããšã«ç¹ãããŸãããã®ãããéåžžã¯è¡šç€ºããç»é¢ãµã€ãºãšã»ãŒåãèŠé ã®ã¡ã¢ãªãæäœã§ã2ã€æã¡åããããªã©ã®æ¹æ³ã§ãé«éãªæç»ãå®çŸãããããšã«ãªããŸãããã®å Žåããããªãã«ã¡ã¢ãªãå¿ èŠã§ãã
äŸãã°ãã¢ãã¯ãVGA衚瀺ã®å Žåã640×480ã®ãµã€ãºãªã®ã§640×480÷8=38.4Kãšèšç®ã§ããŸããã¢ãã¯ãã§ã38.4KBytesãïŒã€åå¿ èŠã§ããR,G,Bã®ã«ã©ãŒè¡šç€ºã®å Žåã8ãããïŒ256é調ïŒãšããŠã640x480x3=460.8Kãšãªãã460.8KBytesã«ãªããŸããç»é¢ãããã¡ã ãã§ãã1MBytesã«ãªãããã§ããæè¿ã§ã¯ã倧容éSRAMãæèŒãããã€ã³ã³ãå¢ããŠããŸããããããã»ããµãšå€éšSPIãã©ãã·ã¥ãšDDRã®BOMäŸ¡æ Œãšã倧容éSRAMæèŒã¯ã³ããããã€ã³ã³ãšæ¯ã¹ããšã倧ããªå·®ã¯ãªããªãã€ã€ããããã§ãã
ããŒããŠã§ã¢çãªå·®ããªããªã£ãŠãããšããã°ãCortex-AæèŒã®SoCãéžæè¢ãšããŠåªäœã§ããã¡ã¢ãªããDDRãªã©é«éãªã¡ã¢ãªã䜿ãããšããã£ãšå€§ããªç»è§ã®è¡šç€ºãå¯èœã§ãïŒåèïŒç»è§å¥ã¡ã¢ãªãµã€ãºäžèЧïŒã
QVGA | 320x240x3(RGB)=230.4KBytes |
---|---|
VGA | 640x480x3(RGB)=460.8KBytes |
XGA | 1024x768x3(RGB)=2.36MBytes |
WXGA | 1280x768x3(RGB)=2.95MBytes |
1280x800x3(RGB)=3.07MBytes | |
1366x768x3(RGB)=3.15MBytes | |
FullHD | 1920x1080x3(RGB)=6.22MBytes |
4K | 3840x2160x3(RGB)=24.88MBytes |
ããããŠã¿ããšã衚瀺ããã«ãããªãã®ã¡ã¢ãªãå¿ èŠã«ãªãããšãåãããŸãããã·ã¹ãã äžã§ã¯ãããã¬ãŒã ãããã¡ããšããæ±ãã§ãããã®ãªãœãŒã¹ã確ä¿ãããŠããã®ã§ã¯ãªãããšæããŸãã
ããŠãCortex-Aç³»ãéžæãããšããªã¢ã«ã¿ã€ã OSã®ããªãšãŒã·ã§ã³ãäžæ°ã«å°ãªããªãã®ãé£ç¹ã§ãããã¡ããã察å¿ããŠãããœãªã¥ãŒã·ã§ã³ã¯ããã€ããããŸãããæåç³»ãå€ããå ããŠããŸããCortex-Aãç¡åã®ãªã¢ã«ã¿ã€ã OSã§äœ¿ããäŸã¯ãäžéšã®TRONç³»ã«ãŒãã«ã«çµãããŠãããšèããŠãããšæããŸãã
ãã€ã³ã³ãªã©ã®Cortex-Mç³»ãéžæãããšããªã¢ã«ã¿ã€ã OSã¯éžæè¢ãšããŠããããŸãããæç»åŠçããã³ã©ã€ãã©ãªãäžååã§ããããšãæžå¿µãããŸãããã€ã³ã³ã«ãã£ãŠã¯ãæç»ãšã³ãžã³ãæèŒããŠãããã®ããããŸãããã 衚瀺ããã ãã§ããã°ãLCDããã«ã®ã³ã³ãããŒã©ã«ããŒã¿ãæãç¶ããã°è¡šç€ºã¯ããŠãããã®ã§ãäžã®è¡šã§ç€ºãããããªã¡ã¢ãªã¯ãªããŠã衚瀺ã¯ã§ããŸããããããæ»ãããªè¡šç€ºãé«éãªæç»ãè¡ãã«ã¯ã衚瀺ãµã€ãºãšåãã¡ã¢ãªãµã€ãºã䜿çšããDMAã§ããŒã¿ãéãç¶ããåŠçãè¡ãã®ãéèŠãªã®ã§ããããããã€ã¹ãã©ã€ãã®æ§èœã«ãã£ãŠå€ãã£ãŠããŸããæè¿ã§ã¯ãLCDã³ã³ãããŒã©å èµã¿ã€ãã®ãã€ã³ã³ãå¢ããŠããŸãã®ã§ãæç»åŠçãç¹ãç·ãªã©ã®ç°¡åãªã©ã€ãã©ãªã§ããã°ãããã»ã©å®è£ ã¯é£ããã¯ãªããšæããŸãã
ã¡ãã£ãšããŒãããã®è©±ã«ãªããããã®ã§ãœããããã®è©±ããããšãã°ã©ã衚瀺ããå Žåã¯åãããªã軞ãæç»ããŠã衚瀺ãã¹ãããŒã¿ãäžå®ééã§æŽæ°ããããšãéèŠã§ãããã®ééã现ããã»ã©æ»ããã®æç»ãå®çŸã§ãããã§ãããããã€ããŠããŸããšãã£ãããªè¡šç€ºã«ãªã£ãŠããŸããŸãããã®ãã©ã³ã¹ãéåžžã«é£ãããšããã ãšæããŸãããå šäœãåæç»ããããã¯ãè² æ ã¯ãã£ãšæžãããã§ãã
æç»ãã¹ãé åãæå®ããŠããã®éšåã®æŽæ°ããŒã¿ã宿çã«æžãæããŠããããšã§ãã°ã©ã衚瀺ã®å®è£ ãã§ããããã«ãªããŸããæŽæ°ãã¹ãã¡ã¢ãªé åãçµããæç»ãã¹ãããŒã¿ãæžãæãããšããã®ããäžè¬çãªææ³ã§ããã°ã©ã衚瀺ããå Žåã¯ã衚瀺é åå ã§ããããããäœçœ®ã座æšãçééã§åãããããç·ãã€ãªãã§ããããšã«ãªããŸããã¬ã€ã€æ©èœããããšããã®ãããã®æç»ãèšèšããããã§ããã
çµå±ãªã¢ã«ã¿ã€ã OSãšLinuxã®ã©ã¡ããéžæãããè¯ãã®ãïŒ
é·ã ãšæžããŠããŸããããããã©ã¡ããéžãã§ãããããããªããªããŸããïŒç¬ïŒãAPSçã«ç°¡æœã«ãŸãšãããšããããªæéã§ã©ãã§ããããïŒ
âãã€ã³ã³ã§ãªã¢ã«ã¿ã€ã OSã䜿ãå Žåã¯ãã¯ããã¯ãéããå€éšå€ä»ãã¡ã¢ãªãå¢ããã
âããã»ããµã§Linuxã䜿ãå Žåã¯ããªã¢ã«ã¿ã€ã åŠçã§å¿
èŠãšãªãéšåããã©ã€ãã®DMAãšé£æºãããããšãå¯èœãã©ããïŒ
âããã€ã¹ããœããã®ç¿åŸãŸã§ã®æéãšè²»çšã®ã³ã¹ãã«èŠåããïŒ
ãããªæçš¿ããããã§ããã
ãã£ãšèŠã RTOSç·š
Toppers/ASP3ã®äœ¿ãæ¹
SOLID-OSã«ããå²ã蟌ã¿ã¯ãToppers/ASP3ãããŒã¹ã«ãªã£ãŠãããã«ãŒãã«ã®ç®¡çäžã§å²ã蟌ã¿ã®åŠçãè¡ããŸãã®ã§ããå²ã蟌ã¿ãµãŒãã¹ã«ãŒãã³ïŒISRïŒããŸãã¯ã管çå å²ã蟌ã¿ããšåŒãã ãããŸãããã以å€ã®ãã®ã¯ããå²ã蟌ã¿ãã³ãã©ããããã¯ãã«ãŒãã«ç®¡çå€å²ã蟌ã¿ããšåŒã³ãŸãã
çµã¿èŸŒã¿ãœãããŠã§ã¢éçºã«RTOSãæ¡çšããå Žåã®ã4ã€ã®å¿åŸã
ãªã¢ã«ã¿ã€ã OSã䜿ã£ãçµã¿èŸŒã¿ãœãããŠã§ã¢éçºãè¡ãéãèŠããŠãããã»ããããã4ã€ã®å¿åŸãã玹ä»ããŸãããã
å²ã蟌ã¿
å²ã蟌ã¿ã¯ãã¿ã¹ã¯ãšã¯ç¬ç«ããŠå®è¡ãããåŠçã§ããããã§ãT-Kernelã«ãããå²ã蟌ã¿ã®å©ç𿹿³ã«å ããŠãå®è¡æã®ã³ã³ããã¹ãã®éãããçããåäœã®éããå²ã蟌ã¿ãã³ãã©ã®äœææ¹æ³ãåäœã®è©³çްã説æããŸãã