Top Page [◀◀]  2   3   4   5   6   7   8   9   ... [▶▶Last Page

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

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

  • In reply to NoMaY:

    mainの一部ダンプしてみました

    RX631のメモリプロテクションユニットの件-5.txt
    ///////////////////////////////////////////////////////////////////////
    	//111  R:Enable,W:Enable,X:Disable,Area_Valid:V
    	//1011
    	//0�F�֎~
    	//1�F����
    
    	MPU.RSPAGE0.LONG=0x00000000;
    	MPU.REPAGE0.BIT.REPN=0x00000000;
    	MPU.REPAGE0.BIT.UAC=0;
    	MPU.REPAGE0.BIT.V=1;
    
    	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;
    
    	//111 R:Enable,W:Enable,X:Disable
    	//0�F�֎~
    	//1�F����
    	MPU.MPBAC.BIT.UBAC=7;//111
    	
    	MPU.MPEN.LONG=(long)1;//�������v���e�N�V�����@�\��L��
    
    	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 );
    	chg_pmusr();
    	printf("�ݒ萬��\r");
    ///////////////////////////////////////////////////////////////////////
                                     		.LINE  "C:\Dev\BASE\RX63N\RX631\csp\csp\csp.c",257
    00013E17 FBEE006408              		MOV.L #00086400H, R14
    00013E1C F8E600                  		MOV.L #00000000H, [R14]
    00013E1F                         L7486:	; entry.split6
                                     		.LINE  "C:\Dev\BASE\RX63N\RX631\csp\csp\csp.c",258
    00013E1F FB1E006408              		MOV.L #00086400H, R1
    00013E24 A81A                    		MOV.L 04H[R1], R2
    00013E26 64F2                    		AND #0FH, R2
    00013E28 A01A                    		MOV.L R2, 04H[R1]
    00013E2A                         L7487:	; entry.split7
                                     		.LINE  "C:\Dev\BASE\RX63N\RX631\csp\csp\csp.c",259
    00013E2A FB1E006408              		MOV.L #00086400H, R1
    00013E2F A81A                    		MOV.L 04H[R1], R2
    00013E31 7522F1                  		AND #0FFFFFFF1H, R2
    00013E34 A01A                    		MOV.L R2, 04H[R1]
    00013E36                         L7488:	; entry.split8
                                     		.LINE  "C:\Dev\BASE\RX63N\RX631\csp\csp\csp.c",260
    00013E36 FB1E006408              		MOV.L #00086400H, R1
    00013E3B A81A                    		MOV.L 04H[R1], R2
    00013E3D 7802                    		BSET #00H, R2
    00013E3F A01A                    		MOV.L R2, 04H[R1]
    00013E41                         L7489:	; entry.split9
                                     		.LINE  "C:\Dev\BASE\RX63N\RX631\csp\csp\csp.c",262
    00013E41 FB1E006408              		MOV.L #00086400H, R1
    00013E46 3E1200                  		MOV.L #00000000H, 08H[R1]
    00013E49                         L7490:	; entry.split10
                                     		.LINE  "C:\Dev\BASE\RX63N\RX631\csp\csp\csp.c",263
    00013E49 FB1E006408              		MOV.L #00086400H, R1
    00013E4E A89A                    		MOV.L 0CH[R1], R2
    00013E50 64F2                    		AND #0FH, R2
    00013E52 A09A                    		MOV.L R2, 0CH[R1]
    00013E54                         L7491:	; entry.split11
                                     		.LINE  "C:\Dev\BASE\RX63N\RX631\csp\csp\csp.c",264
    00013E54 FB1E006408              		MOV.L #00086400H, R1
    00013E59 A89A                    		MOV.L 0CH[R1], R2
    00013E5B 65E2                    		OR #0EH, R2
    00013E5D A09A                    		MOV.L R2, 0CH[R1]
    00013E5F                         L7492:	; entry.split12
                                     		.LINE  "C:\Dev\BASE\RX63N\RX631\csp\csp\csp.c",265
    00013E5F FB1E006408              		MOV.L #00086400H, R1
    00013E64 A89A                    		MOV.L 0CH[R1], R2
    00013E66 7A02                    		BCLR #00H, R2
    00013E68 A09A                    		MOV.L R2, 0CH[R1]
    00013E6A                         L7493:	; entry.split13
                                     		.LINE  "C:\Dev\BASE\RX63N\RX631\csp\csp\csp.c",267
    00013E6A FB1E006408              		MOV.L #00086400H, R1
    00013E6F 3E1400                  		MOV.L #00000000H, 10H[R1]
    00013E72                         L7494:	; entry.split14
                                     		.LINE  "C:\Dev\BASE\RX63N\RX631\csp\csp\csp.c",268
    00013E72 FB1E006408              		MOV.L #00086400H, R1
    00013E77 A91A                    		MOV.L 14H[R1], R2
    00013E79 64F2                    		AND #0FH, R2
    00013E7B A11A                    		MOV.L R2, 14H[R1]
    00013E7D                         L7495:	; entry.split15
                                     		.LINE  "C:\Dev\BASE\RX63N\RX631\csp\csp\csp.c",269
    00013E7D FB1E006408              		MOV.L #00086400H, R1
    00013E82 A91A                    		MOV.L 14H[R1], R2
    00013E84 65E2                    		OR #0EH, R2
    00013E86 A11A                    		MOV.L R2, 14H[R1]
    00013E88                         L7496:	; entry.split16
                                     		.LINE  "C:\Dev\BASE\RX63N\RX631\csp\csp\csp.c",270
    00013E88 FB1E006408              		MOV.L #00086400H, R1
    00013E8D A91A                    		MOV.L 14H[R1], R2
    00013E8F 7A02                    		BCLR #00H, R2
    00013E91 A11A                    		MOV.L R2, 14H[R1]
    00013E93                         L7497:	; entry.split17
                                     		.LINE  "C:\Dev\BASE\RX63N\RX631\csp\csp\csp.c",272
    00013E93 FB1E006408              		MOV.L #00086400H, R1
    00013E98 3E1600                  		MOV.L #00000000H, 18H[R1]
    00013E9B                         L7498:	; entry.split18
                                     		.LINE  "C:\Dev\BASE\RX63N\RX631\csp\csp\csp.c",273
    00013E9B FB1E006408              		MOV.L #00086400H, R1
    00013EA0 A99A                    		MOV.L 1CH[R1], R2
    00013EA2 64F2                    		AND #0FH, R2
    00013EA4 A19A                    		MOV.L R2, 1CH[R1]
    00013EA6                         L7499:	; entry.split19
                                     		.LINE  "C:\Dev\BASE\RX63N\RX631\csp\csp\csp.c",274
    00013EA6 FB1E006408              		MOV.L #00086400H, R1
    00013EAB A99A                    		MOV.L 1CH[R1], R2
    00013EAD 65E2                    		OR #0EH, R2
    00013EAF A19A                    		MOV.L R2, 1CH[R1]
    00013EB1                         L7500:	; entry.split20
                                     		.LINE  "C:\Dev\BASE\RX63N\RX631\csp\csp\csp.c",275
    00013EB1 FB1E006408              		MOV.L #00086400H, R1
    00013EB6 A99A                    		MOV.L 1CH[R1], R2
    00013EB8 7A02                    		BCLR #00H, R2
    00013EBA A19A                    		MOV.L R2, 1CH[R1]
    00013EBC                         L7501:	; entry.split21
                                     		.LINE  "C:\Dev\BASE\RX63N\RX631\csp\csp\csp.c",277
    00013EBC FB1E006408              		MOV.L #00086400H, R1
    00013EC1 3E1800                  		MOV.L #00000000H, 20H[R1]
    00013EC4                         L7502:	; entry.split22
                                     		.LINE  "C:\Dev\BASE\RX63N\RX631\csp\csp\csp.c",278
    00013EC4 FB1E006408              		MOV.L #00086400H, R1
    00013EC9 AA1A                    		MOV.L 24H[R1], R2
    00013ECB 64F2                    		AND #0FH, R2
    00013ECD A21A                    		MOV.L R2, 24H[R1]
    00013ECF                         L7503:	; entry.split23
                                     		.LINE  "C:\Dev\BASE\RX63N\RX631\csp\csp\csp.c",279
    00013ECF FB1E006408              		MOV.L #00086400H, R1
    00013ED4 AA1A                    		MOV.L 24H[R1], R2
    00013ED6 65E2                    		OR #0EH, R2
    00013ED8 A21A                    		MOV.L R2, 24H[R1]
    00013EDA                         L7504:	; entry.split24
                                     		.LINE  "C:\Dev\BASE\RX63N\RX631\csp\csp\csp.c",280
    00013EDA FB1E006408              		MOV.L #00086400H, R1
    00013EDF AA1A                    		MOV.L 24H[R1], R2
    00013EE1 7A02                    		BCLR #00H, R2
    00013EE3 A21A                    		MOV.L R2, 24H[R1]
    00013EE5                         L7505:	; entry.split25
                                     		.LINE  "C:\Dev\BASE\RX63N\RX631\csp\csp\csp.c",282
    00013EE5 FB1E006408              		MOV.L #00086400H, R1
    00013EEA 3E1A00                  		MOV.L #00000000H, 28H[R1]
    00013EED                         L7506:	; entry.split26
                                     		.LINE  "C:\Dev\BASE\RX63N\RX631\csp\csp\csp.c",283
    00013EED FB1E006408              		MOV.L #00086400H, R1
    00013EF2 AA9A                    		MOV.L 2CH[R1], R2
    00013EF4 64F2                    		AND #0FH, R2
    00013EF6 A29A                    		MOV.L R2, 2CH[R1]
    00013EF8                         L7507:	; entry.split27
                                     		.LINE  "C:\Dev\BASE\RX63N\RX631\csp\csp\csp.c",284
    00013EF8 FB1E006408              		MOV.L #00086400H, R1
    00013EFD AA9A                    		MOV.L 2CH[R1], R2
    00013EFF 65E2                    		OR #0EH, R2
    00013F01 A29A                    		MOV.L R2, 2CH[R1]
    00013F03                         L7508:	; entry.split28
                                     		.LINE  "C:\Dev\BASE\RX63N\RX631\csp\csp\csp.c",285
    00013F03 FB1E006408              		MOV.L #00086400H, R1
    00013F08 AA9A                    		MOV.L 2CH[R1], R2
    00013F0A 7A02                    		BCLR #00H, R2
    00013F0C A29A                    		MOV.L R2, 2CH[R1]
    00013F0E                         L7509:	; entry.split29
                                     		.LINE  "C:\Dev\BASE\RX63N\RX631\csp\csp\csp.c",287
    00013F0E FB1E006408              		MOV.L #00086400H, R1
    00013F13 3E1C00                  		MOV.L #00000000H, 30H[R1]
    00013F16                         L7510:	; entry.split30
                                     		.LINE  "C:\Dev\BASE\RX63N\RX631\csp\csp\csp.c",288
    00013F16 FB1E006408              		MOV.L #00086400H, R1
    00013F1B AB1A                    		MOV.L 34H[R1], R2
    00013F1D 64F2                    		AND #0FH, R2
    00013F1F A31A                    		MOV.L R2, 34H[R1]
    00013F21                         L7511:	; entry.split31
                                     		.LINE  "C:\Dev\BASE\RX63N\RX631\csp\csp\csp.c",289
    00013F21 FB1E006408              		MOV.L #00086400H, R1
    00013F26 AB1A                    		MOV.L 34H[R1], R2
    00013F28 65E2                    		OR #0EH, R2
    00013F2A A31A                    		MOV.L R2, 34H[R1]
    00013F2C                         L7512:	; entry.split32
                                     		.LINE  "C:\Dev\BASE\RX63N\RX631\csp\csp\csp.c",290
    00013F2C FB1E006408              		MOV.L #00086400H, R1
    00013F31 AB1A                    		MOV.L 34H[R1], R2
    00013F33 7A02                    		BCLR #00H, R2
    00013F35 A31A                    		MOV.L R2, 34H[R1]
    00013F37                         L7513:	; entry.split33
                                     		.LINE  "C:\Dev\BASE\RX63N\RX631\csp\csp\csp.c",292
    00013F37 FB1E006408              		MOV.L #00086400H, R1
    00013F3C 3E1E00                  		MOV.L #00000000H, 38H[R1]
    00013F3F                         L7514:	; entry.split34
                                     		.LINE  "C:\Dev\BASE\RX63N\RX631\csp\csp\csp.c",293
    00013F3F FB1E006408              		MOV.L #00086400H, R1
    00013F44 AB9A                    		MOV.L 3CH[R1], R2
    00013F46 64F2                    		AND #0FH, R2
    00013F48 A39A                    		MOV.L R2, 3CH[R1]
    00013F4A                         L7515:	; entry.split35
                                     		.LINE  "C:\Dev\BASE\RX63N\RX631\csp\csp\csp.c",294
    00013F4A FB1E006408              		MOV.L #00086400H, R1
    00013F4F AB9A                    		MOV.L 3CH[R1], R2
    00013F51 65E2                    		OR #0EH, R2
    00013F53 A39A                    		MOV.L R2, 3CH[R1]
    00013F55                         L7516:	; entry.split36
                                     		.LINE  "C:\Dev\BASE\RX63N\RX631\csp\csp\csp.c",295
    00013F55 FB1E006408              		MOV.L #00086400H, R1
    00013F5A AB9A                    		MOV.L 3CH[R1], R2
    00013F5C 7A02                    		BCLR #00H, R2
    00013F5E A39A                    		MOV.L R2, 3CH[R1]
    00013F60                         L7517:	; entry.split37
                                     		.LINE  "C:\Dev\BASE\RX63N\RX631\csp\csp\csp.c",300
    00013F60 FBEE006408              		MOV.L #00086400H, R14
    00013F65 EDEF41                  		MOV.L 0104H[R14], R15
    00013F68 65EF                    		OR #0EH, R15
    00013F6A E7EF41                  		MOV.L R15, 0104H[R14]
    00013F6D                         L7518:	; entry.split38
                                     		.LINE  "C:\Dev\BASE\RX63N\RX631\csp\csp\csp.c",302
    00013F6D FBEE006408              		MOV.L #00086400H, R14
    00013F72 F9E64001                		MOV.L #00000001H, 0100H[R14]
    00013F76                         L7519:	; entry.split39
    
    ���̂����肩��printf
                                     		.LINE  "C:\Dev\BASE\RX63N\RX631\csp\csp\csp.c",304
    00013F76 FBEE006408              		MOV.L #00086400H, R14
    00013F7B 6080                    		SUB #08H, R0
    00013F7D E4E001                  		MOV.L [R14], 04H[R0]
    00013F80 FBE2rrrrrrrr            		MOV.L #_L519, R14
    00013F86 E30E                    		MOV.L R14, [R0]
    00013F88 05rrrrrr             A  		BSR _printf
    00013F8C 6280                    		ADD #08H, R0
    00013F8E                         L7520:	; entry.split40
                                     		.LINE  "C:\Dev\BASE\RX63N\RX631\csp\csp\csp.c",305
    00013F8E FBEE006408              		MOV.L #00086400H, R14
    00013F93 6080                    		SUB #08H, R0
    00013F95 E5E00101                		MOV.L 04H[R14], 04H[R0]
    00013F99 FBE2rrrrrrrr            		MOV.L #_L520, R14
    00013F9F E30E                    		MOV.L R14, [R0]
    00013FA1 05rrrrrr             A  		BSR _printf
    00013FA5 6280                    		ADD #08H, R0
    00013FA7                         L7521:	; entry.split41
                                     		.LINE  "C:\Dev\BASE\RX63N\RX631\csp\csp\csp.c",306
    00013FA7 FBEE006408              		MOV.L #00086400H, R14
    00013FAC 6080                    		SUB #08H, R0
    00013FAE E5E00201                		MOV.L 08H[R14], 04H[R0]
    00013FB2 FBE2rrrrrrrr            		MOV.L #_L521, R14
    00013FB8 E30E                    		MOV.L R14, [R0]
    00013FBA 05rrrrrr             A  		BSR _printf
    00013FBE 6280                    		ADD #08H, R0
    00013FC0                         L7522:	; entry.split42
                                     		.LINE  "C:\Dev\BASE\RX63N\RX631\csp\csp\csp.c",307
    00013FC0 FBEE006408              		MOV.L #00086400H, R14
    00013FC5 6080                    		SUB #08H, R0
    00013FC7 E5E00301                		MOV.L 0CH[R14], 04H[R0]
    00013FCB FBE2rrrrrrrr            		MOV.L #_L522, R14
    00013FD1 E30E                    		MOV.L R14, [R0]
    00013FD3 05rrrrrr             A  		BSR _printf
    00013FD7 6280                    		ADD #08H, R0
    00013FD9                         L7523:	; entry.split43
                                     		.LINE  "C:\Dev\BASE\RX63N\RX631\csp\csp\csp.c",308
    00013FD9 FBEE006408              		MOV.L #00086400H, R14
    00013FDE 6080                    		SUB #08H, R0
    00013FE0 E5E00401                		MOV.L 10H[R14], 04H[R0]
    00013FE4 FBE2rrrrrrrr            		MOV.L #_L523, R14
    00013FEA E30E                    		MOV.L R14, [R0]
    00013FEC 05rrrrrr             A  		BSR _printf
    00013FF0 6280                    		ADD #08H, R0
    00013FF2                         L7524:	; entry.split44
                                     		.LINE  "C:\Dev\BASE\RX63N\RX631\csp\csp\csp.c",309
    00013FF2 FBEE006408              		MOV.L #00086400H, R14
    00013FF7 6080                    		SUB #08H, R0
    00013FF9 E5E00501                		MOV.L 14H[R14], 04H[R0]
    00013FFD FBE2rrrrrrrr            		MOV.L #_L524, R14
    00014003 E30E                    		MOV.L R14, [R0]
    00014005 05rrrrrr             A  		BSR _printf
    00014009 6280                    		ADD #08H, R0
    0001400B                         L7525:	; entry.split45
                                     		.LINE  "C:\Dev\BASE\RX63N\RX631\csp\csp\csp.c",310
    0001400B FBEE006408              		MOV.L #00086400H, R14
    00014010 6080                    		SUB #08H, R0
    00014012 E5E00601                		MOV.L 18H[R14], 04H[R0]
    00014016 FBE2rrrrrrrr            		MOV.L #_L525, R14
    0001401C E30E                    		MOV.L R14, [R0]
    0001401E 05rrrrrr             A  		BSR _printf
    00014022 6280                    		ADD #08H, R0
    00014024                         L7526:	; entry.split46
                                     		.LINE  "C:\Dev\BASE\RX63N\RX631\csp\csp\csp.c",311
    00014024 FBEE006408              		MOV.L #00086400H, R14
    00014029 6080                    		SUB #08H, R0
    0001402B E5E00701                		MOV.L 1CH[R14], 04H[R0]
    0001402F FBE2rrrrrrrr            		MOV.L #_L524, R14
    00014035 E30E                    		MOV.L R14, [R0]
    00014037 05rrrrrr             A  		BSR _printf
    0001403B 6280                    		ADD #08H, R0
    0001403D                         L7527:	; entry.split47
                                     		.LINE  "C:\Dev\BASE\RX63N\RX631\csp\csp\csp.c",312
    0001403D FBEE006408              		MOV.L #00086400H, R14
    00014042 6080                    		SUB #08H, R0
    00014044 E5E00801                		MOV.L 20H[R14], 04H[R0]
    00014048 FBE2rrrrrrrr            		MOV.L #_L526, R14
    0001404E E30E                    		MOV.L R14, [R0]
    00014050 05rrrrrr             A  		BSR _printf
    00014054 6280                    		ADD #08H, R0
    00014056                         L7528:	; entry.split48
                                     		.LINE  "C:\Dev\BASE\RX63N\RX631\csp\csp\csp.c",313
    00014056 FBEE006408              		MOV.L #00086400H, R14
    0001405B 6080                    		SUB #08H, R0
    0001405D E5E00901                		MOV.L 24H[R14], 04H[R0]
    00014061 FBE2rrrrrrrr            		MOV.L #_L527, R14
    00014067 E30E                    		MOV.L R14, [R0]
    00014069 05rrrrrr             A  		BSR _printf
    0001406D 6280                    		ADD #08H, R0
    0001406F                         L7529:	; entry.split49
                                     		.LINE  "C:\Dev\BASE\RX63N\RX631\csp\csp\csp.c",314
    0001406F FBEE006408              		MOV.L #00086400H, R14
    00014074 6080                    		SUB #08H, R0
    00014076 E5E00A01                		MOV.L 28H[R14], 04H[R0]
    0001407A FBE2rrrrrrrr            		MOV.L #_L528, R14
    00014080 E30E                    		MOV.L R14, [R0]
    00014082 05rrrrrr             A  		BSR _printf
    00014086 6280                    		ADD #08H, R0
    00014088                         L7530:	; entry.split50
                                     		.LINE  "C:\Dev\BASE\RX63N\RX631\csp\csp\csp.c",315
    00014088 FBEE006408              		MOV.L #00086400H, R14
    0001408D 6080                    		SUB #08H, R0
    0001408F E5E00B01                		MOV.L 2CH[R14], 04H[R0]
    00014093 FBE2rrrrrrrr            		MOV.L #_L529, R14
    00014099 E30E                    		MOV.L R14, [R0]
    0001409B 05rrrrrr             A  		BSR _printf
    0001409F 6280                    		ADD #08H, R0
    000140A1                         L7531:	; entry.split51
                                     		.LINE  "C:\Dev\BASE\RX63N\RX631\csp\csp\csp.c",316
    000140A1 FBEE006408              		MOV.L #00086400H, R14
    000140A6 6080                    		SUB #08H, R0
    000140A8 E5E00C01                		MOV.L 30H[R14], 04H[R0]
    000140AC FBE2rrrrrrrr            		MOV.L #_L530, R14
    000140B2 E30E                    		MOV.L R14, [R0]
    000140B4 05rrrrrr             A  		BSR _printf
    000140B8 6280                    		ADD #08H, R0
    000140BA                         L7532:	; entry.split52
                                     		.LINE  "C:\Dev\BASE\RX63N\RX631\csp\csp\csp.c",317
    000140BA FBEE006408              		MOV.L #00086400H, R14
    000140BF 6080                    		SUB #08H, R0
    000140C1 E5E00D01                		MOV.L 34H[R14], 04H[R0]
    000140C5 FBE2rrrrrrrr            		MOV.L #_L531, R14
    000140CB E30E                    		MOV.L R14, [R0]
    000140CD 05rrrrrr             A  		BSR _printf
    000140D1 6280                    		ADD #08H, R0
    000140D3                         L7533:	; entry.split53
                                     		.LINE  "C:\Dev\BASE\RX63N\RX631\csp\csp\csp.c",318
    000140D3 FBEE006408              		MOV.L #00086400H, R14
    000140D8 6080                    		SUB #08H, R0
    000140DA E5E00E01                		MOV.L 38H[R14], 04H[R0]
    000140DE FBE2rrrrrrrr            		MOV.L #_L532, R14
    000140E4 E30E                    		MOV.L R14, [R0]
    000140E6 05rrrrrr             A  		BSR _printf
    000140EA 6280                    		ADD #08H, R0
    000140EC                         L7534:	; entry.split54
                                     		.LINE  "C:\Dev\BASE\RX63N\RX631\csp\csp\csp.c",319
    000140EC FBEE006408              		MOV.L #00086400H, R14
    000140F1 6080                    		SUB #08H, R0
    000140F3 E5E00F01                		MOV.L 3CH[R14], 04H[R0]
    000140F7 FBE2rrrrrrrr            		MOV.L #_L533, R14
    000140FD E30E                    		MOV.L R14, [R0]
    000140FF 05rrrrrr             A  		BSR _printf
    00014103 6280                    		ADD #08H, R0
    00014105                         L7535:	; entry.split55
                                     		.LINE  "C:\Dev\BASE\RX63N\RX631\csp\csp\csp.c",320
    00014105 FBEE006408              		MOV.L #00086400H, R14
    0001410A 6080                    		SUB #08H, R0
    0001410C E5E04101                		MOV.L 0104H[R14], 04H[R0]
    00014110 FBE2rrrrrrrr            		MOV.L #_L534, R14
    00014116 E30E                    		MOV.L R14, [R0]
    00014118 05rrrrrr             A  		BSR _printf
    0001411C 6280                    		ADD #08H, R0
    0001411E                         L7536:	; entry.split56
    
    ��������chg_pmusr();
                                     		.LINE  "C:\Dev\BASE\RX63N\RX631\csp\csp\csp.c",322
    0001411E FD6A0E                  		MVFC PSW, R14
    00014121 7D4E                    		BTST #14H, R14
    00014123 21rr                    		BNE L7538
    00014125                         L7537:	; entry.split56
    00014125 773E000010              		OR #00100000H, R14
    0001412A 7EAE                    		PUSH.L R14
    0001412C                         L7590:
    0001412C FD6A1E                  		MVFC PC, R14
    0001412F 70EErrrrrrrr            		ADD #L7538-L7590, R14
    00014135 7EAE                    		PUSH.L R14
    00014137 7F95                    		RTE
    
    �����܂�
    
    00014139                         L7538:	; entry.split56
    00014139                         L7539:	; entry.split57
    00014139 6040                    		SUB #04H, R0
                                     		.LINE  "C:\Dev\BASE\RX63N\RX631\csp\csp\csp.c",324
    0001413B FBE2rrrrrrrr            		MOV.L #_L535, R14
    00014141 E30E                    		MOV.L R14, [R0]
    00014143 05rrrrrr             A  		BSR _printf
    00014147 6240                    		ADD #04H, R0
    00014149                         L7540:	; entry.split58
                                     		.LINE  "C:\Dev\BASE\RX63N\RX631\csp\csp\csp.c",330
    00014149 FBE2rrrrrrrr            		MOV.L #_main, R14
    
    
    

  • IKUZOさん、こんにちは。NoMaYです。私の先程の投稿のやり直しです。

    ダンプ有難う御座います。chg_pmusr()はインラインアセンブラ展開されていましたね。

    それで、私が知りたいと思っているのは、以下のところです。

    ・IKUZOさんの10:56の投稿

    main()ではChange_PSW_PM_to_UserMode()がインラインアセンブラ展開されていないと思われますが、main()でChange_PSW_PM_to_UserMode()を呼び出しているところのリストファイルはどうなっていますでしょうか?

    今の、私の推測は、以下の通りです。

    ・IKUZOさんの10:05と10:15の投稿

    単にスタックの内容をコピーするのでは駄目で、IスタックポイントとUスタックポインタとの位置関係を合わせないと駄目だと思います。この時点では、Iスタックポインタは進んでいますが、Uスタックポインタは最初の位置のままですので、コピーした後にUスタックポインタを同じ深さになるように補正する必要があると思います。

    ・IKUZOさんの10:24の投稿

    IスタックからUスタックへの切り替わりのせいで、mpu_init()の最後のRTS命令を実行したところで暴走するという仮説を立てている訳ですが、そうであれば、これも当然暴走しますね。

    ・IKUZOさんの10:32の投稿

    mpu_init()の内容をmain()の中に挿入すると、暴走するRTS命令が無くなる訳ですので、暴走しなくなったのだと考えられます。(ですが、もしも仮に試しにmain()からリターンさせるようにしたら、main()の最後のRTS命令の実行で暴走するのでは無いかと考えられます。)

    ・IKUZOさんの10:44の投稿

    メモリプロテクションのバックグランドの設定が全許可になっており、許可と禁止では許可が優先される仕様ですので、例外は発生しないですね。

    ・IKUZOさんの10:56の投稿

    これはmain()ではChange_PSW_PM_to_UserMode()がインラインアセンブラ展開されていないと思われます。Change_PSW_PM_to_UserMode()が通常の関数としてコールされてしまっていて、Change_PSW_PM_to_UserMode()の最後のRTS命令の実行で暴走するのでは無いかと思われます。

    ・IKUZOさんの13:03の投稿

    メモリプロテクションのバックグランドの設定が全禁止に変更されたことにより、また、RSPAGE0の設定が全禁止であることにより、(インラインアセンブラ展開されていない?)Change_PSW_PM_to_UserMode()ではRTE命令の次に実行される命令、もしくは、main()ではインラインアセンブラ展開されたchg_pmusr()のRTE命令の次に実行される命令、にてアクセス例外が発生するようになったのだと考えられます。

  • In reply to NoMaY:

    NoMaYさんお世話になります
    「main()ではChange_PSW_PM_to_UserMode()がインラインアセンブラとして展開されていないと思われます。」
    まさしくそのようになっていました、
    #pragma inline_asm Change_PSW_PM_to_UserModeを宣言しててもだめなんですね
    00014105 FBEE006408 MOV.L #00086400H, R14
    0001410A 6080 SUB #08H, R0
    0001410C E5E04101 MOV.L 0104H[R14], 04H[R0]
    00014110 FBE2rrrrrrrr MOV.L #_L534, R14
    00014116 E30E MOV.L R14, [R0]
    00014118 05rrrrrr A BSR _printf
    0001411C 6280 ADD #08H, R0
    0001411E L7536: ; entry.split56
    .LINE "C:\Dev\BASE\RX63N\RX631\csp\csp\csp.c",324
    0001411E 05rrrrrr A BSR _Change_PSW_PM_to_UserMode
    00014122 L7537: ; entry.split57
    .LINE "C:\Dev\BASE\RX63N\RX631\csp\csp\csp.c",325
    00014122 03 NOP
  • In reply to IKUZO:

    NoMaYさんお世話になります
    「IスタックポイントとUスタックポインタとの位置関係を合わせないと駄目だと思います。
    この時点では、Iスタックポインタは進んでいますが、Uスタックポインタは最初の位置のままですので、
    コピーした後にUスタックポインタを同じ深さになるように補正する必要があると思います。」
    スタックの件納得です
    CC-RXのマニュアルに以下のように例がありまして、基底位置がmainなのかと思いました
    #include <machine.h>
    void main(void);
    void Do_Main_on_UserMode(void)
    {
    chg_pmusr(); // プロセッサモードをユーザモードに切り換え
    main(); // main を実行
    }

  • In reply to IKUZO:

    NoMaYさんお世話になります
    「メモリプロテクションのバックグランドの設定が全許可になっており」
    この意味がわかりません
    マニュアルの記述には
    「領域がオーバラップして設定され、各領域のアクセスの制御情報が異なる場合は、許可が優先されます。
    (バックグラウンド領域を含む)」
    マニュアルの記述には
    「バックグラウンド領域設定:バックグラウンド領域(全アドレス空間)に対して、アクセス制御情報を設定可能」
    「領域オーバラップの処理あるアドレスに対して領域がオーバラップして設定され、各領域のアクセス制御情報が
    異なる場合、許可が優先されます。」
    なるほど、もしかすると
    各領域設定:バックグラウンド領域設定となっている?
    マニュアルの記述には
    「17.1.3 バックグラウンド領域
    バックグラウンド領域は全アドレス空間(0000 0000h ~ FFFF FFFFh)です。バックグラウンド領域のアク
    セス制御情報はバックグラウンドアクセス制御レジスタ(MPBAC)で設定します。バックグラウンド領域の
    アクセス制御情報は、8 つのアクセス制御領域と異なり、メモリプロテクション機能が有効(MPEN.MPEN
    ビットが“1”)であれば有効となります。」
    アドレス空間(0000 0000h ~ FFFF FFFFh)であればなるほど
    各領域設定:バックグラウンド領域設定で0:0であればということなんでしょうか?
  • In reply to IKUZO:

    わからないなーどんな設定にしたら正常に動作するのでしょうか
    ///////////////////////////////////////////////////////////////////////
    //アクセス例外
    ///////////////////////////////////////////////////////////////////////
    uint32_t g_mpu_err_instruction_adrs;
    void Access_Inst(void)
    {
    CMA='1';
    sys_beep(100);
    }
    ///////////////////////////////////////////////////////////////////////
    //アクセス例外
    ///////////////////////////////////////////////////////////////////////
    main()実行結果
    ///////////////////////////////////////////////////////////////////////
    RSPAGE0=0x00000000
    REPAGE0=0x00000001
    RSPAGE1=0x07000000
    REPAGE1=0x7000000E
    RSPAGE2=0x07000000
    REPAGE3=0x7000000E
    RSPAGE3=0x07000000
    REPAGE3=0x7000000E
    RSPAGE4=0x07000000
    REPAGE4=0x7000000E
    RSPAGE5=0x07000000
    REPAGE5=0x7000000E
    RSPAGE6=0x07000000
    REPAGE6=0x7000000E
    RSPAGE7=0x07000000
    REPAGE7=0x7000000E
    MPBAC  =0x00000000

    11111111111111111111111111111111111111←設定後すぐに例外発生します
    ///////////////////////////////////////////////////////////////////////
    MPBAC =0x0000000E
    にしますと、
    char *p=(char*)0;
    p[0]=1;
    でも例外発生せずです

  • In reply to IKUZO:

    「バックグラウンド領域のアクセス制御情報は、8 つのアクセス制御領域と異なり、メモリプロテクション機能が有効(MPEN.MPENビットが“1”)であれば有効となります。」
    これはどういう意味なんでしょうか?教えていただけませんでしょうか?
  • IKUZOさん、こんにちは。NoMaYです。

    >#pragma inline_asm Change_PSW_PM_to_UserModeを宣言しててもだめなんですね
    ひょっとして、main()でChange_PSW_PM_to_UserMode()を呼び出している箇所の前方向(ソースの先頭方向)に、#pragma inline_asm Change_PSW_PM_to_UserModeの記述はあれどvoid Change_PSW_PM_to_UserMode(void){。。。省略。。。}の記述が無いのではないですか?(CC-RX V2.03ではエラーもワーニングも出ませんでした。) (あるいは、#pragma inline_asm Change_PSW_PM_to_UserModeの記述も無いのかも。) それが無いのであれば、コンパイラはインラインアセンブラ展開出来ないと思います。

    >void Do_Main_on_UserMode(void)
    >{
    >    chg_pmusr(); // プロセッサモードをユーザモードに切り換え
    >    main(); // main を実行
    >}
    これでも、もしも仮にmain()がリターンして来たらDo_Main_on_UserMode()からリターンするところで、暴走すると思います。(また、Do_Main_on_UserMode()がPowerON_Reset_PC()から呼ばれているとして、たとえmemcpy()を入れても、PowerON_Reset_PC()内でのIスタックポインタ/Uスタックポインタの初期値からは、Iスタックポインタは4バイト進んでいますがUスタックポインタは元のままですので、Uスタックポインタを4バイト進めてやらないと、Do_Main_on_UserMode()からリターンするところで、暴走すると思います。)

    >各領域設定:バックグラウンド領域設定で0:0であればということなんでしょうか?
    そうだと思います。ですので、バックグラウンド領域設定で1(許可)を設定したアクセス種別は、各領域設定で0(禁止)にしても無意味(禁止出来ない)だと思います。(私は、マニュアルの記述を、そのように解釈しました。)

    >RSPAGE0=0x00000000
    >REPAGE0=0x00000001
    >RSPAGE1=0x07000000
    >REPAGE1=0x7000000E
    >RSPAGE2=0x07000000
    >REPAGE3=0x7000000E
    >RSPAGE3=0x07000000
    >REPAGE3=0x7000000E
    >RSPAGE4=0x07000000
    >REPAGE4=0x7000000E
    >RSPAGE5=0x07000000
    >REPAGE5=0x7000000E
    >RSPAGE6=0x07000000
    >REPAGE6=0x7000000E
    >RSPAGE7=0x07000000
    >REPAGE7=0x7000000E
    >MPBAC  =0x00000000
    >11111111111111111111111111111111111111←設定後すぐに例外発生します
    バックグランド領域でも各領域でも、実行(およびリード/ライトも)を許可していないからです。

    >MPBAC =0x0000000E
    >にしますと、
    >char *p=(char*)0;
    >p[0]=1;
    >でも例外発生せずです
    バックグランド領域で、(実行/リードと)ライトを許可しているからです。

    >「バックグラウンド領域のアクセス制御情報は、8 つのアクセス制御領域と異なり、
    >メモリプロテクション機能が有効(MPEN.MPENビットが“1”)であれば有効となります。」
    >これはどういう意味なんでしょうか?教えていただけませんでしょうか?
    各領域の設定にはVビットがありますが、バックグランド領域の設定にはVビットが無い、という意味だと思います。

    [追記] 23:58

    このスレッドに後から来た人向けに、オンラインドキュメントの画面コピーを幾つか貼り付けました。

    17.2.1 領域n開始ページ番号レジスタ (RSPAGEn) (n=0~7)
    resource.renesas.com/resource/lib/jpn/online_docs/um/RX/RX63N_RX631_ja/?MPU#TOC_17_2_1


    17.2.2 領域n終了ページ番号レジスタ (REPAGEn) (n=0~7)
    resource.renesas.com/resource/lib/jpn/online_docs/um/RX/RX63N_RX631_ja/?MPU#TOC_17_2_2


    17.2.4 バックグラウンドアクセス制御レジスタ (MPBAC)
    resource.renesas.com/resource/lib/jpn/online_docs/um/RX/RX63N_RX631_ja/?MPU#TOC_17_2_4


  • In reply to NoMaY:

    NoMaYさんお世話になります
    mpu.hに下記のように定義していますが、void Change_PSW_PM_to_UserMode(void);があるから
    インラインにならないのでしょうか?
    #pragma inline_asm Change_PSW_PM_to_UserMode
    void Change_PSW_PM_to_UserMode(void);
    失礼かもしれませんが、
    アドレス0~16番地を禁止する設定というのがありましたら、教えていただけないですか、
    すぐにテストしてみますので、わたくしのあたまがどうにもついていけなくて。
  • In reply to NoMaY:

    IKUZOさん、NoMaYさん

    該当アプリケーションノートの図3.1、表3.1にメモリ保護領域0~6(7は未使用)、
    それ以外の領域がバックグラウンド領域と記載されています。
    (メモリ保護領域0~7で設定していない領域が全てバックグラウンド領域と解釈しました)

    サンプルコードではバックグランド領域はアクセス制御で"読み出し"、"書き込み"、"実行"を
    全て禁止の設定としていますが、スーパバイザモードでアクセスしているため、
    アクセス例外が発生しないのではないでしょうか?
  • IKUZOさん、こんにちは。NoMaYです。

    >mpu.hに下記のように定義していますが、void Change_PSW_PM_to_UserMode(void);があるから
    >インラインにならないのでしょうか?
    >#pragma inline_asm Change_PSW_PM_to_UserMode
    >void Change_PSW_PM_to_UserMode(void);
    main()のあるソースでmpu.hがインクルードされているとします。でも、main()でChange_PSW_PM_to_UserMode()を呼び出している箇所の前方向(ソースの先頭方向)に、以下の記述が無いのだと思います。
    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
    }

    >アドレス0~16番地を禁止する設定というのがありましたら、教えていただけないですか、
    >すぐにテストしてみますので、わたくしのあたまがどうにもついていけなくて。
    こういう時は、自分の経験上も、一晩寝て、明日の朝もう一度考えると分ることも多い、と思います。(あるいは、今晩、お風呂に入っている時に突然分るようになるとか、、、) RXシミュレータで試してみますが、バックグランドは全禁止、4領域を使ってIROM/IRAM(先頭16番地除く)/IO/SDRAMの各メモリ空間について適切に設定、勘違いが無いかどうかチェック、あと、(今更だけど)本当にMPUのシミュレーションがRXシミュレータで出来るよねのチェック、とかで暫く時間が掛かりそうです。

  • In reply to NoMaY:

    NoMaYさんいつもお世話になっています、
    「main()でChange_PSW_PM_to_UserMode()を呼び出している箇所の前方向(ソースの先頭方向)に、
    以下の記述が無いのだと思います。」
    そうです、そうです、サンプルのせいにしてはいけないのですが
    インラインですから本来ヘッダファイルに定義しないといけないですよね
    それでおっしゃるようになっているのかもしれません、すぐになおします、
    調べてみましたがmpu.c mpu.h ですが main()の前にインクルードされていました
    まー、でもこれを使わなくてもchg_pmusr();ではいけませんかね、
    完全解決は特に急ぎではありませんので、無理しないでくださいね、
    いつも感謝しています
  • In reply to circle:

    circleさんいつもお世話になっています、
    #define BACKGROUND_ACCESS_CONTROL (0x0000) /* (R:Disable,W:Disable,X:Disable) */
    MPU.MPBAC.LONG = BACKGROUND_ACCESS_CONTROL; /* Back Ground area */
    つまりプログラムで読み出し/書き込み/実行される領域はメモリ保護領域0~7で設定されている
    という意味?であれば
    RSPAGE0=0x00000000
    REPAGE0=0x00000001
    RSPAGE1=0x00000000
    REPAGE1=0xFFFFFFFF
    RSPAGE2=0x07000000
    REPAGE3=0x7000000E
    RSPAGE3=0x07000000
    REPAGE3=0x7000000E
    RSPAGE4=0x07000000
    REPAGE4=0x7000000E
    RSPAGE5=0x07000000
    REPAGE5=0x7000000E
    RSPAGE6=0x07000000
    REPAGE6=0x7000000E
    RSPAGE7=0x07000000
    REPAGE7=0x7000000E
    MPBAC =0x00000000
    設定成功
    例外発生できませんでした。
  • IKUZOさん、circleさん、こんにちは。NoMaYです。

    IKUZOさん、

    >RSPAGE1=0x00000000
    >REPAGE1=0xFFFFFFFF
    今度は、ここで全空間を全許可にしてますよ。

    circleさん、

    >サンプルコードではバックグランド領域はアクセス制御で"読み出し"、"書き込み"、"実行"を
    >全て禁止の設定としていますが、スーパバイザモードでアクセスしているため、
    >アクセス例外が発生しないのではないでしょうか?
    すみません。これはIKUZOさんのどのパターン(どの投稿)と関連する話になりますか?(ごめんなさい。本当にどれと関連しているのか分らなくて、、、)

    今のところ、私には、MPUのレジスタ設定が不適切である為そのように動作している、言い換えると、不適切に設定したMPUレジスタ通りに動作している、と見受けられるのです。IKUZOさんが試されたパターンの中にはアクセス違反の例外が発生しているというパターンがありますので、私は、以下のコードはmain()のchg_pmusr()以後にあるのだと解釈しています。([訂正]17:38 推論の根拠については私の勘違いでした。(次の私の投稿です。)) (それはそれとして、このコードは0番地アクセスですので、CC-RXがどんなコードを生成しているか注意する必要がありそう、だとも思っています。)

    >char *p=(char*)0;
    >p[0]=1;

  • In reply to IKUZO:

    circleさんいつもお世話になっています、
    私の間違いでした、完全な動作をいたしました
    REPAGE0=0x00000001
    RSPAGE1=0x00000010
    REPAGE1=0xFFFFFFFF
    RSPAGE2=0x07000000
    REPAGE3=0x7000000E
    RSPAGE3=0x07000000
    REPAGE3=0x7000000E
    RSPAGE4=0x07000000
    REPAGE4=0x7000000E
    RSPAGE5=0x07000000
    REPAGE5=0x7000000E
    RSPAGE6=0x07000000
    REPAGE6=0x7000000E
    RSPAGE7=0x07000000
    REPAGE7=0x7000000E
    MPBAC =0x00000000
    設定成功
    fpga初期設定中...Ok
    LG-17-4659-33(RX631) v1.00
    Copyright(C) 2017/3..
    Default build : Oct 23 2017 17:07:55
    run=0xFFF1673A
    SCI1(9600,E,8,1)
    FPGA 2017/08/31 :11
    2017-10-23-月 17:13:41
    C:\>ネットワークが使用可能です.
    Serial number=5783
    IP=192.168.0.64
    MAC=00-01-FF-FF-57-83
    MYIP=192.168.0.64
    MYMSK=255.255.255.0
    GWIP=0.0.0.0
    C:\>T
    1111111111111111111111111111111111

Top Page [◀◀]  2   3   4   5   6   7   8   9   ... [▶▶Last Page