gdbproxy からのリセット発行
試していないけれど,UrJTAGの src/cmd/cmd_bfin.c 辺りからつらつらと眺めた感じだと,たぶん大丈夫なはず.
これで、gdbproxyに組み込まれているurjtagから、blackfinに向けてリセットコマンドを発行します。この後、アプリケーションをロードして実行すると、正しく実行されました。まだ短い試験しか行っていませんが、どうやら大丈夫のようです。
BF506 に関してはよくわからないものの,一つ心当たりがあるとするならば,追加引数.
BF506Fに進展があれば!と早速調査。
結果変わらず。orz
リセットはかかってるようなんだけどな。
(KOOP版は本家UrJTAGからのブランチなので,コードが全く同一なのかは調べていないが,本家にはあるので)追加引数として,{core|reset} を与えることができる(はず).
/* 本家の src/cmd/cmd_bfin.c から抜粋 */ if (num_params == 3) { if (!strcmp (params[2], "core")) reset_what |= 0x1; else if (!strcmp (params[2], "system")) reset_what |= 0x2; else { urj_error_set (URJ_ERROR_BFIN, "bad parameter '%s'", params[2]); return URJ_STATUS_FAIL; } } else if (num_params == 2) reset_what = 0x1 | 0x2; else { urj_error_set (URJ_ERROR_BFIN, "'bfin emulation' requires 0 or 1 parameter, not %d", num_params - 2); return URJ_STATUS_FAIL; } urj_log (URJ_LOG_LEVEL_NORMAL, _("%s: reseting processor ... "), "bfin"); fflush (stdout); if (reset_what == 0x3) software_reset (chain); else if (reset_what & 0x1) bfin_core_reset (chain); else if (reset_what & 0x2) chain_system_reset (chain); urj_log (URJ_LOG_LEVEL_NORMAL, _("OK\n")); return URJ_STATUS_OK; }
リセットの発行順序や間隔が影響しているのであれば,追加引数でなんとかなるのかもしれない(でも試してはいない).