IKUZOと申します、RX631のメモリプロテクションユニットの使用方法がわかりません、サンプルコードも探したのですが該当が無いようです、アドバイスをいただけませんでしょうか?
ここで一応mpu.cのソースを開示します /////////////////////////////////////////////////////////////////////// //アクセス例外 /////////////////////////////////////////////////////////////////////// uint32_t g_mpu_err_instruction_adrs; void Access_Inst(void) { sci2_put('*'); MPU.MPECLR.BIT.CLR=1; } /////////////////////////////////////////////////////////////////////// //アクセス例外 /////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////// //スーパバイザモードからユーザモードに変更 /////////////////////////////////////////////////////////////////////// void Change_PSW_PM_to_UserMode(void) { MVFC PSW,R1 OR #00100000h,R1←ユザーモードフラグ(コメントアウトするとスパーバイザー) PUSH.L R1 MVFC PC,R1 ADD #10,R1 PUSH.L R1 RTE NOP NOP NOP NOP NOP NOP } /////////////////////////////////////////////////////////////////////// //スーパバイザモードからユーザモードに変更 /////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////// //MPUの初期化 /////////////////////////////////////////////////////////////////////// void mpu_init(void) { MPU.RSPAGE0.LONG=0; MPU.REPAGE0.BIT.REPN=0; MPU.REPAGE0.BIT.UAC=7; MPU.REPAGE0.BIT.V=0; MPU.RSPAGE1.LONG=0; MPU.REPAGE1.BIT.REPN=0; MPU.REPAGE1.BIT.UAC=7; MPU.REPAGE1.BIT.V=0; MPU.RSPAGE2.LONG=0; MPU.REPAGE2.BIT.REPN=0; MPU.REPAGE2.BIT.UAC=7; MPU.REPAGE2.BIT.V=0; MPU.RSPAGE3.LONG=0; MPU.REPAGE3.BIT.REPN=0; MPU.REPAGE3.BIT.UAC=7; MPU.REPAGE3.BIT.V=0; MPU.RSPAGE4.LONG=0; MPU.REPAGE4.BIT.REPN=0; MPU.REPAGE4.BIT.UAC=7; MPU.REPAGE4.BIT.V=0; MPU.RSPAGE5.LONG=0; MPU.REPAGE5.BIT.REPN=0; MPU.REPAGE5.BIT.UAC=7; MPU.REPAGE5.BIT.V=0; MPU.RSPAGE6.LONG=0; MPU.REPAGE6.BIT.REPN=0; MPU.REPAGE6.BIT.UAC=7; MPU.REPAGE6.BIT.V=0; MPU.RSPAGE7.LONG=0; MPU.REPAGE7.BIT.REPN=0; MPU.REPAGE7.BIT.UAC=7; MPU.REPAGE7.BIT.V=0; MPU.MPBAC.BIT.UBAC=7;//111←その他の保護領域(0にすると例外発生します) printf("RSPAGE0=0x%08lX\r",MPU.RSPAGE0.LONG ); printf("REPAGE0=0x%08lX\r",MPU.REPAGE0.LONG ); printf("RSPAGE1=0x%08lX\r",MPU.RSPAGE1.LONG ); printf("REPAGE1=0x%08lX\r",MPU.REPAGE1.LONG ); printf("RSPAGE2=0x%08lX\r",MPU.RSPAGE2.LONG ); printf("REPAGE3=0x%08lX\r",MPU.REPAGE2.LONG ); printf("RSPAGE3=0x%08lX\r",MPU.RSPAGE3.LONG ); printf("REPAGE3=0x%08lX\r",MPU.REPAGE3.LONG ); printf("RSPAGE4=0x%08lX\r",MPU.RSPAGE4.LONG ); printf("REPAGE4=0x%08lX\r",MPU.REPAGE4.LONG ); printf("RSPAGE5=0x%08lX\r",MPU.RSPAGE5.LONG ); printf("REPAGE5=0x%08lX\r",MPU.REPAGE5.LONG ); printf("RSPAGE6=0x%08lX\r",MPU.RSPAGE6.LONG ); printf("REPAGE6=0x%08lX\r",MPU.REPAGE6.LONG ); printf("RSPAGE7=0x%08lX\r",MPU.RSPAGE7.LONG ); printf("REPAGE7=0x%08lX\r",MPU.REPAGE7.LONG ); printf("MPBAC =0x%08lX\r",MPU.MPBAC.LONG ); MPU.MPEN.LONG=(long)1;//メモリプロテクション機能を有効 Change_PSW_PM_to_UserMode();//ユザーモードに nop(); nop(); nop(); nop(); nop(); nop(); nop(); nop(); nop(); nop(); nop(); nop(); printf("設定成功\r");←ここまではOK } /////////////////////////////////////////////////////////////////////// //MPUの初期化 /////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////// //デバックテスト用 /////////////////////////////////////////////////////////////////////// int cmd_test(char *str) {mpu_init(); printf("正常にリターンしました.\r");←保護ONでは例外なし、ここまで来ず return CMD_OK; } /////////////////////////////////////////////////////////////////////// //デバックテスト用 ///////////////////////////////////////////////////////////////////////
この折にE1エミュレータ [R0E000010KCE00]販売店にお願いしました。