GDBによるターゲットのリセットに関する進展

これまで、TOPPERS/JSP for BlackfinアプリケーションはGDBからプログラムをロードする場合に非常に面倒な手続きが必要でした。
この理由は、GDBからのターゲットリセットがうまくいかないことになりました。TOPPERS/JSPアプリケーションはリセット状態から動作することを前提としているため、プログラムの実行開始状態が例外や割り込みといった実行レベルにあると、正しく動作しません。また、内部ペリフェラルレジスタの状態によっては、やはり正しく動作しないことが考えられます。
VisualDSP++のICEは、この点を明示的に操作できますし、きちんとリセットできます。しかし、これまでbfin-gdbproxyとbfin-elf-gdbのペアではきちんとしたリセットができませんでした。ツールチェーンのビルド/開発もとであるBlackfin Koopにも聞いてみましたが、要領をえませんでした。
さて、今回maduki_kさんによるADSP-BF506へのTOPPERS/JSPへの移植が行われていることを契機に、再度ブートコードやbfin-gdbproxy、bfin-jtagを見直しました。そして、bfin-jtagのコマンドのhelpからたどって、どうやら、bfin-elf-gdbを使ってターゲットを正常にリセットすることができたようです。
手順は以下のようになります。
最初にbfin-gdbproxyを使ってターゲットに接続します。
次にbfin-elf-gdbを起動し、以下のコマンドでターゲットに接続します。

(gdb) target remot localhost:2000

ここまでは今までと変わりません。ここで次のコマンドを発行します。

(gdb) monitor urjtag bfin reset

これで、gdbproxyに組み込まれているurjtagから、blackfinに向けてリセットコマンドを発行します。この後、アプリケーションをロードして実行すると、正しく実行されました。まだ短い試験しか行っていませんが、どうやら大丈夫のようです。
うまくいくならトリッキーなデバッグ時ブートに頼る必要がなくなります。