RX631のメモリプロテクションユニットの件

IKUZOと申します、RX631のメモリプロテクションユニットの使用方法がわかりません、サンプルコードも探したのですが該当が無いようです、アドバイスをいただけませんでしょうか?

Parents
  • IKUZOさん、こんにちは。NoMaYです。

    実は、このスレッドの初めの頃にRX62N,RX621グループ用のアプリケーションノートを紹介した後、このスレッドについては、チラ見する程度で、ちゃんと追っていませんでした。それで、浮動小数点例外の件についてのヒントがあるかも知れないと思い、しっかり気合を入れて見てみたところ、アクセス例外(および特権命令例外、未定義命令例外、浮動小数点例外)に特有の以下の話が出ていないことに気付きました。

    アクセス例外、特権命令例外、未定義命令例外、浮動小数点例外が他の例外と異なる点

    ・スタックに退避されるPC値は『例外が発生した命令のPC値』である為、例外ハンドラ中でスタックに退避されたPC値(戻り番地)を細工していないのであれば、RTE命令を実行した後に、同じ命令が再実行されて(再実行されようとして)同じ例外が再発生する。

    ・同じ例外が再発生した時の例外ハンドラも同じ例外ハンドラですので、結局、同じことが永遠に繰り返されるだけであり、プログラムは先へ進まない。

    以下、RX63N,RX631のオンラインドキュメントの画面コピーです。

    14.3.1 受け付けタイミングと退避されるPC値 (赤枠は私が書いたものです)
    resource.renesas.com/resource/lib/jpn/online_docs/um/RX/RX63N_RX631_ja/?Exceptions#TOC_14_3


    [追伸]

    こちらのスレッドをちゃんと追ってみて(というか追っている最中ですが)気付いたことは、こちらでは『アクセス例外が発生したことの確認』までは出来ていたのですね。ということは、浮動小数点例外の件と話が共通する部分は、無かったことになりますね。とんちんかんなこと言ってしまったようです。

    japan.renesasrulz.com/cafe_rene/f/forum5/4537/rx631/24429#24429
    以下の引用の赤色は私が付けたものです。
    「10.MPU.MPBAC.BIT.UBAC=0;に変更して、"T"コマンド
    T
    RSPAGE0=0x00000000
    REPAGE0=0x0000000E
    RSPAGE1=0x00000000
    REPAGE1=0x0000000E
    RSPAGE2=0x00000000
    REPAGE3=0x0000000E
    RSPAGE3=0x00000000
    REPAGE3=0x0000000E
    RSPAGE4=0x00000000
    REPAGE4=0x0000000E
    RSPAGE5=0x00000000
    REPAGE5=0x0000000E
    RSPAGE6=0x00000000
    REPAGE6=0x0000000E
    MPBAC =0x00000000
    *******************************←Access_Inst(void)アクセス例外処理を何度も呼び出します


    [追記]

    何度かスレッドを読み直してみたら、上の投稿より前に例外が発生することが述べられていましたね。

    japan.renesasrulz.com/cafe_rene/f/forum5/4537/rx631/24235#24235
    以下の引用の赤色は私が付けたものです。

    SDRAM部分に書き込み例外を設定すると、即、例外が発生いたします


Reply
  • IKUZOさん、こんにちは。NoMaYです。

    実は、このスレッドの初めの頃にRX62N,RX621グループ用のアプリケーションノートを紹介した後、このスレッドについては、チラ見する程度で、ちゃんと追っていませんでした。それで、浮動小数点例外の件についてのヒントがあるかも知れないと思い、しっかり気合を入れて見てみたところ、アクセス例外(および特権命令例外、未定義命令例外、浮動小数点例外)に特有の以下の話が出ていないことに気付きました。

    アクセス例外、特権命令例外、未定義命令例外、浮動小数点例外が他の例外と異なる点

    ・スタックに退避されるPC値は『例外が発生した命令のPC値』である為、例外ハンドラ中でスタックに退避されたPC値(戻り番地)を細工していないのであれば、RTE命令を実行した後に、同じ命令が再実行されて(再実行されようとして)同じ例外が再発生する。

    ・同じ例外が再発生した時の例外ハンドラも同じ例外ハンドラですので、結局、同じことが永遠に繰り返されるだけであり、プログラムは先へ進まない。

    以下、RX63N,RX631のオンラインドキュメントの画面コピーです。

    14.3.1 受け付けタイミングと退避されるPC値 (赤枠は私が書いたものです)
    resource.renesas.com/resource/lib/jpn/online_docs/um/RX/RX63N_RX631_ja/?Exceptions#TOC_14_3


    [追伸]

    こちらのスレッドをちゃんと追ってみて(というか追っている最中ですが)気付いたことは、こちらでは『アクセス例外が発生したことの確認』までは出来ていたのですね。ということは、浮動小数点例外の件と話が共通する部分は、無かったことになりますね。とんちんかんなこと言ってしまったようです。

    japan.renesasrulz.com/cafe_rene/f/forum5/4537/rx631/24429#24429
    以下の引用の赤色は私が付けたものです。
    「10.MPU.MPBAC.BIT.UBAC=0;に変更して、"T"コマンド
    T
    RSPAGE0=0x00000000
    REPAGE0=0x0000000E
    RSPAGE1=0x00000000
    REPAGE1=0x0000000E
    RSPAGE2=0x00000000
    REPAGE3=0x0000000E
    RSPAGE3=0x00000000
    REPAGE3=0x0000000E
    RSPAGE4=0x00000000
    REPAGE4=0x0000000E
    RSPAGE5=0x00000000
    REPAGE5=0x0000000E
    RSPAGE6=0x00000000
    REPAGE6=0x0000000E
    MPBAC =0x00000000
    *******************************←Access_Inst(void)アクセス例外処理を何度も呼び出します


    [追記]

    何度かスレッドを読み直してみたら、上の投稿より前に例外が発生することが述べられていましたね。

    japan.renesasrulz.com/cafe_rene/f/forum5/4537/rx631/24235#24235
    以下の引用の赤色は私が付けたものです。

    SDRAM部分に書き込み例外を設定すると、即、例外が発生いたします


Children
No Data