aboutsummaryrefslogtreecommitdiff
path: root/docs/ja/faq_debug.md
diff options
context:
space:
mode:
Diffstat (limited to 'docs/ja/faq_debug.md')
-rw-r--r--docs/ja/faq_debug.md181
1 files changed, 86 insertions, 95 deletions
diff --git a/docs/ja/faq_debug.md b/docs/ja/faq_debug.md
index 95293fed2..236f43a6e 100644
--- a/docs/ja/faq_debug.md
+++ b/docs/ja/faq_debug.md
@@ -1,140 +1,131 @@
1# デバッグの FAQ 1# デバッグの FAQ
2 2
3<!--- 3<!---
4 original document: 0.10.33:docs/faq_debug.md 4 original document: 0.12.45:docs/faq_debug.md
5 git diff 0.10.33 HEAD -- docs/faq_debug.md | cat 5 git diff 0.12.45 HEAD -- docs/faq_debug.md | cat
6--> 6-->
7 7
8このページは、キーボードのトラブルシューティングについての様々な一般的な質問を説明します。 8このページは、キーボードのトラブルシューティングについての様々な一般的な質問を説明します。
9 9
10# デバッグコンソール 10## デバッグ :id=debugging
11 11
12## `hid_listen` がデバイスを認識できない 12`rules.mk` へ `CONSOLE_ENABLE = yes` の設定をするとキーボードはデバッグ情報を出力します。デフォルトの出力は非常に限られたものですが、デバッグモードをオンにすることでデバッグ情報の量を増やすことが出来ます。キーマップの `DEBUG` キーコードを使用するか、デバッグモードを有効にする[コマンド](ja/feature_command.md)機能を使用するか、以下のコードをキーマップに追加します。
13デバイスのデバッグコンソールの準備ができていない場合、以下のように表示されます:
14 13
15``` 14```c
16Waiting for device:......... 15void keyboard_post_init_user(void) {
16 // 希望する動作に合わせて値をカスタマイズします
17 debug_enable=true;
18 debug_matrix=true;
19 //debug_keyboard=true;
20 //debug_mouse=true;
21}
17``` 22```
18 23
19デバスが接続されると、*hid_listen* がを見つけ、以下のが表示されます: 24## デバッ
20 25
21``` 26キーボードのデバッグに使えるツールは2つあります。
22Waiting for new device:.........................
23Listening:
24```
25 27
26この 'Listening:' のメッセージが表示されない場合は、[Makefile] を `CONSOLE_ENABLE=yes` に設定してビルドしてみてください 28### QMK Toolbox を使ったデバッグ
27 29
28Linux のような OS でデバイスにアクセスするには、権限が必要かもしれません。 30互換性のある環境では、[QMK Toolbox](https://github.com/qmk/qmk_toolbox) を使うことでキーボードからのデバッグメッセージを表示できます。
29- `sudo hid_listen` を試してください
30 31
31## コンソールにメッセージが表示されない 32### hid_listen を使ったデバッグ
32以下を調べてください:
33- *hid_listen* がデバイスを検出する。上記を見てください。
34- **Magic**+d を使ってデバッグを有効にする。[マジックコマンド](https://github.com/tmk/tmk_keyboard#magic-commands)を見てください。
35- `debug_enable=true` を設定します。[テストとデバッグ](ja/newbs_testing_debugging.md#debugging)を見てください
36- デバッグ print の代わりに 'print' 関数を使ってみてください。**common/print.h** を見てください。
37- コンソール機能を持つ他のデバイスを切断します。[Issue #97](https://github.com/tmk/tmk_keyboard/issues/97) を見てください。
38 33
39*** 34ターミナルベースの方法がお好みですか?PJRC が提供する [hid_listen](https://www.pjrc.com/teensy/hid_listen.html) もデバッグメッセージの表示に使用できます。ビルド済みの実行ファイルは Windows、Linux、MacOS 用が用意されています。
40 35
41# 雑多なこと 36## 独自のデバッグメッセージを送信する
42## 安全性の考慮
43 37
44あなたはおそらくキーボードを「文鎮化」したくないでしょう。文鎮化するとファームウェアを書き換えられないようになります。リスクがあまりに高い(そしてそうでないかもしれない)ものの一部のリストを示します。 38[カスタムコード](ja/custom_quantum_functions.md)内からデバッグメッセージを出力すると便利な場合があります。それはとても簡単です。ファイルの先頭に `print.h` のインクルードを追加します:
45 39
46- キーボードマップに RESET が含まれない場合、DFU モードに入るには、PCB のリセットボタンを押す必要があります。底部のネジを外す必要があります。 40```c
47- tmk_core / common にあるファイルを触るとキーボードが操作不能になるかもしれません。 41#include "print.h"
48- .hex ファイルが大きすぎると問題を引き起こします; `make dfu` コマンドはブロックを削除し、
49サイズを検査し(おっと、間違った順序です!)、エラーを出力し、
50キーボードへの書き込みに失敗し、DFU モードのままになります。
51 - この目的のためには、Planck の最大の .hex ファイルサイズは 7000h (10進数で28672)であることに注意してください。
52
53```
54Linking: .build/planck_rev4_cbbrowne.elf [OK]
55Creating load file for Flash: .build/planck_rev4_cbbrowne.hex [OK]
56
57Size after:
58 text data bss dec hex filename
59 0 22396 0 22396 577c planck_rev4_cbbrowne.hex
60``` 42```
61 43
62- 上のファイルのサイズは 22396/577ch で、28672/7000h より小さいです 44その後は、いくつかの異なった print 関数を使用することが出来ます:
63- 適切な替わりの .hex ファイルがある限り、それをロードして再試行することができます
64- あなたがキーボードの Makefile で指定したかもしれない一部のオプションは、余分なメモリを消費します; BOOTMAGIC_ENABLE、MOUSEKEY_ENABLE、EXTRAKEY_ENABLE、CONSOLE_ENABLE、API_SYSEX_ENABLE に注意してください
65- DFU ツールは(オプションの余計なフルーツサラダを投げ込まない限り)ブートローダに書き込むことを許可しないので、
66ここにはリスクはほとんどありません。
67- EEPROM の書き込みサイクルは、約100000です。ファームウェアを繰り返し継続的に書き換えるべきではありません。それは最終的に EEPROM を焼き焦がします。
68 45
69## NKRO が動作しません 46* `print("string")`: シンプルな文字列を出力します
70最初に、**Makefile** 内でビルドオプション `NKRO_ENABLE` を使ってファームウェアをコンパイルする必要があります。 47* `uprintf("%s string", var)`: フォーマットされた文字列を出力します
48* `dprint("string")` デバッグモードが有効な場合のみ、シンプルな文字列を出力します
49* `dprintf("%s string", var)`: デバッグモードが有効な場合のみ、フォーマットされた文字列を出力します
71 50
72**NKRO** がまだ動作しない場合は、`Magic` **N** コマンド(デフォルトでは `LShift+RShift+N`)を試してみてください。**NKRO** モードと **6KRO** モード間を一時的に切り替えるためにこのコマンドを使うことができます。**NKRO** が機能しない状況、特に BIOS の場合は **6KRO** モードに切り替える必要があります。 51## デバッグの例
73 52
74ファームウェアを `BOOTMAGIC_ENABLE` でビルドした場合、`ブートマジック` **N** コマンドで切り替える必要があります (デフォルトでは `Space+N`)。この設定は EEPROM に格納され、電源を入れ直しても保持されます。 53以下は現実世界での実際のデバッグ手法の例を集めたものです。
75 54
76https://github.com/tmk/tmk_keyboard#boot-magic-configuration---virtual-dip-switch 55### マトリックス上のどの場所でキー押下が起こったか?
77 56
57移植する場合や、PCB の問題を診断する場合、キー入力が正しくスキャンされているかどうかを確認することが役立つ場合があります。この手法でのロギングを有効化するには、`keymap.c` へ以下のコードを追加します。
78 58
79## TrackPoint はリセット回路が必要です (PS/2 マウスサポート) 59```c
80リセット回路が無いとハードウェアの不適切な初期化のために一貫性の無い結果になります。TPM754 の回路図を見てください。 60bool process_record_user(uint16_t keycode, keyrecord_t *record) {
61 // コンソールが有効化されている場合、マトリックス上の位置とキー押下状態を出力します
62#ifdef CONSOLE_ENABLE
63 uprintf("KL: kc: 0x%04X, col: %u, row: %u, pressed: %b, time: %u, interrupt: %b, count: %u\n", keycode, record->event.key.col, record->event.key.row, record->event.pressed, record->event.time, record->tap.interrupted, record->tap.count);
64#endif
65 return true;
66}
67```
81 68
82- https://geekhack.org/index.php?topic=50176.msg1127447#msg1127447 69出力例
83- https://www.mikrocontroller.net/attachment/52583/tpm754.pdf 70```text
71Waiting for device:.......
72Listening:
73KL: kc: 169, col: 0, row: 0, pressed: 1
74KL: kc: 169, col: 0, row: 0, pressed: 0
75KL: kc: 174, col: 1, row: 0, pressed: 1
76KL: kc: 174, col: 1, row: 0, pressed: 0
77KL: kc: 172, col: 2, row: 0, pressed: 1
78KL: kc: 172, col: 2, row: 0, pressed: 0
79```
84 80
81### キースキャンにかかる時間の測定
85 82
86## 16 を超えるマトリックの列を読み込めない 83パフォーマンスの問題をテストする場合、スイッチマトリックスをスキャンする頻度を知ることが役立ちます。この手法でのロギングを有効化するには `config.h` へ以下のコードを追加します。
87列が 16 を超える場合、[matrix.h] の `read_cols()` 内の `1<<16` の代わりに `1UL<<16` を使ってください。
88 84
89C では、AVR の場合 `1` は [16 bit] である [int] 型の1を意味し、15 を超えて左にシフトすることはできません。`1<<16` すると予期しないゼロが発生します。`1UL` として [unsigned long] 型を使う必要があります。 85```c
86#define DEBUG_MATRIX_SCAN_RATE
87```
90 88
91https://deskthority.net/workshop-f7/rebuilding-and-redesigning-a-classic-thinkpad-keyboard-t6181-60.html#p146279 89出力例
90```text
91 > matrix scan frequency: 315
92 > matrix scan frequency: 313
93 > matrix scan frequency: 316
94 > matrix scan frequency: 316
95 > matrix scan frequency: 316
96 > matrix scan frequency: 316
97```
92 98
93## 特別動作ない (システム、オーディオコントロールキー) 99## `hid_listen` ない
94QMK `rules.mk` 内 `EXTRAKEY_ENABLE` ます 100イスバッ準備ていない以下表示ます:
95 101
96``` 102```
97EXTRAKEY_ENABLE = yes # オーディオ制御とシステム制御 103Waiting for device:.........
98``` 104```
99 105
100## スリープから復帰しない 106デバイスが接続されると、*hid_listen* がデバイスを見つけ、以下のメッセージが表示されます:
101
102Windows では、**デバイスマネージャ**の**電源の管理**タブ内の `このデバイスで、コンピュータのスタンバイ状態を解除できるようにする` 設定を調べてください。また BIOS 設定も調べてください。
103
104スリープ中に任意のキーを押すとホストが起動するはずです。
105
106## Arduino を使っていますか?
107
108**Arduino のピンの命名は実際のチップと異なることに注意してください。** 例えば、Arduino のピン `D0` は `PD0` ではありません。回路図を自身で確認してください。
109
110- https://arduino.cc/en/uploads/Main/arduino-leonardo-schematic_3b.pdf
111- https://arduino.cc/en/uploads/Main/arduino-micro-schematic.pdf
112
113Arduino の Leonardo と micro には **ATMega32U4** が載っていて、TMK 用に使うことができますが、Arduino のブートローダが問題になることがあります。
114
115## JTAG を有効にする
116
117デフォルトでは、キーボードが起動するとすぐに JTAG デバッグインタフェースが無効になります。JTAG 対応 MCU は `JTAGEN` ヒューズが設定された状態で出荷されており、キーボードがスイッチマトリックス、LED などに使用している可能性のある MCU の特定のピンを乗っ取ります。
118
119JTAG を有効にしたままにしたい場合は、単に以下のものを `config.h` に追加します:
120 107
121```c 108```
122#define NO_JTAG_DISABLE 109Waiting for new device:.........................
110Listening:
123``` 111```
124 112
125## USB 3 の互換性 113この 'Listening:' のメッセージが表示されない場合は、[Makefile] を `CONSOLE_ENABLE=yes` に設定してビルドしてみてください
126USB 3 ポートで問題がある人がいると聞きました。USB 2 ポートを試してください。
127
128 114
129## Mac の互換性 115Linux のような OS でデバイスにアクセスするには、特権が必要かもしれません。`sudo hid_listen` を試してください。
130### OS X 10.11 と Hub
131https://geekhack.org/index.php?topic=14290.msg1884034#msg1884034
132 116
117多くの Linux ディストリビューションでは、次の内容で `/etc/udev/rules.d/70-hid-listen.rules` というファイルを作成することで、root として hid_listen を実行する必要がなくなります:
133 118
134## リジューム (スリープとウェークアップ)/電源サイクルの問題 119```
135一部の人がキーボードが BIOS で動作しなくなった、またはリジューム(電源サイクル)の後で動作しなくなったと報告しました。 120SUBSYSTEM=="hidraw", ATTRS{idVendor}=="abcd", ATTRS{idProduct}=="def1", TAG+="uaccess", RUN{builtin}+="uaccess"
121```
136 122
137今のところ、この問題の根本は明確ではないですが、幾つかのビルドオプションが関係しているようです。Makefileで、`CONSOLE_ENABLE`、`NKRO_ENABLE`、`SLEEP_LED_ENABLE` あるいは他のオプションを無効にしてみてください。 123abcd と def1 をキーボードのベンダーとプロダクト IDに置き換えてください。文字は小文字でなければなりません。`RUN{builtin}+="uaccess"` の部分は、古いディストリビューションでのみ必要です。
138 124
139https://github.com/tmk/tmk_keyboard/issues/266 125## コンソールにメッセージが表示されない
140https://geekhack.org/index.php?topic=41989.msg1967778#msg1967778 126以下を調べてください:
127- *hid_listen* がデバイスを検出する。上記を見てください。
128- **Magic**+d を使ってデバッグを有効にする。[マジックコマンド](https://github.com/tmk/tmk_keyboard#magic-commands)を見てください。
129- `debug_enable=true` を設定します。[デバッグ](#debugging)を見てください。
130- デバッグプリントの代わりに `print` 関数を使ってみてください。**common/print.h** を見てください。
131- コンソール機能を持つ他のデバイスを切断します。[Issue #97](https://github.com/tmk/tmk_keyboard/issues/97) を見てください。