冗長コード削除

冗長コード

Bug #5724の冗長なコードを削除しました。これは管理外割り込み時のimask復帰コードの中に、冗長なコードがあったというものです。機能的なバグではなく2サイクル消費していただけです。
コードは削除しました。当然ですが機能に影響はありません。USE_NON_MANAGED_INTを宣言していない場合は、サイクル数も変わりません。

ハードウェア・エラー割り込み

ハードウェア・エラー割り込みの取り扱いは変更する必要があります。現在、この割り込みのハンドラは通常の割り込み同様にDEF_INHによって登録できます。しかしながら、ハードウェア・エラー割り込みはコア内部の割り込みであるため、ウェイクアップ信号を生成しません。その結果何が発生するかというと、次の条件がすべて満たされた場合にハードウェア・エラー割り込みの取りこぼしが起きます

  • ディスパッチするタスクがない
  • ディスパッチャ内部でidle命令により割り込みを待っている

この状態では割り込みが禁止されているため、ハードウェア・エラー割り込みは受け付けられず、idleから脱出できません。idle状態はタイマーからの信号によって解除されますのでとりこぼしがおきても処理が再開し、ハードウェア・エラーの処理も行われます。しかし最大1m秒の遅延が入ります。
この問題はGPタイマーを使うときにのみ現れます。対策として、USE_HWERR_INTのようなマクロを使って、この割り込みハンドラを使うときにはGPタイマーを使うときにもidleではなくnop命令で割り込みを待つようにします。また、コア・タイマーを使っているときにINHNO_HW_ERRORを使うと実行時エラーが出るようにしておくと安全です。

リリース 1.2.2

TOPPERS/JSP 1.4.1用Blackfin依存部 1.2.2をリリースしました。これまでのバグ修正のほか、上記の対策が盛り込まれています。近いうちにリリースパッケージと文書をアップデートします。
BF533に関しては気になること全部おわったなー。