1.ã¯ããã«
移æ€ãè¡ãããšã«ãã人ã®ããã«ãMicrosoftã¯ç¹å¥ãªããŒã«ãæäŸããŠããŸãïŒ .Net Micro Framework Porting Kit ã ããã¯ãCLRãã³ã³ãã€ã«ã§ãããœãŒã¹ã³ãŒããšæ§æãã¡ã€ã«ã®ã³ã¬ã¯ã·ã§ã³ã§ãã ãã«ãã·ã¹ãã ã¯MSBuildã«åºã¥ããŠããŸãã çŸåšãã³ã³ãã€ã«ã¯ã³ãã³ãã©ã€ã³ããã®ã¿éå§ãããŸãã ã°ã©ãã£ã«ã«ããŒã«ã¯ã»ãšãã©æäŸãããŠããŸããã å¯äžã®äŸå€ã¯ãSolutionWizardãŠãŒãã£ãªãã£ã§ãããã®ãŠãŒãã£ãªãã£ã䜿çšãããšãããŒããããžã§ã¯ããæ§æã§ããŸãã éçºç°å¢ã®ãµããŒãããããŸããã 倧ãŸãã«èšããšãããŒãã¯ã»ãšãã©ããŒãããã¯ã«æžãããŠããŸãã ããããè¿ãå°æ¥ãç¶æ³ã¯è¯ããªãã¯ãã§ãã
2. .NET Micro Frameworkã¢ãŒããã¯ãã£
移æ€ã«ã€ããŠè©±ãåã«ã.Net Micro Frameworkãå éšã§ã©ã®ããã«æ©èœããããç解ããããšãéåžžã«éèŠã§ãã ååã®èšäºã§ã .Net Micro Frameworkã®ã¢ãŒããã¯ãã£ã«ã€ããŠç°¡åã«èª¬æããåŸããããããã«è©³ããæ€èšããŸãã .Net Micro Framework Porting Kitã®ããã¥ã¡ã³ãã«ã¯æ¬¡ã®å³ããããŸãã
ããã¯4å±€ã®.Net Micro Frameworkã¢ãŒããã¯ãã£ã§ãã åãããã¥ã¡ã³ãã«ã¯ïŒç§ã®ç¡æ翻蚳ã§ã¯ïŒæ¬¡ã®ããã«æžãããŠããŸãïŒ
ããŒããŠã§ã¢å±€
ãã®å±€ã«ã¯ãããŒããŠã§ã¢ãã©ãããã©ãŒã ãæ§æãããã€ã¯ãããã»ããµãšãã®ä»ã®ã³ã³ããŒãã³ããå«ãŸããŠããŸãã çŸåšã.NET Micro Frameworkã¯ãARM7ãARM9ãCortexãXScaleãARCãADI Blackfinãªã©ã®ã¢ãŒããã¯ãã£ã®ããã»ããµã§å®è¡ã§ããŸãã
ããã«ããªãã¬ãŒãã£ã³ã°ã·ã¹ãã äžã§.Net Micro Frameworkãå®è¡ããããšãã§ããŸãã ãã¡ããããã®å Žåããéãã¯ã©ãã«ãæ¶ããŸããã ããŒããŠã§ã¢ãšã®å¯Ÿè©±ã¯ããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã®APIãä»ããŠè¡ãããŸãã ããã¯ã .NET Micro Framework Platform SDKã«å«ãŸããŠãããšãã¥ã¬ãŒã¿ãŒã®åäœæ¹æ³ã§ãã Windowsçšã®.NET Micro FrameworkããŒãã«ãããŸããã
ã©ã³ã¿ã€ã ã³ã³ããŒãã³ãããŒã¹
ãã®å±€ã¯3ã€ã®ã³ã³ããŒãã³ãã§æ§æãããŸãã
â¢.NET Micro Frameworkå ±éèšèªã©ã³ã¿ã€ã ïŒCLRïŒã
â¢ããŒããŠã§ã¢ã¢ãã¹ãã©ã¯ã·ã§ã³ã¬ã€ã€ãŒïŒHALïŒã
â¢ãã©ãããã©ãŒã æœè±¡åã¬ã€ã€ãŒïŒPALïŒã
CLR
.NET Micro Framework CLRïŒTinyCLRïŒã©ã³ã¿ã€ã ã¯ã.NET Framework CLRã®ãµãã»ããã§ãã TinyCLRã¯ãå°åã®çµã¿èŸŒã¿ããã€ã¹ã§äœ¿çšããããã«ç¹å¥ã«åèšèšãããŠãããšããç¹ã§ãã倧åãCLRãšã¯ç°ãªããŸãã
.Net Micro Framework Porting Kitã«ã¯TinyCLRãœãŒã¹ã³ãŒããä»å±ããŠããŸãã ãããã®ã³ãŒãã¯ããŒããŠã§ã¢ã«äŸåããªãã©ã€ãã©ãªã§ãããã¢ãŒããã¯ãã£ããšã«ç°ãªãã³ã³ãã€ã©ã§ã³ã³ãã€ã«ã§ããŸãã
HALããã³PAL
TinyCLRã¯ãHALããã³PALãä»ããŠåºç€ãšãªãããŒããŠã§ã¢ãšéä¿¡ããŸãã HALãšPALã®äž¡æ¹ã¯ãTinyCLRããåŒã³åºãããäžé£ã®é¢æ°ã§æ§æãããŠããŸãã ãããã®é¢æ°ã¯C ++ã§èšè¿°ãããŠããŸãã HALã®æ©èœãããŒããŠã§ã¢ãšéåžžã«å¯æ¥ã«é¢é£ããŠããããšã¯æããã§ãã ããã©ããããPALã«å«ãŸããæ©èœã¯ãããŒããŠã§ã¢ã®å®è£ ã«äŸåããªãããã«èšèšãããŠããŸãã
å€ãã®HALããã³PALé¢æ°ã¯ãã¢ã圢æããŸãã ãããã¯ãç¹å®ã®ã¿ã¹ã¯ãå®è¡ããããã«äžç·ã«äœ¿çšãããŸãã TinyCLRã¯PALé¢æ°ãåŒã³åºããPALé¢æ°ã¯HALé¢æ°ã䜿çšããŠããŒããŠã§ã¢ã«ã¢ã¯ã»ã¹ããŸãã
ããã«ãããããããŒãã¹ãã©ããã³ãŒããHALã«å«ãŸããŠããŸãã é»æºæå ¥åŸããã®ã³ãŒãã¯ããŒããŠã§ã¢ãåæåããTinyCLRãèµ·åããŸãã
TinyCLRã¯åŒãç¶ãããŠã³ããŒããè¡ããé«ã¬ãã«ã®åæåãè¡ã£ãŠããŸãã ããŒãã¹ãã©ããã³ãŒãã¯ãHALã®é¢æ°ãšç¹å¥ãªã¢ã»ã³ãã©ãŒã®æ¿å ¥ã䜿çšããŠã¿ã¹ã¯ãå®è¡ããŸãã
ã¯ã©ã¹ã©ã€ãã©ãªå±€
.NET Micro Class Class Libraryã¯ãéçºè ãçµã¿èŸŒã¿ã¢ããªã±ãŒã·ã§ã³ãäœæãããšãã«äœ¿çšãããªããžã§ã¯ãæååã®ã³ã¬ã¯ã·ã§ã³ã§ãã ããã«ã¯ããµãŒãããŒãã£ã®ã¿ã€ããå«ãŸããå ŽåããããŸãã ããšãã°ããããã°ããŒãã®éçºè ã¯ããããã®ããŒãã«ããåšèŸºæ©åšãæäœããããã®ã¯ã©ã¹ãè¿œå ããŸãã
ã¢ããªã±ãŒã·ã§ã³å±€
ãã®ã¬ãã«ã«ã¯ãããã€ã¹çšã«äœæããã¢ããªã±ãŒã·ã§ã³ãå«ãŸããŸãã ãããŸã§ããã®ãããªã¢ããªã±ãŒã·ã§ã³ã®å¯äžã®éçºèšèªã¯CïŒã§ãã
ãããã£ãŠã移æ€ã®äž»ãªã¿ã¹ã¯ã¯ãHALã¬ãã«ã®æ©èœãšæ§æãèšè¿°ããããšã§ãã 次ã«ããããã©ã®ããã«è¡ãããããèŠãŠã¿ãŸãããã
3. .NET Micro FrameworkããŒãã£ã³ã°ãããã®ãœãªã¥ãŒã·ã§ã³
.Net Micro Framework Porting Kitå ã®åããŒãã¯ããœãªã¥ãŒã·ã§ã³ãè¡šããŸãã ãœãªã¥ãŒã·ã§ã³ã¯ãããã€ãã®ãããžã§ã¯ãã§æ§æãããŠããŸãã åèšã§5çš®é¡ã®ãããžã§ã¯ãããããŸãã
â¢NativeSample
â¢PortBooter
â¢TinyBooter
â¢TinyBooterDecompressor
â¢TinyCLR
NativeSampleã¯ãã·ã³ãã«ãªãHelloãWorldããããžã§ã¯ãã§ãã å®è£ ã®äž»ãªã¿ã¹ã¯ã¯ããããã°ã³ã³ãœãŒã«ã«æååãHelloãWorldãã衚瀺ããã®ã«ååãªHALé¢æ°ãäœæããããšã§ãã
PortBooter-ããŒãããŒããŒã ããã«ãããããŒãã®éçºããã³ãããã°ã®ããã»ã¹ã§TinyCLRã®æ°ããããŒãžã§ã³ããã©ãã·ã¥ã§ããŸãã ãã®ãããžã§ã¯ããå®è£ ããã«ã¯ãNativeSampleçšã«ãã§ã«èšè¿°ãããŠãããã®ã«æ°ããHALé¢æ°ãè¿œå ããå¿ èŠããããŸãã ããã¯ã以äžã®ãããžã§ã¯ãã®å®è£ ã«åãã移è¡ãããžã§ã¯ãã§ãã
TinyBooterã¯ã.NET Micro FrameworkããŒãããŒããŒã§ãã é»æºæå ¥æã«ãå¿ èŠãªãã¹ãŠã®åæåãå®è¡ããTinyCLRãèµ·åããŸãã ããã«ãæ°ããããŒãžã§ã³ã®TinyCLRããã©ãã·ã¥ã§ããŸãã ãã®ãããžã§ã¯ããå®è£ ããéçšã§ãHALã«ããã€ãã®æ°ããæ©èœãè¿œå ãããŸãã
TinyBooterDecompressorã¯ã TinyBooterã®ç©çãµã€ãºãæå°åããããã«èšèšãããç¹å¥ãªã¢ãã€ã³ã§ãã TinyBooterã¯ã¢ãŒã«ã€ãããããªã³ã«ãªã£ãŠãããšãã«TinyBooterDecompressorã䜿çšããŠå±éããã³ããŒããããŸãã
å®éã TinyCLRã¯ã©ã³ã¿ã€ã ãã®ãã®ã§ãã æ©èœããTinyCLRãååŸããããšã移æ€ã®ç®æšã§ãã ãã®ãããžã§ã¯ãã«åãçµãéçšã§ãæ®ãã®HALæ©èœãè¿œå ãããŸãã TinyCLRã«ã¯TinyBooterãå«ãŸããŠããŸãã
ãããã£ãŠããããã®ãããžã§ã¯ããé çªã«å®è£ ããããšã«ãããHALã¬ã€ã€ãŒãäœæããŸãã
4.ãœãªã¥ãŒã·ã§ã³ãŠã£ã¶ãŒããšãããžã§ã¯ãã³ã³ããŒãã³ã
æ°ãããœãªã¥ãŒã·ã§ã³ã®äœæã¯ãSolutionWizardããå§ãŸããŸãã ãã®ãŠãŒãã£ãªãã£ã䜿çšãããšããœãªã¥ãŒã·ã§ã³ãæåããäœæããæ¢åã®ïŒã¯ããŒã³ïŒã«åºã¥ããŠæ°ãããœãªã¥ãŒã·ã§ã³ãäœæããæ¢åã®ãœãªã¥ãŒã·ã§ã³ãç·šéã§ããŸãã
ãã®ããã»ã¹ã§ã¯ãSolutionWizardã䜿çšããŠããœãªã¥ãŒã·ã§ã³ã«å«ãŸããããããæ©èœãéžæã§ããŸãã æ©èœã¯ã.Net Micro Frameworkã®æ©èœããããã£ã§ãã ããšãã°ãI2CãUARTãSDãªã©ã®æ©èœããããŸã ã ãããã£ãŠã.Net Micro Frameworkã®äžéšã®æ©èœãå¿ èŠãªãå Žåã¯ããããããããžã§ã¯ãã«åçŽã«å«ããããšã¯ã§ããŸãããããã«ãããTinyCLRã®ç©çãµã€ãºãåæžãããŸãã
åæ©èœã¯ãäžé£ã®ã©ã€ãã©ãªã«ãã£ãŠå®è£ ããã ã©ã€ãã©ãªã«ããŽãªã«çµåãããŸã ã ã©ã€ãã©ãªã¯ãã¿ã¹ã¯ãå®è£ ããå¥åã®MSBuildãããžã§ã¯ãã§ãã å®éã«ã¯ããœãŒã¹ã³ãŒããã©ã€ãã©ãªã«å«ããŸãã åãã¿ã¹ã¯ã®ããŸããŸãªå®è£ ïŒããšãã°ãç°ãªãããã»ããµåãïŒãããå¯èœæ§ããããããå€ãã®LibraryããããŸãã ãã®ããããããã¯ã©ã€ãã©ãªã«ããŽãªã«çµåãããŸã ã Library Categoryã®ããã©ã«ãã®å®è£ ã¯ã¹ã¿ãLibraryã§ãã ããã¯ããã¹ãŠã®é¢æ°ãã¹ã¿ãã§ããã©ã€ãã©ãªã§ãã æ©èœãæãããéåžžã®å®è£ ã1ã€ããªãå Žåã§ãããªã³ã«ã®åäœãä¿èšŒããããã«ã®ã¿å¿ èŠã§ãã ãããã®ã³ã³ããŒãã³ãã¯ãã¹ãŠçžäºã«åç §ã§ããŸãã
ãããã£ãŠã次ã®æãåŸãããŸãã
æ©èœ -> ã©ã€ãã©ãªã«ããŽãªã®ã»ãã->åã«ããŽãªãå®è£ ããã©ã€ãã©ãªã® 1ã€ã
ãã®ãæ··ä¹±ããç解ããã®ã¯ç°¡åã§ã¯ãããŸããã å°ãªããšããªããšãããŠãããæ確ã«ããããã«ããã®åçãèŠãŠãã ããïŒ
äžèŠãããšãããã¯ããæ確ã«ãªããŸããã ãããç解ããŠã¿ãŸãããã
æ©èœ I2Cã®å®è£ ã¯æ¬¡ã®ãšããã§ãã æ©èœã¯é»è²ã ã©ã€ãã©ãªã«ããŽãªã¯ç·ã ã©ã€ãã©ãªã¯éã ã¹ã¿ãã©ã€ãã©ãªã¯é»ã§ãã ãŸãããã€ã¢ã°ã©ã ã«ã¯æ¬¡ã®ã¿ã€ãã®é¢ä¿ããããŸãã
â¢äŸå-äŸåããŸãã
â¢ã¢ãœã·ãšãŒã-ã«é¢é£ä»ããããŸãã
â¢å®çŸ-å®è£ ããŸãã
â¢ã¹ã¿ã-ã¹ã¿ãä»ãã®ã©ã€ãã©ãª ã
ãã®å³ããã Feature I2Cã3ã€ã®ã©ã€ãã©ãªã«ããŽãªI2C_CLRãI2C_PALãI2C_HALã«ãã£ãŠå®è£ ãããŠããããšãããããŸãã ãŸããå¥ã®æ©èœããŒããŠã§ã¢ã«ãäŸåããŠããŸãã åã©ã€ãã©ãªã«ããŽãªã¯ã ã©ã³ã¿ã€ã ã³ã³ããŒãã³ãã¬ã€ã€ãŒã®ã¬ãã«ã®1ã€ã«å¯Ÿå¿ããŸãã
ã«ããŽãªãŒI2C_CLRã¯ã ã©ã€ãã©ãªãŒ I2Cããã³I2C_Stubã«ãã£ãŠå®è£ ãããŸãã ã«ããŽãªãŒI2C_PALã¯ã ã©ã€ãã©ãªãŒ I2C_palããã³I2C_pal_stubsã«ãã£ãŠå®è£ ãããŸãã I2C_HALã®å®è£ ã§èŠãããæãèå³æ·±ããã®ã ããã§ã¯ã ã¹ã¿ãã©ã€ãã©ãªã«å ããŠãç°ãªãããã»ããµçšã«ããã«5ã€ã®ã©ã€ãã©ãªããããŸãã
ãããã£ãŠãåã«éžæããæ©èœã«é¢é£ä»ããããŠããåã©ã€ãã©ãªã«ããŽãªã«å¯ŸããŠãSolutionWizardã§ã¯1ã€ã®ã©ã€ãã©ãªãéžæã§ããŸãã æ¢åã®ãããããéžæããããçŸæç¹ã§äžèŠãªå Žåã¯ã¹ã¿ããéžæããããæ°ããã©ã€ãã©ãªã®ãã³ãã¬ãŒããçæã§ããŸãã
ã©ã€ãã©ãªã«ããŽãªã®æ°ã¯æ°çŸã®ãªãŒããŒã§ãããããSolutionWizardã¯ã»ãšãã©ã®éžæè¢ãåããŸãã ãã ãããã®éžæã調æŽã§ããŸãã ããã«ããœãªã¥ãŒã·ã§ã³ã«å«ãããããžã§ã¯ããéžæã§ããŸãã
SolutionWizardã®çµæã¯ãæ°ãããœãªã¥ãŒã·ã§ã³ããŸãã¯æ¢åã®ãœãªã¥ãŒã·ã§ã³ãžã®å€æŽã®ããããã§ãã
次ã«ãã³ãŒãã®äœæãšã³ã³ãã€ã«ãçŽæ¥éå§ãããŸãã
5.çµè«
.Net Micro FrameworkããŒããäœæããããã®æãäžè¬çãªæŠå¿µãšååã確èªããŸããã 次ã«ããã®èšäºã®ç¯å²å€ã®è©³çŽ°ãéå§ããŸãã ããšãã°ãMSBuildãã¡ã¢ãªå²ãåœãŠãç¹å®ã®æ©èœã®å®è£ æ©èœãªã©ã®äœ¿çšã ããã«ã€ããŠã¯ã次ã®èšäºã§ãã¹ãŠã®äººã«æžããŸãã