Everything

第13章  システム・ダウン


本章では,RI600V4が提供しているシステム・ダウン機能について解説しています。
13.1 概要
RI600V4の稼働中に回復不可能な事象が発生するとシステム・ダウンとなり,システム・ダウン・ルーチンが呼び出されます。
13.2 ユーザ・オウン・コーディング部
システム・ダウン・ルーチンは,ユーザ・オウン・コーディング部として実装する必要があります。
備考 RI600V4で提供するサンプルでは,ブート処理ファイル“resetprg.c”内にシステム・ダウン・ルーチン(_RI_sys_dwn__( ) )を実装しています。
13.2.1 システム・ダウン・ルーチン(_RI_sys_dwn__( ) )
以下に,システム・ダウン・ルーチンを記述する場合の基本型を示します。システム・ダウン・ルーチンからリターンしてはなりません。
 #include        "kernel.h"              /*標準ヘッダ・ファイルの定義*/
 #include        "kernel_id.h"           /*cfg600が出力するヘッダ・ファイルの定義*/
 
                                         /* プロトタイプ宣言 */
 void _RI_sys_dwn__ ( W type, VW inf1, VW inf2, VW inf3 );
 
 void _RI_sys_dwn__ ( W type, VW inf1, VW inf2, VW inf3 )
 {
         ............
         ............
 
         while(1);
 }

備考 システム・ダウン・ルーチンの関数名は“_RI_sys_dwn__”です。
- スタック
システム・ダウン・ルーチンは,システム・スタックを使用します。
- サービス・コールの発行
システム・ダウン・ルーチンからサービス・コールを呼び出してはなりません。
- 処理開始時のPSW
表13-1  システム・ダウン・ルーチン処理開始時のPSW
ビット

備考
I
0
IPL
- type < 0の場合:不定
- type≧0の場合:システム・ダウン発生前と同じ
処理開始時より下げてはなりません。
PM
0
スーパバイザ・モード
U
0
システム・スタック
C, Z, S, O
不定
その他
0

13.2.2 システム・ダウン・ルーチンのパラメータ
- type == -1(カーネル管理割り込みハンドラ終了時のエラー)
表13-2  システム・ダウン・ルーチンのパラメータ(type == -1)
inf1
inf2
inf3
解説
E_CTX(-25)
2
不定
カーネル管理割り込みハンドラ終了時点で,PSW.PMが1(ユーザ・モード)である。
3
不定
カーネル管理割り込みハンドラ終了時点で,PSW.IPL>カーネル割り込みマスクレベルである。
5
不定
カーネル管理割り込みハンドラ終了時点で,CPUロック状態である。

- type == -2(ext_tskのエラー)
表13-3  システム・ダウン・ルーチンのパラメータ(type == -2)
inf1
inf2
inf3
解説
E_CTX(-25)
1
不定
非タスク・コンテキストからext_tskを呼び出した。
4
不定
ext_tsk呼び出し時点で,PSW.IPL>カーネル割り込みマスクレベルである。

- type == -3(組み込まれていないサービス・コールの呼び出し)
表13-4  システム・ダウン・ルーチンのパラメータ(type == -3)
inf1
inf2
inf3
解説
E_NOSPT(-9)
不定
不定
組み込まれていないサービス・コールを呼び出した。

- type == -16(未定義の可変ベクタ割り込み)
表13-5  システム・ダウン・ルーチンのパラメータ(type == -16)
inf1
inf2
inf3
- cfg600で“-U ”オプションを指定しない場合
不定
- cfg600 で“-U ”オプションを指定した場合
ベクタ番号
CPUの割り込み処理によってスタックに退避されたPC
CPUの割り込み処理によってスタックに退避されたPSW

- type == -17(未定義の固定ベクタ/例外ベクタ割り込み)
表13-6  システム・ダウン・ルーチンのパラメータ(type == -17)
inf1
inf2
inf3
- cfg600で“-U ”オプションを指定しない場合
不定
- cfg600 で“-U ”オプションを指定した場合
ベクタ番号
CPUの割り込み処理によってスタックに退避されたPC
CPUの割り込み処理によってスタックに退避されたPSW

- type > 0(アプリケーションからのvsys_dwnivsys_dwnの呼び出し)
0,および負のtype値はRI600V4用に予約されています。アプリケーションからvsys_dwnivsys_dwnを呼び出す場合は,正のtype値を使用してください。
表13-7  システム・ダウン・ルーチンのパラメータ(type > 0)
inf1
inf2
inf3
vsys_dwn, ivsys_dwnに指定した値