gdbstub その 2

gdbstub その 2

gdbstub は TRAPA 実行 -> 例外発生 -> 例外ハンドラでレジスタ保存 -> gdb に signal 要求 -> gdb が signal 受信 -> gdb が g コマンド発行(レジスタダンプ) -> 保存したレジスタを応答 -> だがしかし gdb は表示していない。

という流れのようだ。表示されているアドレスは例外発生時にスタックに push した値だと思う(これがブレークした際のアドレスに相当するのだろう)。

今は Linux マシンで gdb を起動しているが、Flash 書き込みに Windows 用の FDT を使用しているので今だけは Windows 用の gdb を使用したい。それでないといちいちマシン間でケーブルを接続しなおさなければならない。しかしシリアルによるリモート target remote XXX の指定では /dev/ttyS0 というファイルを期待しているようなので Windows で認識できない。gdb のソースには #ifdef USE_WIN32API というくだりがあるので仕組みは用意されているようだが KPIT のツールでは考慮されていないのではないか。cygwinコンパイルする際に WIN32API が利用できるのかも謎だし。でも COM0 から /dev/ttyS0 への変換は cygwin の dll がなんとかしてくれるような気がするのだが。Linux の書き込みソフトを作るか、python で Serial2TCP ブリッジを作れば解決なんだけどなぁ。Linux 用の書き込みツールは open なんとかというのがあるのだが ブートモード用のソースは公開されていなくて閉口した。