ColdFire MCF52233 基板 (8)

8 月 8 日付けの記事の中の

  • ダイレクト実行の途中でハングアップする

については、回避する方法が見つかりました。
きっかけは、トラックバックを頂いた「masato」さんの記事「インターフェース誌 ColdFire 基板(6)」の中で、途中に Sleep(1); をはさむとハングアップしなくなったという記述です。
Sleep() だと最小でも 10 ms のウェイトが入ってしまうので、他のスレッドに (明示的に) 制御を渡すだけの SystemSleep() をはさんだ、

{int i;for(i=0;i<32767;i++){PrHexWord(i);PrStr("\r\n");SystemSleep();}}

を実行させると、途中でハングアップせず、最後まで実行されることが分かりました。
最後まで実行させると 10 分程度かかるので、何百回もやってみたわけではありませんが、十数回の実行では一回もハングアップすることはなく、直後に SystemSleep() なしで実行させると確実にハングアップしました。
おそらく、他のスレッドに制御を渡さずに実行を続けると、「何か」がサービスされずに残って、それが数分間蓄積されるとプログラムの停止を招くものと思われます。
シリアル経由では出力が早いので、ダイレクト実行停止に至る前に実行が終了し、telnet 経由では出力が遅いのでダイレクト実行中に停止してしまうのでしょう。
「何か」が何であるかは分かりません。
とりあえず、ハード的な問題や、熱的な問題ではなさそうなので、回避方法が分かっただけで良しとします。