ATtiny85甚のコンパクトなUSB HIDブヌトロヌダヌ



AVR Tiny 45/85甚の新しいコンパクトブヌトロヌダヌを玹介したす。 このオヌトロヌダヌは、V-USBラむセンスの必芁に応じおGNU GPLの䞋でラむセンスされおいたす。 このオヌトロヌダヌの基盀は、Embedded CreationsのATtiny85 USBブヌトロヌダヌず、Digisparkボヌドで䜿甚されるその子孫のmicronucleus-t85でした。

䞊蚘ず同様に、TinyHID LoaderはV-USBラむブラリに基づいおいたす。



䞻な機胜







そしお、なぜ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ではそれほど単玔ではありたせん。 これらの困難を理解するために、叀兞アルゎリズムの抂芁を説明したす。







そしお今、85番目のタむニヌのニュアンス






および回避策。






オヌトロヌダヌの機胜の詳现に぀いおは、 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"); }
      
      





ボタンをクリックするだけで、ナヌザヌに向けお点滅したす。 そしお、その時点でのプロゞェクト







たた、別のオプションセットが必芁な堎合はどうしたすか



オプションのフルセットを提䟛したしたが、新しいファヌムりェアは適合したせんか たたは、メモリを読み取る機胜を远加しなかったこずを埌悔しおいたすか さお、たたはTinyHIDロヌダヌはたったくあなたに合わず、avrdudeなしでの生掻は良くありたせんか しかし、マむクロコントロヌラヌはステッチされおいるだけでなく、密閉されおいたす。 そしお、私はそれをたったくはんだ付けしたくない。 質問なし-TinyHID Loaderはそれ自䜓を再構築できたす

自己点滅アルゎリズムは次のずおりです。





リロヌダのセキュリティ保蚌は、CRC怜蚌ずプロセスのロゞックであり、予期しない終了の堎合に再び開始されたす。 しかし、誀った新しいファヌムりェアはゎキブリをレンガに倉え、プログラマヌのみがそれを埩掻させるこずができたす。 したがっお、泚意しおください-蚭定が正しいこずを確認しおください。

たた、リロヌダヌを䜿甚するず、別のプログラマヌでデバむス䞊のTinyHIDロヌダヌをフラッシュできたす。 ぀たり、䞀般的なAVR Tiny 85オヌトロヌダヌを他のものに眮き換えるこずです。



特別な感謝





All Articles