IKUZOと申します、RX631のメモリプロテクションユニットの使用方法がわかりません、サンプルコードも探したのですが該当が無いようです、アドバイスをいただけませんでしょうか?
とりあえず、
E1エミュレータ接続は今すぐできませんということでしてシミュレータ等でできるのかもしれないことを伺いましたのでその方向で行ければと思います
このリスト出力しますと、以下のようになりました .LINE "C:\Dev\BASE\RX63N\RX631\csp\csp\mpu.c",138 ._LINE_TOP inline_asm 00000202 FD6A01 MVFC PSW,R1 00000205 7731000010 OR #00100000h,R1 0000020A 7EA1 PUSH.L R1 0000020C FD6A11 MVFC PC,R1 0000020F 62A1 ADD #10,R1 00000211 7EA1 PUSH.L R1 00000213 7F95 RTE 00000215 03 NOP 00000216 03 NOP 00000217 03 NOP 00000218 03 NOP 00000219 03 NOP 0000021A 03 NOP ._LINE_END inline_asm .LINE "C:\Dev\BASE\RX63N\RX631\csp\csp\mpu.c",139 0000021B 03 NOP 0000021C 6040 SUB #04H, R0 .LINE "C:\Dev\BASE\RX63N\RX631\csp\csp\mpu.c",141 0000021E FBE2rrrrrrrr MOV.L #_L26, R14 00000224 E30E MOV.L R14, [R0] 00000226 05rrrrrr A BSR _printf 0000022A 6240 ADD #04H, R0 0000022C 3F6702 RTSD #08H, R6-R7 .SECTION PUser_Area,CODE 00000000 _Change_PSW_PM_to_UserMode: .STACK _Change_PSW_PM_to_UserMode=4 ._LINE_TOP inline_asm 00000000 FD6A01 MVFC PSW,R1 00000003 7731000010 OR #00100000h,R1 00000008 7EA1 PUSH.L R1 0000000A FD6A11 MVFC PC,R1 0000000D 62A1 ADD #10,R1 0000000F 7EA1 PUSH.L R1 00000011 7F95 RTE 00000013 03 NOP 00000014 03 NOP 00000015 03 NOP 00000016 03 NOP 00000017 03 NOP 00000018 03 NOP ._LINE_END inline_asm 00000019 02 RTS 0000001A _Change_PSW_PM_to_SuperVisorMode: .STACK _Change_PSW_PM_to_SuperVisorMode=4 .LINE "C:\Dev\BASE\RX63N\RX631\csp\csp\mpu.c",216 0000001A FD6AAE MVFC ISP, R14 0000001D FBF2rrrrrrrr MOV.L #_g_rd_isp, R15 00000023 E3FE MOV.L R14, [R15] .LINE "C:\Dev\BASE\RX63N\RX631\csp\csp\mpu.c",218 00000025 00 BRK 00000026 02 RTS
見てみるとBRKがこれでブレークしているのでは?
IKUZOさん、こんにちは。NoMaYです。昨日の時点では気付いてなかったのですが、先程、あっ、と気付いたことがあります。こちらで試そうとしていることには『アクセス例外が発生したことの確認』が含まれますよね。今のところ、発生していなければ絶対おかしいというレベルの『浮動小数点例外が発生したことの確認』さえ出来ないような事態となっています。ですので、浮動小数点例外の件が解決するまで、IKUZOさんの先程の件(14:09の件)は良いとしても、少なくとも浮動小数点例外の件と話が共通する部分については手を進めないよう、作業をより分けるように気を付けた方が良いと思われます。
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"コマンドTRSPAGE0=0x00000000REPAGE0=0x0000000ERSPAGE1=0x00000000REPAGE1=0x0000000ERSPAGE2=0x00000000REPAGE3=0x0000000ERSPAGE3=0x00000000REPAGE3=0x0000000ERSPAGE4=0x00000000REPAGE4=0x0000000ERSPAGE5=0x00000000REPAGE5=0x0000000ERSPAGE6=0x00000000REPAGE6=0x0000000EMPBAC =0x00000000*******************************←Access_Inst(void)アクセス例外処理を何度も呼び出します」[追記]何度かスレッドを読み直してみたら、上の投稿より前に例外が発生することが述べられていましたね。japan.renesasrulz.com/cafe_rene/f/forum5/4537/rx631/24235#24235以下の引用の赤色は私が付けたものです。「SDRAM部分に書き込み例外を設定すると、即、例外が発生いたします」