/******************************************************************************* * * * モジュール名称 :冗長側DPUレジスタリセット * * モジュールラベル :rap_sv_resetRdnDpu * * タスク区分 :冗長ライブラリ * * 機能 :アプリケーションから冗長側DPUをコントロールできるよう* * 設定する * * * * コーリングシーケンス:int rap_sv_resetRdnDpu( errLogAddr ) * * 引数 :unsigned int errLogAddr :エラーログベースアドレス * * (0x08100000〜0x17F00000、1M バイト単位指定) * * 戻り値 :処理結果 ( <0 :異常 , 0:正常) * * 0 :正常終了 * * -1 :errLogAddr が指定範囲外のため、実行できない。 * * -2 :上記以外の異常により、実行できない。 * * 使用上の注意 :引数チェックしないので上位モジュールですること * * エラー処理 :戻り値に負値を代入し処理を継続する * * * *******************************************************************************/ #include "dpu_api.h" #include "dpu_api_proto.h" #include "rap_api.h" #include "rap_define.h" /* define定義 */ #include "rap_variable.h" /* グローバル変数宣言 */ #include "rap_func.h" /* 関数プロトタイプ宣言 */ #define BUFF_SIZE 9 int rap_sv_resetRdnDpu( unsigned int errLogAddr ) { unsigned short us_setValue[BUFF_SIZE]; /* レジスタ設定値格納 */ unsigned int ui_size = RA_d_SHORT * BUFF_SIZE; /* 格納領域サイズ */ int i_sendResult; /* 引数チェック */ if( errLogAddr < 0x08100000 || errLogAddr > 0x17F00000 || ( errLogAddr % 0x00100000 ) != 0 ) { return -1; } /* Data Strage初期化・レジスタ :Data Strage初期化 */ us_setValue[0] = 0x5A01; /* Data Strage EDACエラーステータス・レジスタ:エラーステータスクリア */ us_setValue[1] = 0x0003; /* Data Strage EDAC エラーアドレス・レジスタ :(設定対象外) */ us_setValue[2] = 0x0000; us_setValue[3] = 0x0000; /* SUN PULSEモード切替・レジスタ :冗長Slave */ us_setValue[4] = 0x5A00; /* SUN PULSE 出力フラグ・レジスタ :(設定対象外) */ us_setValue[5] = 0x0000; /* エラーログベースアドレス・レジスタ :errLogAddr に従う値に設定 */ us_setValue[6] = (unsigned short)((( errLogAddr - RA_d_SDRAM_BASE_ADDR ) >> 16) & 0x0FF0 ); /* Logical Address 設定・レジスタ :0x20 */ us_setValue[7] = 0x0020; /* Destination Key 設定・レジスタ :0x00 */ us_setValue[8] = 0x0000; i_sendResult = rap_cmm_setRdnRegister( (unsigned char *)us_setValue, RA_d_MSIF_REG_BASE_ADDR, RA_d_DPUREG_DSINIT, // 書込み先の先頭レジスタ ui_size ); if( i_sendResult < 0 ) { // ---comment out:110615 --- rap_cmm_putDbgTlm( i_sendResult ); return -2; } /* 終了 */ return 0; }