aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--docs/ja/isp_flashing_guide.md284
1 files changed, 284 insertions, 0 deletions
diff --git a/docs/ja/isp_flashing_guide.md b/docs/ja/isp_flashing_guide.md
new file mode 100644
index 000000000..ae3918130
--- /dev/null
+++ b/docs/ja/isp_flashing_guide.md
@@ -0,0 +1,284 @@
1# ISP 書き込みガイド
2
3<!---
4 grep --no-filename "^[ ]*git diff" docs/ja/*.md | sh
5 original document: 0.9.46:docs/isp_flashing_guide.md
6 git diff 0.9.46 HEAD -- docs/isp_flashing_guide.md | cat
7-->
8
9ISP 書き込み(ICSP 書き込みと呼ぶ場合もあります)とは、マイクロコントローラーを直接プログラミングするプロセスです。
10これにより、ブートローダを交換したり、コントローラの「ヒューズ」を変更することができ、コントローラの速度や起動方法、その他のオプションなど、多くのハードウェアおよびソフトウェア関連の機能を制御します。
11
12QMK の ISP 書き込みの主な用途は、AVRベースのコントローラ(Pro Micro、または V-USB チップ)のブートローダの書き込みまたは交換です。
13
14?> これは Pro Micro や他の ATmega コントローラなどの AVR ベースのボードをプログラミングするためだけのものです。 Proton C などの Arm コントローラには使用できません。
15
16## 破損したブートローダーの取り扱い
17
18ボードの書き込み/消去で問題が発生し、DFU ベースのコントローラで次のような不可解なエラーメッセージが表示される場合:
19
20 libusb: warning [darwin_transfer_status] transfer error: timed out
21 dfu.c:844: -ETIMEDOUT: Transfer timed out, NAK 0xffffffc4 (-60)
22 atmel.c:1627: atmel_flash: flash data dfu_download failed.
23 atmel.c:1629: Expected message length of 1072, got -60.
24 atmel.c:1434: Error flashing the block: err -2.
25 ERROR
26 Memory write error, use debug for more info.
27 commands.c:360: Error writing memory data. (err -4)
28
29 dfu.c:844: -EPIPE: a) Babble detect or b) Endpoint stalled 0xffffffe0 (-32)
30 Device is write protected.
31 dfu.c:252: dfu_clear_status( 0x7fff4fc2ea80 )
32 atmel.c:1434: Error flashing the block: err -2.
33 ERROR
34 Memory write error, use debug for more info.
35 commands.c:360: Error writing memory data. (err -4)
36
37または、Pro Micro ベースのコントローラに対して次のようなメッセージが表示された場合:
38
39 avrdude: butterfly_recv(): programmer is not responding
40 avrdude: butterfly_recv(): programmer is not responding
41 avrdude: verification error, first mismatch at byte 0x002a
42 0x2b != 0x75
43 avrdude: verification error; content mismatch
44 avrdude: verification error; content mismatch
45
46
47あなたのボード/デバイスを再び動作させるには、ISP 書き込みが必要になるかもしれません。
48
49## 必要なハードウェア
50
51実際に ISP の書き込みを行うには、以下のいずれか(その後に使用するプロトコルが続きます)が必要になります。
52
53* [SparkFun PocketAVR](https://www.sparkfun.com/products/9825) - (USB Tiny)
54* [USBtinyISP AVR Programmer Kit](https://www.adafruit.com/product/46) - (USB Tiny)
55* [Teensy 2.0](https://www.pjrc.com/store/teensy.html) - (avrisp)
56* [Pro Micro](https://www.sparkfun.com/products/12640) - (avrisp)
57* [Bus Pirate](https://www.adafruit.com/product/237) - (buspirate)
58
59ISP 書き込みに使用できるデバイスは他にもありますが、これらが主なものです。
60また、すべての製品リンクは公式バージョンへのものです。他の場所で入手することもできます。
61
62また、「ISP プログラマ」をプログラミングするデバイスに配線するためのものも必要になります。
63PCB の中には直接使用できる ISP ヘッダがあるものもありますが、そうではない場合が多いので、コントローラ自体にハンダ付けするか、別のスイッチや他のコンポーネントにハンダ付けする必要があるでしょう。
64
65### ISP ファームウェア
66
67Teensy と Pro Micro のコントローラを ISP プログラマとして使用するには、コントローラに ISP ファームウェアを書き込む必要があります。
68それ以外のハードウェアは、あらかじめプログラムされているはずです。
69そのため、これらのコントローラの場合は、正しい hex ファイルをダウンロードしてから書き込んでください。
70
71* Teensy 2.0: [`util/teensy_2.0_ISP_B0.hex`](https://github.com/qmk/qmk_firmware/blob/master/util/teensy_2.0_ISP_B0.hex) (`B0`)
72* Pro Micro: [`util/pro_micro_ISP_B6_10.hex`](https://github.com/qmk/qmk_firmware/blob/master/util/pro_micro_ISP_B6_10.hex) (`10/B6`)
73
74コントローラに書き込んだら、この hex ファイルはもう必要ありません。
75
76## 必要なソフトウェア
77
78QMK ツールボックスは、このほとんど(すべて)に使用することができます。
79
80ただし、Teensy 2.0 ボードを使っている場合は、[Teensy Loader](https:/www.pjrc.comteensyloader.html) を使えば、Teensy 2.0 ボードに書き込むことができます。
81あるいは、`avrdude` (`qmk_install.sh` の一部としてインストールされています) や、[AVRDUDESS](https:/blog.zakkemble.netavrdudess-a-gui-for-avrdude)(Windows 用) を使って、Pro Micro に書き込んだり、ISP を書き込んだりすることができます。
82
83## 配線
84
85これは非常に簡単です。次のようにして、相互に対応するものを接続します。
86
87### SparkFun Pocket AVR
88
89 PocketAVR RST <-> Keyboard RESET
90 PocketAVR SCLK <-> Keyboard B1 (SCLK)
91 PocketAVR MOSI <-> Keyboard B2 (MOSI)
92 PocketAVR MISO <-> Keyboard B3 (MISO)
93 PocketAVR VCC <-> Keyboard VCC
94 PocketAVR GND <-> Keyboard GND
95
96### Teensy 2.0
97
98 Teensy B0 <-> Keyboard RESET
99 Teensy B1 <-> Keyboard B1 (SCLK)
100 Teensy B2 <-> Keyboard B2 (MOSI)
101 Teensy B3 <-> Keyboard B3 (MISO)
102 Teensy VCC <-> Keyboard VCC
103 Teensy GND <-> Keyboard GND
104
105!> Teensy の B0 ピンはキーボードのコントローラの RESET/RST ピンと配線されています。 Teensy の RESET ピンをキーボードの RESET に配線しないでください。
106
107### Pro Micro
108
109 Pro Micro 10 (B6) <-> Keyboard RESET
110 Pro Micro 15 (B1) <-> Keyboard B1 (SCLK)
111 Pro Micro 16 (B2) <-> Keyboard B2 (MOSI)
112 Pro Micro 14 (B3) <-> Keyboard B3 (MISO)
113 Pro Micro VCC <-> Keyboard VCC
114 Pro Micro GND <-> Keyboard GND
115
116!> Pro Micro の 10/B6 ピンはキーボードのコントローラの RESET/RST ピンに配線されています。 Pro Micro の RESET ピンをキーボードの RESET に配線 ***しないでください***。
117
118## キーボードへの書き込み
119
120ISP プログラマをセットアップして、キーボードに接続したら、キーボードに書き込みをします。
121
122### ブートローダファイル
123
124普通の状態に戻す一番簡単で手っ取り早い方法は、キーボードにブートローダだけ書き込むことです。
125これが終れば、普通にキーボードを接続して、普通にキーボードに書き込みできるようになります。
126
127標準のブートローダは[`util/` フォルダー](https://github.com/qmk/qmk_firmware/tree/master/util) にあります。
128チップの正しいブートローダを書き込んでください:
129
130* **Atmel DFU**
131 * [ATmega16U4](https://github.com/qmk/qmk_firmware/blob/master/util/bootloader_atmega16u4_1.0.1.hex)
132 * [ATmega32U4](https://github.com/qmk/qmk_firmware/blob/master/util/bootloader_atmega32u4_1.0.0.hex)
133 * [AT90USB64](https://github.com/qmk/qmk_firmware/blob/master/util/bootloader_at90usb64_1.0.0.hex)
134 * [AT90USB128](https://github.com/qmk/qmk_firmware/blob/master/util/bootloader_at90usb128_1.0.1.hex)
135* **Caterina**
136 * [Pro Micro (5V/16MHz)](https://github.com/sparkfun/Arduino_Boards/blob/master/sparkfun/avr/bootloaders/caterina/Caterina-promicro16.hex)
137 * [Pro Micro (3.3V/8MHz)](https://github.com/sparkfun/Arduino_Boards/blob/master/sparkfun/avr/bootloaders/caterina/Caterina-promicro8.hex)
138* **BootloadHID (PS2AVRGB)**
139 * [ATmega32A](https://github.com/qmk/qmk_firmware/blob/master/util/bootloader_ps2avrgb_bootloadhid_1.0.1.hex)
140
141お使いのボードが何を使っているかわからない場合は、QMK のキーボード用の `rules.mk` ファイルを見てください。
142`MCU` と `BOOTLOADER` の行には必要な値が書かれています。これはボードのバージョンによって異なるかもしれません。
143
144### 製造手法
145
146ブートローダと通常のファームウェアを同時に書き込みたい場合、2つの方法があります。
147手動で行うか、コンパイル時に `:production` ターゲットを使って行うかです。
148
149手動で行うには:
150
1511. オリジナルのファームウェアの .hex ファイルをテキストエディタで開きます
1522. 最後の行を削除してください。(`:00000001FF`になっているはずです - これは EOF メッセージです)
1533. ブートローダの内容全体を新しい行にコピーして(行間に空行を入れないように)、元のファイルの最後に貼り付けてください。
1544. これを新しいファイルとして `<keyboard>_<keymap>_production.hex` という名前で保存します。
155
156?> ここでは他のブートローダも同じように使うことができますが、__ブートローダが必要で__、そうしないとまた ISP を使ってキーボードに新しいファームウェアを書き込まなければならなくなります。
157
158#### QMK DFU ブートローダとプロダクションイメージの作成
159
160コンパイル時に `:production` ターゲットを使用して、ボード用のファームウェア、QMK DFU ブートローダ、プロダクションファームウェアイメージを作成することができます。
161これが完了すると、3つのファイルが表示されます:
162
163* `<keyboard>_<keymap>.hex`
164* `<keyboard>_<keymap>_bootloader.hex`
165* `<keyboard>_<keymap>_production.hex`
166
167QMK DFU ブートローダは `atmega32u4` コントローラ (AVR ベースの Planck ボードや Pro Micro など) でしかテストされておらず、他のコントローラではテストされていません。
168しかし、`atmega32a` や `atmega328p` のような V-USB コントローラでは間違いなく動作しません。
169
170ブートローダかプロダクションファームウェアファイルのどちらかを書き込むことができます。
171プロダクションファームウェアファイルの方が、より多くのデータを書き込むので、書き込みに時間がかかります。
172
173?> 注意:同じブートローダを使用しつづけるべきです。すでに DFU を使用している場合は、QMK DFU に切り替えても問題ありません。しかし、例えば Pro Micro に QMK DFU を書き込むには、追加の手順が必要になります。
174
175## ブートローダ/プロダクションファイルの書き込み
176
177キーボードがどのデバイスにも接続されていないことを確認し、ISP プログラマを接続してください。
178
179ブートローダの種類を変更したい場合は、コマンドラインを使用する必要があります。
180
181### QMK Toolbox
182
1831. 'AVRISP device connected' または `USB Tiny device connected` が黄色で表示されます。
1842. `Open` ダイアログで正しいブートローダー/プロダクションの .hex ファイルを選択します(パスにスペースを含めることはできません)
1853. 書きこもうとしているキーボード(ISP プログラマではなく)のための正しい `Microcontroller` オプションが選択されていることを確認してください。
1864. `Flash` を押します
1875. 特にプロダクションファイルの場合、しばらくは何も出力されませんが、待ちましょう。
188
189検証とヒューズのチェックに問題がなければ、完了です。
190ボードが自動的に再起動する場合があります。
191それ以外の場合は、Teensy のプラグを抜いて、キーボードを接続します。
192テスト中は、Teensy をキーボードに接続したままにすることができますが、すべてが正常に機能することを確認したら、はんだを外すか、配線を外すことをお勧めします。
193
194### コマンドライン
195
196ターミナル(Windows の場合は `cmd`)を開いて、修正した .hex ファイルがある場所に移動します。
197ここでは、このファイルを `main.hex` と呼び、Teensy 2.0 が `COM3` ポートに接続されていると仮定します。
198よくわからない場合は、デバイスマネージャを開いて、`Ports > USB Serial Device` を探してください。ここにある COM ポートを使ってください。
199あなたはそれが正しいポートであることを確認することができます:
200
201 avrdude -c avrisp -P COM3 -p atmega32u4
202
203次のような出力が得られるはずです:
204
205 avrdude: AVR device initialized and ready to accept instructions
206
207 Reading | ################################################## | 100% 0.02s
208
209 avrdude: Device signature = 0x1e9587
210
211 avrdude: safemode: Fuses OK
212
213 avrdude done. Thank you.
214
215私たちのキーボードは `atmega32u4`(共通)を使用しているので、これが指定するチップです。
216以下が完全なコマンドです:
217
218 avrdude -c avrisp -P COM3 -p atmega32u4 -U flash:w:main.hex:i
219
220ボードが `atmega32a`(jj40 など)を使用している場合、コマンドは次のとおりです(最後の追加コードによりヒューズが正しく設定されます)。
221
222 avrdude -c avrisp -P COM3 -p atmega32 -U flash:w:main.hex:i -U hfuse:w:0xD0:m -U lfuse:w:0x0F:m
223
224プログレスバーが表示されてから、以下が表示されるはずです。
225
226 avrdude: verifying ...
227 avrdude: 32768 bytes of flash verified
228
229 avrdude: safemode: Fuses OK
230
231 avrdude done. Thank you.
232
233これは全てうまく動作したことを示しています。
234ボードが自動的に再起動する場合もありますが、そうでない場合は、Teensy のプラグを抜いてキーボードを接続してください。
235テスト中は、Teensy をキーボードに接続したままにすることができますが、すべてが正常に機能することを確認したら、はんだを外すか、配線を外すことをお勧めします。
236
237SparkFun PocketAVR Programmer や、他の USB Tiny ベースの ISP プログラマを使用している場合は、次のようなものを使用すると良いでしょう。
238
239 avrdude -c usbtiny -P usb -p atmega32u4
240
241#### 上級者向け: ヒューズの変更
242
243Pro Micro に QMK DFU を書き込むなど、ブートローダを切り替える場合は、ブートローダの hex ファイルの書き込みに加えて、ヒューズを変更する必要があります。
244これは、`caterina` (Pro Micro ブートローダ) と `dfu` では起動ルーチンの扱いが異なり、その動作はヒューズによって制御されるからです。
245
246!> これは、ヒューズを変更することは、永久にあなたのコントローラをレンガ化(訳注:日本では文鎮化と呼ぶことが多い、コントローラがまったく無反応になる状態)することができる方法の1つであるため、それは非常に注意が必要な1つの領域です。
247
248以下は、`atmega32u4`の 5V 16MHz 版(5V Pro Micro など)を想定しています。
249
250`atmega32u4`の DFU の場合、必要なヒューズ設定は次のとおりです:
251
252| ヒューズ | 設定 |
253|----------|------------------|
254| Low | `0x5E` |
255| High | `0xD9` or `0x99` |
256| Extended | `0xC3` |
257
258High ヒューズは 0xD9 か 0x99 のどちらかになります。
259違いは、0xD9 は QMK Firmware がソフトウェアでも無効化している JTAG を無効化しているのに対し、0x99 は JTAG を無効化していないことです。
260
261これを設定するには、`-U lfuse:w:0x5E:m -U hfuse:w:0xD9:m -U efuse:w:0xC3:m` をコマンドに追加します。
262そうすると、最終的なコマンドは次のようになります。
263
264 avrdude -c avrisp -P COM3 -p atmega32u4 -U flash:w:main.hex:i -U lfuse:w:0x5E:m -U hfuse:w:0xD9:m -U efuse:w:0xC3:m
265
266`atmega32u4`の Caterina では、以下があなたに必要なヒューズの設定です。
267
268| ヒューズ | 設定 |
269|----------|--------|
270| Low | `0xFF` |
271| High | `0xD8` |
272| Extended | `0xCB` |
273
274これを設定するには、コマンドに `-U lfuse:w:0xFF:m -U hfuse:w:0xD8:m -U efuse:w:0xCB:m` を追加します。
275これで、最終的なコマンドは次のようになるはずです。
276
277 avrdude -c avrisp -P COM3 -p atmega32u4 -U flash:w:main.hex:i -U lfuse:w:0xFF:m -U hfuse:w:0xD8:m -U efuse:w:0xCB:m
278
279
280別のコントローラーを使用している場合や、別の設定を希望する場合は、この[AVR ヒューズ計算機](http:/www.engbedded.comfusecalc)を使用して、より適切な値を見つけることができます。
281
282## ヘルプ
283
284ご質問・ご不明な点がありましたら、お気軽に[issue を開いてください](https://github.com/qmk/qmk_firmware/issues/new)!