ホストとターゲット間のシリアルおよび USB 接続に問題があります。以下は私のセットアップです。ホストとターゲットの両方にシリアル (DB9) ポートはありません。
ホスト : 実行中の Windows + VMshare + Ubuntu
ターゲット: Linux カーネル 3.19 を実行しています。シリアルポートとして機能するMINI USBポートがあり、それだと思います(CP210x uart to usb)
接続 1 : ホスト (USB から DB9 オス - PL2303) + DB9 メスからメス + (DB9 オスから USB) ターゲット。
接続 2 : ホスト (USB) --ケーブル-- (USB ミニ) ターゲット
ホスト ( ubuntu VM ) は、USB デバイス (両方の接続タイプ) を /dev/ttyUSB0 として認識できます。VM がデバイス制御を引き継ぐため、デバイスは Windows デバイス マネージャに表示されません。
ターゲットが UEFI シェルで起動します。syslinux.cfg ファイルを変更して、「kgdbwait kgdboc =ttyS0, 115200」を APPEND フラグに追加します。変更を保存して ( F2 を押す)、終了します ( F3 を押します)。イメージを起動します。ターゲットは、次のメッセージとともに kdb プロンプトに入ります
kgdb: Waiting for connection from remote gdb...
Entering kdb ( current= <64bit address>, pid 1) on processor 0 due to Keyboard Entry
Kgdb > _
ホスト側で、次のコマンドを実行すると、以下がエラーになります
root@ubuntu: cd /images
root@ubuntu: sudo gdb ./vmlinux
Reading symbols from ./vmlinux done.
(gdb)
(gdb) target remote /dev/ttyUSB0
Remote debugging using /dev/ttyUSB0
Ignoring packet error, continuing...
warning: unrecognized item "timeout" in "qSupported" response
Ignoring packet error, continuing...
Ignoring packet error, continuing...
Bogus trace status reply from target: timeout
私が試した実験
- ホストで「 target remote /dev/ ttyS0」を使用しましたが、同じ問題が発生しました
- 上記の各接続 ( 1 および 2 ) で異なるケーブルを試しました
- ターゲットで UEFI シェルの syslinux.cfg ファイルの編集を削除し、イメージを起動して、「echo g > /proc/sysrq-trigger」を使用して kgdb に入りました。
- KGDB* 、KGDB_SERIAL*、KGDB_USB* に関連するすべてのカーネル構成が有効になっています
- 利用可能なすべてのボーレート
質問
- 「kgdbwait kgdboc= ttyS0 , 115200」の代わりに「kgdbwait kgdboc= ttyUSB0 , 115200」を使用すると、ターゲットは停止しません。ターゲットが完全に起動してログイン プロンプトが表示されると、接続 1 を使用すると、デバイスが ttyUSB0 として認識されることがわかります。または USB デバッグの場合、直接 USB--USB ワイヤ (接続 3) を使用する必要がありますか?
- syslinux.cfg は USB デバッグをサポートしていますか? 値「0、115200」を持つSERIALフラグがあるため、0はttyS0を指します。syslinux のドキュメントには、USB タイプ デバイスの値がありません。
- 接続 2 を使用すると、タイムアウトやパケット エラーの問題が発生するのはなぜですか
- ときどき接続 2 で、ホスト上で「 target remote /dev/ttyUSB0 」を実行すると、ターゲット上にジャンク文字があることに気付きます。そのため、何らかの通信が行われているため、さまざまなボーレートを試しても同じ問題が発生しました。これは、セットアップに本質的な問題があることを示していますか?
- 多くのオンライン フォーラム/ドキュメントでは、カーネルが kdb プロンプトに入ったときに「キーボード入力による kdb の入力」が表示されません。これは異常ですか?