You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

247 lines
14 KiB

  1. # 書き込みの手順とブートローダ情報
  2. <!---
  3. original document: 0.10.33:docs/flashing.md
  4. git diff 0.10.33 HEAD -- docs/flashing.md | cat
  5. -->
  6. キーボードが使用するブートローダにはかなり多くの種類があり、ほぼ全てが異なる書き込みの方法を使います。幸いなことに、[QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases) のようなプロジェクトは、あまり深く考える必要無しに様々なタイプと互換性を持つことを目指していますが、この文章では様々なタイプのブートローダとそれらを書き込むために利用可能な方法について説明します。
  7. `rules.mk``BOOTLOADER` 変数で選択されたブートローダがある場合、QMK は .hex ファイルがデバイスに書き込むのに適切なサイズかどうかを自動的に計算し、合計サイズをバイト単位で(最大値とともに)出力します。
  8. ## DFU
  9. Atmel の DFU ブートローダはデフォルトで全ての atmega32u4 チップに搭載されており、PCB (旧 OLKB キーボード、Clueboard) に独自の IC を持つ多くのキーボードで使われています。一部のキーボードは、LUFA の DFU ブートローダ(または QMK のフォーク) (新しい OLKB キーボード)を使う場合もあり、そのハードウェアに固有の追加機能が追加されます。
  10. DFU ブートローダとの互換性を確保するために、以下のブロックが `rules.mk` にあることを確認してください(オプションとして代わりに `lufa-dfu``qmk-dfu` が使えます):
  11. ```make
  12. # Bootloader selection
  13. # Teensy halfkay
  14. # Pro Micro caterina
  15. # Atmel DFU atmel-dfu
  16. # LUFA DFU lufa-dfu
  17. # QMK DFU qmk-dfu
  18. # ATmega32A bootloadHID
  19. # ATmega328P USBasp
  20. BOOTLOADER = atmel-dfu
  21. ```
  22. 互換性のあるフラッシャ:
  23. * [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases) (推奨の GUI)
  24. * QMK の [dfu-programmer](https://github.com/dfu-programmer/dfu-programmer) / `:dfu` (推奨のコマンドライン)
  25. 書き込み手順:
  26. 1. `RESET` キーコードを押すか、RESET ボタンをタップします(または RST を GND にショートします)。
  27. 2. OS がデバイスを検知するのを待ちます。
  28. 3. メモリを消去します(自動的に実行されるかもしれません)
  29. 4. .hex ファイルを書き込みます
  30. 5. デバイスをアプリケーションモードにリセットします(自動的に実行されるかもしれません)
  31. あるいは:
  32. make <keyboard>:<keymap>:dfu
  33. ### QMK DFU
  34. QMK には LUFA DFU ブートローダのフォークがあり、ブートローダを終了してアプリケーションに戻る時に単純なマトリックススキャンを行うことができます。また、何かが起きた時に、LED を点滅したり、スピーカーでカチカチ音をたてたりします。これらの機能を有効にするには、`config.h` で以下のブロックを有効にします (ブートローダを終了するキーは、ここで定義された INPUT と OUTPUT に接続する必要があります):
  35. #define QMK_ESC_OUTPUT F1 // 通常 COL
  36. #define QMK_ESC_INPUT D5 // 通常 ROW
  37. #define QMK_LED E6
  38. #define QMK_SPEAKER C6
  39. 製造元と製品名は `config.h` から自動的に取得され、製品に「Bootloader」が追加されます。
  40. このブートローダを生成するには、`bootloader` ターゲット、例えば `make planck/rev4:default:bootloader` を使います。
  41. 実稼働対応の .hex ファイル(アプリケーションおよびブートローダを含む)を生成するには、`production` ターゲット、例えば `make planck/rev4:default:production` を使います。
  42. ### DFU コマンド
  43. ファームウェアを DFU デバイスに書き込むために使用できる DFU コマンドがいくつかあります。
  44. * `:dfu` - これが通常のオプションで、DFU デバイスが使用可能になるまで待機したのちファームウェアを書き込みます。5秒ごとに、DFU デバイスが存在するかチェックしています。
  45. * `:dfu-ee` - 通常の hex ファイルの代わりに `eep` ファイルを書き込みます。これを使用するのはまれです。
  46. * `:dfu-split-left` - デフォルトオプション (`:dfu`) と同様に、通常のファームウェアが書き込まれます。ただし、分割キーボードの「左側の」 EEPROM ファイルも書き込まれます。_これは、Elite C ベースの分割キーボードに最適です。_
  47. * `:dfu-split-right` - デフォルトオプション (`:dfu`) と同様に、通常のファームウェアが書き込まれます。ただし、分割キーボードの「右側の」 EEPROM ファイルも書き込まれます。_これは、Elite C ベースの分割キーボードに最適です。_
  48. ## Caterina
  49. Arduino ボードとそのクローンは [Caterina ブートローダ](https://github.com/arduino/ArduinoCore-avr/tree/master/bootloaders/caterina) (Pro Micro またはそのクローンで構築されたキーボード)を使用し、avr109 プロトコルを使って仮想シリアルを介して通信します。[A-Star](https://www.pololu.com/docs/0J61/9) のようなブートローダは Caterina に基づいています。
  50. Caterina ブートローダとの互換性を確保するために、以下のブロックが `rules.mk` にあることを確認してください:
  51. ```make
  52. # Bootloader selection
  53. # Teensy halfkay
  54. # Pro Micro caterina
  55. # Atmel DFU atmel-dfu
  56. # LUFA DFU lufa-dfu
  57. # QMK DFU qmk-dfu
  58. # ATmega32A bootloadHID
  59. # ATmega328P USBasp
  60. BOOTLOADER = caterina
  61. ```
  62. 互換性のあるフラッシャ:
  63. * [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases) (推奨の GUI)
  64. * avr109 を使った [avrdude](https://www.nongnu.org/avrdude/) / `:avrdude` (推奨のコマンドライン)
  65. * [AVRDUDESS](https://github.com/zkemble/AVRDUDESS)
  66. 書き込み手順:
  67. 1. `RESET` キーコードを押すか、RST をすばやく GND にショートします (入力後7秒で書き込みます)
  68. 2. OS がデバイスを検知するのを待ちます。
  69. 3. .hex ファイルを書き込みます
  70. 4. デバイスが自動的にリセットされるのを待ちます
  71. あるいは
  72. make <keyboard>:<keymap>:avrdude
  73. ### Caterina コマンド
  74. ファームウェアを DFU デバイスに書き込むために使用できる DFU コマンドがいくつかあります。
  75. * `:avrdude` - これが通常のオプションで、Caterina デバイスが(新しい COM ポートを検出して)使用可能になるまで待機し、ファームウェアを書き込みます。
  76. * `:avrdude-loop` - これは `:avrdude` と同じコマンドを実行します。ただし書き込みが終了すると再び Caterina デバイスの書き込み待ちに戻ります。これは何台ものデバイスへ書き込むのに便利です。_Ctrl+C を押して、手動でこの繰り返しを終了させる必要があります。_
  77. * `:avrdude-split-left` - デフォルトオプション (`:avrdude`) と同様に通常のファームウェアが書き込まれます。ただし、分割キーボードの「左側の」 EEPROM ファイルも書き込まれます。_これは、Pro Micro ベースの分割キーボードに最適です。_
  78. * `:avrdude-split-right` - デフォルトオプション (`:avrdude`) と同様に通常のファームウェアが書き込まれます。ただし、分割キーボードの「右側の」 EEPROM ファイルも書き込まれます。_これは、Pro Micro ベースの分割キーボードに最適です。_
  79. ## Halfkay
  80. Halfkay は PJRC によって開発された超スリムなプロトコルであり、HID を使用し、全ての Teensys (つまり 2.0)に搭載されています。
  81. Halfkay ブートローダとの互換性を確保するために、以下のブロックが `rules.mk` にあることを確認してください:
  82. ```make
  83. # Bootloader selection
  84. # Teensy halfkay
  85. # Pro Micro caterina
  86. # Atmel DFU atmel-dfu
  87. # LUFA DFU lufa-dfu
  88. # QMK DFU qmk-dfu
  89. # ATmega32A bootloadHID
  90. # ATmega328P USBasp
  91. BOOTLOADER = halfkay
  92. ```
  93. 互換性のあるフラッシャ:
  94. * [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases) (推奨の GUI)
  95. * [Teensy ローダー](https://www.pjrc.com/teensy/loader.html)
  96. * [Teensy ローダーコマンドライン](https://www.pjrc.com/teensy/loader_cli.html) (推奨のコマンドライン)
  97. 書き込み手順:
  98. 1. `RESET` キーコードを押すか、RST をすばやく GND にショートします (入力後7秒で書き込みます)
  99. 2. OS がデバイスを検知するのを待ちます。
  100. 3. .hex ファイルを書き込みます
  101. 4. デバイスをアプリケーションモードにリセットします(自動的に実行されるかもしれません)
  102. ## USBasploader
  103. USBasploader は matrixstorm によって開発されたブートローダです。V-USB を実行する ATmega328P のような非 USB AVR チップで使われます。
  104. USBasploader ブートローダとの互換性を確保するために、以下のブロックが `rules.mk` にあることを確認してください:
  105. ```make
  106. # Bootloader selection
  107. # Teensy halfkay
  108. # Pro Micro caterina
  109. # Atmel DFU atmel-dfu
  110. # LUFA DFU lufa-dfu
  111. # QMK DFU qmk-dfu
  112. # ATmega32A bootloadHID
  113. # ATmega328P USBasp
  114. BOOTLOADER = USBasp
  115. ```
  116. 互換性のあるフラッシャ:
  117. * [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases) (推奨の GUI)
  118. * `usbasp` プログラマを使った [avrdude](https://www.nongnu.org/avrdude/)
  119. * [AVRDUDESS](https://github.com/zkemble/AVRDUDESS)
  120. 書き込み手順:
  121. 1. `RESET` キーコードを押すか、RST を GND にすばやくショートしながら、ブートピンを GND にショートしたままにします。
  122. 2. OS がデバイスを検知するのを待ちます。
  123. 3. .hex ファイルを書き込みます
  124. 4. デバイスをアプリケーションモードにリセットします(自動的に実行されるかもしれません)
  125. ## BootloadHID
  126. BootloadHID は AVR マイクロコントローラ用の USB ブートローダです。アップローダーツールは Windows でカーネルレベルのドライバを必要としないため、DLL をインストールせずに実行することができます。
  127. bootloadHID ブートローダとの互換性を確保するために、以下のブロックが `rules.mk` にあることを確認してください:
  128. ```make
  129. # Bootloader selection
  130. # Teensy halfkay
  131. # Pro Micro caterina
  132. # Atmel DFU atmel-dfu
  133. # LUFA DFU lufa-dfu
  134. # QMK DFU qmk-dfu
  135. # ATmega32A bootloadHID
  136. # ATmega328P USBasp
  137. BOOTLOADER = bootloadHID
  138. ```
  139. 互換性のあるフラッシャ:
  140. * [HIDBootFlash](http://vusb.wikidot.com/project:hidbootflash) (推奨の Windows GUI)
  141. * [bootloadhid コマンドライン](https://www.obdev.at/products/vusb/bootloadhid.html) / QMK の `:BootloadHID` (推奨のコマンドライン)
  142. 書き込み手順:
  143. 1. 以下のいずれかの方法を使ってブートローダに入ります:
  144. * `RESET` キーコードをタップします (全てのデバイスでは動作しないかもしれません)
  145. * キーボードを接続しながらソルトキーを押し続けます (通常はキーボードの readme に書かれています)
  146. 2. OS がデバイスを検知するのを待ちます。
  147. 3. .hex ファイルを書き込みます
  148. 4. デバイスをアプリケーションモードにリセットします(自動的に実行されるかもしれません)
  149. あるいは:
  150. make <keyboard>:<keymap>:bootloadHID
  151. ## STM32
  152. 全ての STM32 チップには、変更も削除もできない工場出荷時のブートローダがプリロードされています。一部の STM32 チップには USB プログラミングが付属していないブートローダがありますが(例えば STM32F103)、プロセスは同じです。
  153. 現時点では、STM32 の `rules.mk` には、`BOOTLOADER` 変数は不要です。
  154. 互換性のあるフラッシャ:
  155. * [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases) (推奨の GUI)
  156. * [dfu-util](https://github.com/Stefan-Schmidt/dfu-util) / `:dfu-util` (推奨のコマンドライン)
  157. 書き込み手順:
  158. 1. 以下のいずれかの方法を使ってブートローダに入ります:
  159. * `RESET` キーコードをタップします (STM32F042 デバイスでは動作しないかもしれません)
  160. * リセット回路が存在する場合、RESET ボタンをタップします
  161. * それ以外の場合は、(BOOT0 ボタンあるいはブリッジ経由で)BOOT0 を VCC にブリッジし、(REEST ボタンあるいはブリッジ経由で)RESET を GND にショートし、BOOT0 ブリッジを放す必要があります。
  162. 2. OS がデバイスを検知するのを待ちます。
  163. 3. .bin ファイルを書き込みます
  164. * DFU 署名に関する警告が表示されます; 無視してください
  165. 4. デバイスをアプリケーションモードにリセットします(自動的に実行されるかもしれません)
  166. * コマンドラインからビルドする場合(例えば、`make planck/rev6:default:dfu-util`)、`rules.mk` の中で `:leave``DFU_ARGS` 変数に渡されるようにしてください (例えば、`DFU_ARGS = -d 0483:df11 -a 0 -s 0x08000000:leave`)。そうすれば、書き込みの後でデバイスがリセットされます
  167. ### STM32 コマンド
  168. ファームウェアを STM32 デバイスに書き込むために使用できる DFU コマンドがいくつかあります。
  169. * `:dfu-util` - STM32 デバイスに書き込むためのデフォルトコマンドで、STM32 ブートローダデバイスが見つかるまで待機します。
  170. * `:dfu-util-split-left` - デフォルトのオプション (`:dfu-util`) と同様に、通常のファームウェアが書き込まれます。ただし、分割キーボードの「左側の」 EEPROM の設定も行われます。
  171. * `:dfu-util-split-right` - デフォルトのオプション (`:dfu-util`) と同様に、通常のファームウェアが書き込まれます。ただし、分割キーボードの「右側の」 EEPROM の設定も行われます。
  172. * `:st-link-cli` - dfu-util ではなく、ST-LINK の CLI ユーティリティを介してファームウェアを書き込めます。
  173. * `:st-flash` - dfu-util ではなく、[STLink Tools](https://github.com/stlink-org/stlink) の `st-flash` ユーティリティを介してファームウェアを書き込めます。