IKUZOと申します、RX631のメモリプロテクションユニットの使用方法がわかりません、サンプルコードも探したのですが該当が無いようです、アドバイスをいただけませんでしょうか?
void mpu_init(void) { ここは省略 Change_PSW_PM_to_UserMode();//ユザーモードに nop(); nop(); nop(); nop(); nop(); nop(); nop(); nop(); nop(); nop(); nop(); nop(); printf("設定成功\r");←ここまでは正常に来ています }←ここのリターン先がおかしくなっているのでしょう(スタックが壊れた?) //MPUの初期化 /////////////////////////////////////////////////////////////////////// //デバックテスト用 /////////////////////////////////////////////////////////////////////// int cmd_test(char *str)←"T"コマンドでここから開始 { mpu_init();//メモリ保護 printf("----->ここに来ないです\r");←ここに帰ってこない(ユザーモードにしなければ来ます) return CMD_OK; }
こんにちは。circleです。 いまひとつIKUZOさんが何をしたくて、 現状、何が問題なのかが分からないのですが、 整理してまとめていただけませんでしょうか?
ハードウェアマニュアルの「表17.1 メモリプロテクションの仕様」に
"スーパバイザモード時はメモリ保護なし"という記載と関係しているのではないでしょうか?
すみません。 言葉が足りませんでした。 領域開始ページ番号の RSPAGEnのRSPN[27:0]が28ビットしかないため、 アドレス空間でいう下位4ビットという意味です。 領域終了ページ番号の REPAGEnのREPN[27:0]も同様です。 このため、以下の設定ですと、 RSPAGEnのRSPN[27:0]=0; REPAGEnのREPN[27:0]=0; アクセス制御領域が0x00000000~0x0000000F となっているのではないかということです。