Renesas Synergy™

FAQ 1006528 : プログラム書き込みをしない空き領域は、どのように処理すればいいですか。

空き領域はアクセスしないので、特にどうしなければならないということはありません。ただし、PROMやフラッシュ・メモリの初期状態はFFHになっているので、プログラムを書き込まない空き領域はFFHのままです。
なお、当社でのマスクROM受注やフラッシュ書き込み受注の場合、未使用領域が不定ではベリファイ工程で問題が発生する可能性があるので、未使用領域を PROMやフラッシュ・メモリの初期値と同じFFHで埋めていただくように決めています。ただし、未使用領域をNOP命令のコードで埋めれば、そこもプロ グラムの一部と考えられ、未使用領域はなくなるので、「未使用領域をFFHで充填した」とみなせます。

この領域のコードによって、CPUの動作に違いを生じる可能性があるのは、ノイズによるプログラム・カウンタの内容化けやプログラム・ミスによる暴走のときです。これによって、どこに飛んでしまうかは特定できませんが、飛び先がプログラムの空き領域であれば、その内容を命令コードとみなして実行しようとします。
78K/0シリーズでは、FFHがCALLT命令(addr5=007EH)なので、エラー処理ルーチンを用意しておいて、007EH,007FH番地にそのアドレスを書き込めば、エラー処理へ分岐することになります。
他の78KシリーズやV850シリーズでは、FFHが未定義コードだったり例外トラップ対象だったりするので、空き領域をNOP命令で埋めて、末尾にエ ラー処理ルーチンを用意(全域をプログラム化)する処置が考えられます(78K/0でも有効)。このとき、V850、78K0/Kx2シリーズなどでは、 特にエラー処理ルーチンを用意しなくても、プログラム領域を越えてフェッチしようとしたときにリセットがかかります(この機能がない78Kシリーズでは、 フェッチ・コードが特定できず動作不定)。



なお、誤動作(内部各ブロックの状態を特定できない)が原因なので、エラー処理での表示(データ出力)動作などは保証されません。最終的にはリセットによ る再起動が必要なので、エラー処理の最後は無限ループにして、ウォッチドッグ・タイマでリセットすれば、デッドロックは回避できます。

以上は、たまたま暴走時の飛び先がプログラムの空き領域の場合の動作です。アプリケーション・プログラム書き込み領域や、78K/0、78K/0Sシリー ズでプログラム領域でない領域に飛べば、動作は特定できません。ウォッチドッグ・タイマでのリセットは効果的ですが、ノイズの影響を受けないハードウエア やミスのないソフトウエアといった設計品質が重要です。

 

他にご質問がございましたら、リクエストを送信してください