AVR Tiny 45/85çšã®æ°ããã³ã³ãã¯ãããŒãããŒããŒã玹ä»ããŸãã ãã®ãªãŒãããŒããŒã¯ãV-USBã©ã€ã»ã³ã¹ã®å¿ èŠã«å¿ããŠGNU GPLã®äžã§ã©ã€ã»ã³ã¹ãããŠããŸãã ãã®ãªãŒãããŒããŒã®åºç€ã¯ãEmbedded Creationsã®ATtiny85 USBããŒãããŒããŒãšãDigisparkããŒãã§äœ¿çšããããã®åå«ã®micronucleus-t85ã§ããã
äžèšãšåæ§ã«ãTinyHID Loaderã¯V-USBã©ã€ãã©ãªã«åºã¥ããŠããŸãã
äž»ãªæ©èœïŒ
- ATtiny45ããã³ATtiny85ã§åäœããŸã
- ã³ã³ãã¯ãïŒåºæ¬æ©èœãåãã2kbïŒ
- æ¡åŒµå¯èœïŒè¿œå æ©èœãããã€ããããããããå«ãããšãµã€ãºã倧ãããªããŸãïŒ
- ãã©ã€ããŒã¯å¿ èŠãããŸããïŒWindowsã®æ°ããããŒãžã§ã³ã§ã¯ç¹ã«éèŠã§ãïŒ
- AVRdudeã§ã¯åäœããã代ããã«CïŒã§ã¯ãã¹ãã©ãããã©ãŒã APIã䜿çšããŸã
- èªåèªèº«ãæŽæ°ã§ãã
ãããŠããªãAVR Tiny 85ãªã®ãïŒ
çµæžã¯ãçµæžçãªçŽ³å£«ã§ãªããã°ãªããŸããã ãŸããAVR Tiny x5ã䜿çšãããšã2åãããã«2ã€ã®æ¹æ³ã§ç¯çŽã§ããŸãã 1ã€ã¯äŸ¡æ Œã®åé¡ã§ããtinkyã¯megãããå®ãã§ãã ãããå人çã«ã¯ãTiny x5ã«ã¯PLLãžã§ãã¬ãŒã¿ãŒããããæ°Žæ¶çºæ¯åšãæŸæ£ããããšãã§ããŸãã ãã®ãããããã«2ã€ã®ã³ã³ãã³ãµãç¯çŽã§ããŸãã ããã«ãããŒãäžã®ã¹ããŒã¹ã®åé¡ããããŸãã QNFæ¬äœã§ã¯ããŽãããªã®ãµã€ãºã¯2.5 x 2.5 mmã§ãã ãŸããå ±æ¯åšã¯å¿ èŠãããŸããã åè·¯å šäœã¯ããšãã§ããªã12x5 mmã«ç°¡åã«åãŸããŸãã èŠçŽãããšãAVR Tiny 85ã®äœ¿çšã¯åžžã«é©åã§ããç¹ã«ããã®ãŽãããªããµããŒãããªãæ©èœãå¿ èŠã«ãªããŸã§ïŒããšãã°ãå€ãã®IOããŒããå¿ èŠãªå ŽåïŒãUSBããã€ã¹ã«é©ããŠããŸãã
ãªãç¹å¥ãªãªãŒãããŒããŒãå¿ èŠãªã®ã§ããïŒ
AVR Megaã®ãªãŒãããŒããŒã¯1ããŒã¹ã§ãããTiny 85ã§ã¯ããã»ã©åçŽã§ã¯ãããŸããã ãããã®å°é£ãç解ããããã«ãå€å žã¢ã«ãŽãªãºã ã®æŠèŠã説æããŸãã
- BOOTRSTæ§æãããã0ã«èšå®ãããŠããå Žåãåèµ·ååŸãã³ã³ãããŒã©ãŒã¯ãŒãã¢ãã¬ã¹ããã§ã¯ãªããããŒããªã»ããã¢ãã¬ã¹ïŒç°ãªãã¢ãã«ã«åºæã§æ§æå¯èœãªïŒããå®è¡ãéå§ããŸãã
- ããŒããªã»ããã¢ãã¬ã¹ã«åŸã£ãŠããªãŒãããŒããŒèªäœãé 眮ããããŸããå²ã蟌ã¿ããŒãã«ãããŒããªã»ããã¢ãã¬ã¹ã«ç§»åããŸãã
- ãªãŒãããŒããŒã¯ãããèªäœã§ããŒãããå¿ èŠããããã©ãããå€æããŸãã å¿ èŠã«å¿ããŠãéåžžã®ãã¡ãŒã ãŠã§ã¢ãšããŠèµ·åããŸããããŒãã¢ãã¬ã¹ã«ã¯ãããŸããã
- ãªãŒãããŒããããŒãããå¿ èŠããªãå Žåã¯ãå²ã蟌ã¿ããŒãã«ããŒãã¢ãã¬ã¹ã«æ»ããããã«å¶åŸ¡ã移ããŠãã¢ããªã±ãŒã·ã§ã³ãã¡ãŒã ãŠã§ã¢ãããŒãããŸãã
- ãã©ãã·ã¥ã«ããŒã¿ãæžã蟌ãã§ããéããªãŒãããŒããŒã¯åŒãç¶ãUSBãããã³ã«ã§åäœãããã¹ãã®èŠæ±ã«å¿çããŸãã
- ãŸãããªãŒãããŒããŒã®ã¡ã¢ãªé åã¯èšé²ã§ããªãããããªãŒãããŒããŒãæå·ããããšã¯ãããŸããã
ãããŠä»ã85çªç®ã®ã¿ã€ããŒã®ãã¥ã¢ã³ã¹ïŒ
- ATtinyã¯åžžã«ãŒãã¢ãã¬ã¹ããèµ·åããŸã;å¥ã®ã¢ãã¬ã¹ã«èšå®ããããšã¯ã§ããŸããã
- å²ã蟌ã¿ãã¯ã¿ãŒãã©ãã«ã転éãããŸããã
- é²é³äžãã³ã³ãããŒã©ãŒã¯4.5ããªç§éåæ¢ããäœã«ãå¿çã§ããŸããã
- ãŸãããªãŒãããŒããŒã«ã¯èªå·±èšé²ã«å¯ŸããããŒããŠã§ã¢ä¿è·ããããŸããã
ããã³åé¿çã
- ã¯ãªã¢ãããã¡ã¢ãªã¯ãã³ã³ãããŒã©ã«ãã£ãŠNOPãšããŠæ±ããããŠãããã§ãã£ã±ãã«ãªããŸãã ãããŠããã¯ããªã»ããåŸãã³ã³ãããŒã«ããªãŒãããŒããŒã«å°éããããšãæå³ããŸãã ãããŸã§ã«å°ãªããšã1,500ã®NOPãå®äºããŸãã
- ããããUSBãããã³ã«ãæ©èœããã«ã¯ãããã ãã§ã¯äžååã§ãã PCINT0å²ã蟌ã¿å¿çãå¿ èŠã§ãã å²ã蟌ã¿ãã¯ã¿ãŒããŒãã«ã¯ç§»åã§ããŸãããããã®ããŒãã«ã«ãªãŒãããŒããŒã®ã¢ãã¬ã¹ãæžã蟌ãããšãã§ããŸãã ãããã£ãŠãæåã®ããŒãçŽåŸã«ããªãŒãããŒããŒã¯ãã³ãã©ãŒã®ã¢ãã¬ã¹ãã¯ãã«ãRESETããã³PCINT0ã«æžã蟌ã¿ãŸãã
- ã¢ããªã±ãŒã·ã§ã³ãã¡ãŒã ãŠã§ã¢ãèšé²ããå ŽåããªãŒãããŒããŒã¯RESETããã³PCINT0ãã¯ãã«ã眮ãæããŸãã
- ãªãŒãããŒããŒã¯ãé©çšããããã¡ãŒã ãŠã§ã¢ã®åæRESETãšPCINTããªãŒãããŒããŒã®çŽåã®ã¢ãã¬ã¹ã«æžã蟌ã¿ãŸãã
- PCINT0ã¢ããªã±ãŒã·ã§ã³ãã¡ãŒã ãŠã§ã¢ããã»ããµãåŒã³åºãããšãã§ããããã«ãV-USBããã»ããµPCINT0ãå€æŽããŸãã ãªãŒãããŒããŒãã³ãã©ãŒãæ©èœããããã®æ¡ä»¶ã¯ãTCCR1 == 0 && TCNT1 == 0xffã§ãã ãã以å€ã®å Žåã¯ãã¢ããªã±ãŒã·ã§ã³ãã³ãã©ãŒãå®è¡ããŸãã
- ã¡ã¢ãªãèšé²ãŸãã¯ã¯ãªã¢ããåã®é 延ã ãã®æç¹ã§ãã³ã³ãããŒã©ãŒã¯ãã¹ãã«æäœã®æåãéç¥ãããã¹ãã¯ããã倱ããŸããã
- ã¡ã¢ãªã¯ãªãŒã³ã¢ããæäœã®åŸããªãŒãããŒããŒã¯åžžã«RESETããã³PCINT0ãã¯ãã«ãæžã蟌ã¿ãŸãã
- ã¢ããªã±ãŒã·ã§ã³ãã¡ãŒã ãŠã§ã¢ãæžã蟌ãåã«ããªãŒãããŒããŒã¯FLASHãæåããæåŸãŸã§ãã©ãã·ã¥ããŸãã ãã®ã¿ã€ãã®ã¯ãªãŒãã³ã°ã«ãããäºæããªãåé»ã«ãã£ãŠã¯ãªãŒãã³ã°/èšé²ããã»ã¹ãäžæãããå Žåã§ãããªãŒãããŒããŒã¯åäœãç¶ããŸãã ãŸãã¯ãFLASHã®æåã®ããŒãžã¯ãŸã æ¶å»ãããŠããªããããã§ã«æžã蟌ãŸããŠããããªãŒãããŒããŒã®å¶åŸ¡ã¯ãã¯ã¿ãŒäžã§ç§»åããŸãã ãã¹ãŠã®ã¡ã¢ãªãã¯ãªã¢ãããNOPã®ãã§ãŒã³ãä»ããŠãªãŒãããŒããŒã«å¶åŸ¡ã転éãããŸãã
- ããŒããŠã§ã¢ã®ä»£ããã«ãªãŒãããŒããŒã®ãšã³ããªã®ãœãããŠã§ã¢ãã§ãã¯ãå®è¡ãããŸãã
ãªãŒãããŒããŒã®æ©èœã®è©³çŽ°ã«ã€ããŠã¯ã Embedded Creations Webãµã€ãã®AVR Tiny 85ãã芧ãã ããã
ãªãè»èŒªãåçºæããã®ã§ããïŒ
åã®ç« ã§èª¬æããçç±ã«ãããAVR tinyã§åŸæ¥ã®MEGAããŒã¹ã®ãªãŒãããŒããŒã䜿çšããããšã¯ã§ããŸããã ãããããããããªããŠããATtiny85 USBããŒãããŒããŒãšmicronucleus-t85ã®2ã€ã®ãªãŒãããŒããŒå®è£ ããããã©ã¡ãããã€ãŠäººæ°ã®ãã£ãUSBaspããã°ã©ããŒããšãã¥ã¬ãŒãããŸãã ãŸããåè¿°ã®ããã°ã©ããŒã¯libusbã©ã€ãã©ãªãŒãä»ããŠãã¹ãäžã§å®è¡ãããŸãã ããã¯çŽ æŽãããå€æ©èœã©ã€ãã©ãªã§ãããMac OSãŸãã¯Linuxã§ã®äœ¿çšã¯2x2ã®åºæ¬ã§ãã èªåã§äœæãããã®ãèªåã§äœ¿çšããå ŽåãTinyHID Loaderã¯ãããã³ã³ãã¯ããªãµã€ãºãé€ããŠé åçãããããŸããã ããããWindows 8.1 x64ã§ã¯ãlibusbãã©ã€ããŒã®ã€ã³ã¹ããŒã«ã¯ç°¡åãªäœæ¥ã§ã¯ãªããªããŸããã èšå®ã®æ·±ããšããã«ã¯ããã©ã€ããŒã®é»å眲åæ€èšŒãç¡å¹ã«ããŠã³ã³ãã¥ãŒã¿ãŒãåèµ·åã§ããé ç®ããããŸãã ãããŠããã®æ¹æ³ãäžè¬çãªãŠãŒã¶ãŒã«èª¬æãã人ã¯èª°ã«ãšã£ãŠãæ²æšã§ãã ãããã£ãŠãäž»ãªã¢ã€ãã¢ã¯ãHIDæ©èœã¬ããŒããä»ããŠæ©èœãããªãŒãããŒããŒãäœæããããšã§ããã ãã¹ãŠã®HIDããã€ã¹ã§ã¯ãæšæºã®OSãã©ã€ããŒã䜿çšãããè¿œå ã®ãã©ã€ããŒãã€ã³ã¹ããŒã«ããå¿ èŠã¯ãããŸããã ãŸããavrdudeã®ãµããŒãã«å€±æãããšãããŒãããŒããŒã®ééãæžããããšãã§ããããšãããããŸããã FLASHã®æžã蟌ã¿/ã¯ãªã¢ããã³ã¢ããªã±ãŒã·ã§ã³ãã¡ãŒã ãŠã§ã¢ãžã®ããã°ã©ã ã¢ã¯ã»ã¹ãé€ããã¹ãŠã®ãªãã·ã§ã³ãç¡å¹ã«ãããšããªãŒãããŒããŒã®ééã¯2kbã«ãªãã競åä»ç€Ÿãããå°ãªããªããŸãã
䜿ãæ¹ã¯ïŒ
ãŸãããã¡ãŒã ãŠã§ã¢ãæ§æããå¿ èŠããããŸãã ãããè¡ãã«ã¯ãã¹ããŒã /ããŒãºã«åãããŠãã¡ãŒã ãŠã§ã¢/usbloader/usbloader.hãã¡ã€ã«ã調æŽããå¿ èŠããããŸãã
// ATtiny, USB D- #define USB_CFG_DMINUS_BIT 2 // ATtiny, USB D+ #define USB_CFG_DPLUS_BIT 1 // ATtiny, // ( , ) // #define LED_PIN 4 // ATtiny, ( ) // ( ) #define START_JUMPER_PIN 0 // 1, EEPROM ( ) #define CAN_ERASE_EEPROM 0 // 1, FLASH ( ) #define CAN_READ_FLASH 0 // 0, ( ) #define CAN_LEAVE_LOADER 1
åæã«ãPCINT0å²ã蟌ã¿ã¯ä»»æã®ã¬ãã°ã§æ§æå¯èœãªãªãŒãããŒããŒã«ãã£ãŠäœ¿çšããããããUSB_CFG_DPLUS_BITãINT0ã¬ãã°ãååŸããããšã«æ³šæããå¿ èŠã¯ãããŸããã
äžèšã®ããŒãžã§ã³ã§ã¯ãããŒãããŒããŒã¯ãšã³ãããŒãšã³ãã§ããã2kbã«é©åããŸãã è¿œå ã®ãªãã·ã§ã³ãæå¹ã«ãããšããããã®å¶éãè¶ ããŠåœŒãé£ããŠè¡ããšåæã«ãããªãã¯ã¡ã¢ãªå ã®åœŒã®å Žæãå€æŽããå¿ èŠããããŸãã ããã¯ãAtmelStudioã䜿çšãããMakefileã䜿çšãããã«ãã£ãŠç°ãªããŸãã
Atmelã¹ã¿ãžãª
ãªãªãŒã¹ãéžæãããŠããããšã確èªããŸãã
ãããžã§ã¯ãããããã£ãéãã[ããŒã«ãã§ãŒã³]ã¿ãã«ç§»åãã[AVR / GNUãªã³ã«/ã¡ã¢ãªèšå®]é ç®ã§ãå€ ".text = 0xc00"ãæžãããŸãã 32ã¯ãŒãã®éšåã§ã®ã¿æžããããšãã§ããŸãã ã€ãŸãã0xbe0ã0xbc0ã0xba0ã§ãã 0xba0ã¯äœ¿çšå¯èœãªãã¹ãŠã®ãªãã·ã§ã³ãæ©èœããã®ã«ååã§ããããã以äžã®åæžã¯å¿ èŠãããŸããã ããã«å ããŠãå®æ°BOOTLOADER_WADDRESSã®å€ãæžããå¿ èŠããããŸãã ããã¯ãAVR / GNU Cã³ã³ãã€ã©/ã·ã³ãã«ããŒãžã§å®è¡ã§ããŸãã å€ã¯å€ ".text ="ãšçãããªããã°ãªããŸããã
æ§æåŸããããžã§ã¯ãïŒF7ïŒãã³ã³ãã€ã«ããå¿ èŠããããå€éšããã°ã©ããŒã䜿çšããŠã³ã³ãããŒã©ãŒã«ã¢ããããŒãã§ããŸãã
ã¡ã€ã¯ãã¡ã€ã«
Makefileãéããå®æ°BOOTLOADER_ADDRESSãç®çã®å€ã«æžãããŸãã 64ãã€ãéšåã®ã¿ãåæžã§ããŸãïŒAtmelStudioã¯åèªã䜿çšããMakefileã¯ãã€ãã䜿çšããŸãïŒã ã€ãŸãã17c0ã1780ã1740ã1740ã¯äœ¿çšå¯èœãªãã¹ãŠã®ãªãã·ã§ã³ãæ©èœããã®ã«ååã§ããããã以äžã®åæžã¯ãããŸããã
æ§æåŸãã³ãã³ãã©ã€ã³ã«makeãšå ¥åããŠãããžã§ã¯ããã³ã³ãã€ã«ããå¿ èŠããããå€éšããã°ã©ãã䜿çšããŠã³ã³ãããŒã©ãŒã«ã¢ããããŒãã§ããŸãã
ããã°ã©ããŒã¯å€éšããã°ã©ããŒãå¿ èŠãšããŸãããã³ã³ãã¥ãŒã¿ãŒã®ãœãããŠã§ã¢ã«ã¢ã¯ã»ã¹ããŠãã ããã
ãœãããŠã§ã¢
ãã¡ãŒã ãŠã§ã¢ãã³ã³ãããŒã©ãŒã«ã¢ããããŒããããŠãŒãã£ãªãã£ã¯CïŒã§èšè¿°ãããŠããããããžã§ã¯ãã¯VisualStudio 2012ã§éçºãããŸããããMONOã§ããã«äœæ¥ããããã«Xamarinã§éãããšãã§ããŸãã HIDãšã®éä¿¡ã«ã¯ãHidSharpã¯ãã¹ãã©ãããã©ãŒã ã©ã€ãã©ãªã䜿çšãããŸããããã«ãããMONOãããžã§ã¯ããçã®ã¯ãã¹ãã©ãããã©ãŒã ã«ãªããŸãã
ããŠã³ããŒããŠãŒãã£ãªãã£ã¯éåžžã«äœ¿ããããã§ãã
TinyLoaderCmd.exe firmware.hex
ãããŠ3ç§åŸã«ããŽãããªã¯çž«ãããŠè¡ãæºåãã§ããŸããã ãã¡ãŒã ãŠã§ã¢ãããã©ã«ãã®æ§æã§äœæãããå ŽåããŠãŒãã£ãªãã£ãèµ·åãããšã³ã³ãããŒã©ãŒããã©ãã·ã¥ãããã ãã§ãªããæºåãã§ãããèšé²ããããã¡ãŒã ãŠã§ã¢ãèµ·åããŸãã
ãŸãã¯ãCïŒãããžã§ã¯ãããTinyHID Loader APIã䜿çšã§ããŸãã
void UploadNewFirmware(string file) { HexFile file = new HexFile(args[0]); Loader ldr = Loader.TryGetLoader(40); byte[] programm = new byte[Loader.LOADERSTART]; for (int i = 0; i < programm.Length; i++) programm[i] = 0xff; file.Fill(programm); ldr.WriteFlash(programm, 0); ldr.LeaveBootloader(); }
ãã¡ãŒã ãŠã§ã¢ã«ãªãŒãããŒããŒããŒãæ©èœãè¿œå ããå ŽåïŒ
void runBootloader() { cli(); TCCR1 = 0; TCNT1 = 0xff; asm volatile ("rjmp __vectors"); }
ãã¿ã³ãã¯ãªãã¯ããã ãã§ããŠãŒã¶ãŒã«åããŠç¹æ» ããŸãã ãããŠããã®æç¹ã§ã®ãããžã§ã¯ãïŒ
- ãã¡ãŒã ãŠã§ã¢ã«ãªãŒãããŒããŒãããŒãããããæ瀺ããŸãã
- ã·ã¹ãã ããªãŒãããŒããŒãããã¯ã¢ãããããŸã§ãã°ããåŸ æ©ããŸãïŒLoader.TryGetLoaderïŒã
- æ°ãããã¡ãŒã ãŠã§ã¢ãèšé²ããŸãã
- ãã¡ãŒã ãŠã§ã¢ãããŠã³ããŒããããããªãŒãããŒããŒã«æ瀺ããŸãã
- ã·ã¹ãã ãæ°ãããã¡ãŒã ãŠã§ã¢ãååŸãããŸã§åŸ æ©ããŸãã
ãŸããå¥ã®ãªãã·ã§ã³ã»ãããå¿ èŠãªå Žåã¯ã©ãããŸããïŒ
ãªãã·ã§ã³ã®ãã«ã»ãããæäŸããŸããããæ°ãããã¡ãŒã ãŠã§ã¢ã¯é©åããŸãããïŒ ãŸãã¯ãã¡ã¢ãªãèªã¿åãæ©èœãè¿œå ããªãã£ãããšãåŸæããŠããŸããïŒ ããŠããŸãã¯TinyHIDããŒããŒã¯ãŸã£ããããªãã«åãããavrdudeãªãã§ã®ç掻ã¯è¯ããããŸãããïŒ ãããããã€ã¯ãã³ã³ãããŒã©ãŒã¯ã¹ããããããŠããã ãã§ãªããå¯éãããŠããŸãã ãããŠãç§ã¯ããããŸã£ããã¯ãã ä»ãããããªãã 質åãªã-TinyHID Loaderã¯ããèªäœãåæ§ç¯ã§ããŸãïŒ
èªå·±ç¹æ» ã¢ã«ãŽãªãºã ã¯æ¬¡ã®ãšããã§ãã
- ã³ãã³ãã©ã€ã³ããããŠãŒã¶ãŒã¯TinyLoaderCmd.exe reload bootloader.hexãå ¥åããŸãïŒãªãã·ã§ã³ãšããŠ-誰ãäœãå ¥åããããã¹ãäžã®ãœãããŠã§ã¢ããAPIãä»ããŠããã»ã¹ãå®è£ ããŸãïŒ
- ãŠãŒãã£ãªãã£ã¯ããªããŒãçšã®ãã¡ãŒã ãŠã§ã¢ãäœæããŸãã ããã«ã¯ãæ°ãããªãŒãããŒããŒã®ã€ã¡ãŒãžãããã«é¢ããæŠèŠæ å ±ïŒFLASHããã³CRC16ã®å®å ã¢ãã¬ã¹ïŒãããã³ç¹å¥ãªæŽæ°ãŠãŒãã£ãªãã£ïŒãªããŒããŒïŒãå«ãŸããŸãã
- ãã¡ãŒã ãŠã§ã¢ã¯ãä»ã®ãã¡ãŒã ãŠã§ã¢ãšåæ§ã«ãéåžžã®æ¹æ³ã§ãã€ã¯ãã³ã³ãããŒã©ãŒã«ã¢ããããŒããããŸãã
- ããã€ã¹ãåèµ·åãïŒãã®ãªãã·ã§ã³ãç¡å¹ã«ãªã£ãŠããªãå Žåã¯ãããã°ã©ã ã§å®è¡ãããå ŽåããããŸãïŒãå¶åŸ¡ããªããŒããŒã«è»¢éãããŸãã
- ãªããŒããŒã¯ãCRC16ã®ãµã€ãºãšããã€ã¹ã«é©åããèœåããã§ãã¯ããããšã«ãããæ°ãããªãŒãããŒããŒã®æ£ç¢ºæ§ããã§ãã¯ããŸãã
- ãã¹ãŠã®ãã§ãã¯ãæåãããšããªããŒããŒã¯ã¡ã¢ãªã®æåã®ããŒãžãã¯ãªã¢ããŸãã ãã®ç¬éããåŸæ»ãã¯ãããŸããã ãŸããé»æºãåããå Žåãå¶åŸ¡ã¯å€ãããŒãããŒããŒã«è»¢éãããŸããã
- äž»ãªæ®µéã¯ãæ°ãããªãŒãããŒããŒãã€ã¡ãŒãžããå®éã®ã¢ãã¬ã¹ã«ã³ããŒããããšãšããªãŒãããŒããŒã®åã®ããŒãžãçŽæ¥ã¯ãªã¢ããããšã§ãïŒãã¹ãŠã®ãªãŒãããŒããŒã䜿çšããããïŒ
- ãããŠæåŸã«-æ°ãããªãŒãããŒããŒã®RESETãã¯ãã«ã«æ²¿ã£ã移è¡-ãªãŒãããŒããŒãFLASHãååæåããŠäœæ¥ãéå§ããŸã
ãªããŒãã®ã»ãã¥ãªãã£ä¿èšŒã¯ãCRCæ€èšŒãšããã»ã¹ã®ããžãã¯ã§ãããäºæããªãçµäºã®å Žåã«åã³éå§ãããŸãã ãããã誀ã£ãæ°ãããã¡ãŒã ãŠã§ã¢ã¯ãŽãããªãã¬ã³ã¬ã«å€ããããã°ã©ããŒã®ã¿ãããã埩掻ãããããšãã§ããŸãã ãããã£ãŠã泚æããŠãã ãã-èšå®ãæ£ããããšã確èªããŠãã ããã
ãŸãããªããŒããŒã䜿çšãããšãå¥ã®ããã°ã©ããŒã§ããã€ã¹äžã®TinyHIDããŒããŒããã©ãã·ã¥ã§ããŸãã ã€ãŸããäžè¬çãªAVR Tiny 85ãªãŒãããŒããŒãä»ã®ãã®ã«çœ®ãæããããšã§ãã
ç¹å¥ãªæè¬ïŒ
- USBã§åäœããå¯èœæ§ãéåžžã«é«ãAtmelãã€ã¯ãã³ã³ãããŒã©ãŒçšã®V-USBã©ã€ãã©ãª
- AVR Tiny 85ã®ãªãŒãããŒããŒäœæã®è€éãã説æããããã®Embedded Creationsã®ATtiny85 USBããŒãããŒããŒ
- micronucleus-t85ãªãŒãããŒããŒã¯ããŸãã«ããªã¥ãŒã åæžã®ã¢ã€ãã¢ã§ãã
- BootIDHIDã¯ãHIDãžã®åãæ¿ãã¯ééã®ç¹ã§é«äŸ¡ã«ããæããªããšããèãã«åºã¥ããŠããŸãã Avrdudeäºææ§ã®æåŠã«ãããããã«åã€ããšãã§ããŸãã
- osccal.cãosctune.hã«å€æŽãããšããã¢ã€ãã¢ã«ã€ããŠããã€ãã®FunkUsbã«äººçš®çã«èšåããŸããã