はじめまして、まつぞのです。 AKI-H8/3048F に SRAM を増設するときのモニタの設定について 教えてください。 [経緯] H8の開発環境について Web で調べたところ、gcc でリモートデバッグ も可能だということがわかり、挑戦する事にしました。SRAMとの配線の 仕方、モニタのカスタマイズの仕方など、ひととおり調べて(先人に感謝<_o_>) そのとおりにやった(つもり(^^;;)だったのですが、世の中そんなに 甘くはなかったのでした。(^^; [症状] 増設したメモリに値を書き込んでもその値が保存されない。 こんな感じです <---------------------------------------------------------- H8/3048 Series Advanced Mode Monitor Ver. 2.2A Copyright (C) Hitachi, Ltd. 1995 Copyright (C) Hitachi Microcomputer System, Ltd. 1995 : D 20000 <ADDR> < D A T A > < ASCII CODE > 20000 FD 4F 5B 0F BF 07 BF 07 FD 07 DF 07 DF 0F 5F 07 ".G[....G......_." 20010 FD 47 BF 0F FF 07 AA 07 7B 0F FE 07 FB 0F F3 0F ".G...G..{G.G...." 20020 FF 07 FF 0F FF 07 BF 07 F8 07 FB 07 BF 4F DB 47 "...G...G...G.G.O" 20030 B9 0F D9 07 FF 0F FF 07 B2 0F D9 0F F3 07 FB 0F ".....G.O........" 20040 B9 0F FF 07 D3 07 FD 0F D7 47 FB 07 D5 0F A5 0F ".......G.O......" 20050 9F 0F E9 07 9C 0F BE 07 D9 0F DD 07 BD 0F B1 4F ".G...O.G........" 20060 F3 0F FD 07 FA 0F DD 0F DB 07 FD 0F BF 0F AC 47 "...G............" 20070 79 07 9F 0F EF 07 D7 0F B4 07 91 0F B1 0F 1A 47 "y..............." 20080 FD 0F FF 07 CE 4F ED 07 CD 4F FF 07 FD 07 BF 4F "................" 20090 BB 07 B2 0F FF 0F BF 07 EF 0F FD 07 F9 0F 89 07 "................" 200A0 BF 47 DF 4F DF 47 DE 47 7F 47 F7 4F D5 07 FB 0F "................" 200B0 DF 4F FF 47 BE 0F D9 4F EB 0F FB 4F DF 07 DB 0F "................" 200C0 F3 0F F5 07 D7 4F F1 07 9F 0F DB 47 D3 0F AD 0F "................" 200D0 F3 07 FF 0F DF 07 DB 07 BF 07 73 0F D3 0F FF 07 "..........s....." 200E0 AD 0F BE 07 FF 07 FA 4F FF 07 FD 0F DF 0F BF 07 ".............G.." 200F0 DD 07 FD 0F 9F 07 BD 07 FF 0F A6 07 5D 0F DD 0F "............]..." : F 20000 20060 0 : D 20000 <ADDR> < D A T A > < ASCII CODE > 20000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 "................" 20010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 "................" 20020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 "................" 20030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 "................" 20040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 "................" 20050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 "................" 20060 00 00 FD 00 FA 00 DD 00 DB 00 FD 00 BF 00 AC 00 "................" 20070 79 00 9F 00 EF 00 D7 00 B4 00 91 00 B1 00 1A 00 "y..............." 20080 FD 00 FF 00 CE 00 ED 00 CD 00 FF 00 FD 00 BF 00 "................" 20090 BB 00 B2 00 FF 00 BF 00 EF 00 FD 00 F9 00 89 00 "................" 200A0 BF 00 DF 00 DF 00 DE 00 7F 00 F7 00 D5 00 FB 00 "................" 200B0 DF 00 FF 00 BE 00 D9 00 EB 00 FB 00 DF 00 DB 00 "................" 200C0 F3 00 F5 00 D7 00 F1 00 9F 00 DB 00 D3 00 AD 00 "................" 200D0 F3 00 FF 00 DF 00 DB 00 BF 00 73 00 D3 00 FF 00 "..........s....." 200E0 AD 00 BE 00 FF 00 FA 00 FF 00 FD 00 DF 00 BF 00 "................" 200F0 DD 00 FD 00 9F 00 BD 00 FF 00 A6 00 5D 00 DD 00 "............]..." : M 20020 20020 00 ? FF 20021 FF ? 20022 00 ? 55 20023 55 ? . : D 20000 <ADDR> < D A T A > < ASCII CODE > 20000 00 57 00 57 00 57 00 57 00 17 00 57 00 57 00 57 ".W.W.W.W...W.W.W" 20010 00 57 00 57 00 57 00 57 00 57 00 57 00 57 00 57 ".W.W.W.W.W.W.W.W" 20020 FF 57 55 57 00 17 00 57 00 57 00 57 00 57 00 57 ".WUW.W.W.W.W.W.W" 20030 00 17 00 57 00 57 00 57 00 57 00 57 00 17 00 57 "...W.W.W.W.W...W" 20040 00 57 00 57 00 17 00 57 00 57 00 57 00 57 00 57 ".W.W...W.W.W.W.W" 20050 00 57 00 57 00 57 00 57 00 57 00 57 00 17 00 57 ".W.W.W.W.W.W...W" 20060 00 17 FD 57 FA 57 DD 57 DB 57 FD 57 BF 57 AC 57 "...W.W.W.W.W.W.W" 20070 79 57 9F 57 EF 57 D7 57 B4 57 91 57 B1 57 1A 57 "yW.W.W.W.W.W.W.W" 20080 FD 57 FF 57 CE 57 ED 57 CD 57 FF 57 FD 57 BF 57 ".W.W.W.W.W.W.W.W" 20090 BB 17 B2 57 FF 17 BF 57 EF 57 FD 17 F9 57 89 17 "...W...W.W...W.." 200A0 BF 57 DF 57 DF 57 DE 57 7F 57 F7 57 D5 57 FB 57 ".W.W.W.W.W.W.W.W" 200B0 DF 57 FF 57 BE 57 D9 57 EB 57 FB 57 DF 57 DB 57 ".W.W.W.W.W.W.W.W" 200C0 F3 57 F5 57 D7 57 F1 57 9F 57 DB 57 D3 17 AD 57 ".W.W.W.W.W.W...W" 200D0 F3 57 FF 57 DF 17 DB 57 BF 57 73 57 D3 57 FF 57 ".W.....W.WsW.W.W" 200E0 AD 57 BE 57 FF 17 FA 57 FF 57 FD 57 DF 57 BF 57 ".W.W...W.W.W.W.W" 200F0 DD 57 FD 57 9F 17 BD 57 FF 17 A6 57 5D 57 DD 57 ".W.W...W...W]W.W" : -----------------------------------------------------------> 同じような操作を内蔵 RAM について行うと、指定したアドレスの 値がちゃんと書き変わります。 どこが間違っているのか、ハードウェア/ソフトウェアの両方から 追っかけているのですが、まだ解決できません。ハードウェアっぽい 事については、別に質問させて頂きます。 [環境] 増設した SRAM:TC551001CP-85(東芝) 日立の HM268128 の互換品。秋月で購入。 モニタ :日立のモニタを Web からダウンロードしてカスタマイズ。 CPU動作モード:モード5 [モニタのカスタマイズの内容] (a) cmd24 S フォーマットのチェックをしないように変更。(日立のWebサイトのとおり) (b) monitor.sub 間違っているとすれば RAM,STACK のアドレスぐらいだと思うのですが。。 STACK:モード5のエリア1は H'20000 - H'3FFFF までなので 領域の最後を設定する、と理解しています RAM :モニタが使う RAM 領域の指定ですが、内蔵 RAM の先頭を 指定しています。 USER :増設した SRAM を、モード5でエリア1に割り当てるので この値に設定しています。 <------------------------------------------------------------------ INPUT monitor INPUT cmd01,cmd02,cmd03,cmd04,cmd05,cmd06,cmd07,cmd08,cmd09,cmd10 INPUT cmd11,cmd12,cmd13,cmd14,cmd15,cmd16,cmd17,cmd18,cmd19,cmd20 INPUT cmd21, cmd23,cmd24,cmd25, cmd27,cmd28,cmd29,cmd30 INPUT cmd31,cmd32,cmd33,cmd34,cmd35,cmd36,cmd37,cmd38 INPUT cmd26,dmy39 INPUT mod01,mod02,mod03,mod04,mod05,mod06,mod07,mod08,mod09,mod10 INPUT mod11,mod12,mod13,mod14,mod15,mod16,mod17,mod18,mod19,mod20 INPUT mod21,mod22,mod23,mod24,mod25,mod26,mod27,mod28,mod29,mod30 INPUT mod31,mod32,mod33,mod34,mod35, mod37,mod38,mod39 INPUT advanced INPUT cpu01,cpu02,cpu03,cpu04 DEFINE $BRR(0C) DEFINE $STACK(03FFFC) PRINT MONITOR.MAP OUTPUT MONITOR.ABS START VECTOR(0),ROM(130),RAM(0FEF10),USER(20000),SCI(0FFFFB8) EXIT ------------------------------------------------------------------> (c) monitor.src <------------------------------------------------------------------ ;************************************************************************ ;* H8/300H Monitor Program (Advanced Mode) Ver. 2.2A * ;* Copyright (C) Hitachi, Ltd. 1995 * ;* Copyright (C) Hitachi Microcomputer System, Ltd. 1995 * ;************************************************************************ .PROGRAM INITIALIZE ; Program Name .CPU 300HA ; CPU is H8/300H Advanced .SECTION ROM,CODE,ALIGN=2 ; ROM Area Section ;************************************************************************ ;* Export Define * ;************************************************************************ .EXPORT _INITIALIZE ; User Initialize Module ABWCR: .EQU H'FFFFEC ASTCR: .EQU H'FFFFED WCR: .EQU H'FFFFEE WCER: .EQU H'FFFFEF P1_DDR: .EQU H'FFFFC0 P2_DDR: .EQU H'FFFFC1 P5_DDR: .EQU H'FFFFC8 P6_DDR: .EQU H'FFFFC9 P8_DDR: .EQU H'FFFFCD ;************************************************************************ ;* User Initialize Module * ;* Input ER5 <-- Return Address * ;* Output Nothing * ;* Used Stack Area --> 0(0) Byte * ;************************************************************************ _INITIALIZE: ; RAM用初期化 MOV.B #H'FF, R0L MOV.B R0L, @ABWCR ; CS1領域バス幅8ビット(P4:D0-D7) MOV.B #H'FF, R0L MOV.B R0L, @ASTCR ; CS1領域3ステートアクセス MOV.B #H'F0, R0L MOV.B R0L, @WCR ; 0wait MOV.B #H'FF, R0L MOV.B R0L, @P1_DDR ; P1をアドレスバス(A0-A7) MOV.B R0L, @P2_DDR ; P2をアドレスバス(A8-A15) MOV.B R0L, @P5_DDR ; P5をアドレスバス(A16-A19) MOV.B #H87, R0L ; P6をRD/WR を有効にする MOV.B R0L, @P6DDR MOV.B #H'E8, R0L MOV.B R0L, @P8_DDR ; P8-3 CS1出力 JMP @ER5 ; Goto Monitor Program .END ; ------------------------------------------------------------------> どこかおかしいところがあれば、教えていただけると幸いです。 それでは宜しくお願いします。 _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ _/ Keiji Matsuzono k-zono@xxxxxxxxxxxxxxxx _/ _/ fingerprint = 8C E9 4B 40 10 86 0C 2E D3 9B 2E 63 35 59 11 69 _/ _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/