初めて投稿させて頂きます.wakuと申します. すごくかなり長文・駄文ですみません. これまで,H8 3048fの4kbyteのRAMに,限界を感じ,ひっそりとSRAM増設を試みてきました. その過程でこれまで少しづつ全くわからなかったマイコンのことが分かってきて,マニュアルの言っている意味が徐々に理解できるようになってき ており,少しでも前に進めるうちはできるだけ自力で解決しようと思っていたのですが.. ここにきて,どうしても前に進めなくなってしまいました.思いつくことをあれやこれやと試したのですが,全く検討がつかず,自力では無理を 感じてしまいMLの力を借りようと思った次第です....(;-公-) 過去ログなどを見たりして,いろいろと試したのですが,うまく動作しません. よろしくご教授をお願いいたします. 環境は,色々試したのですが, まず最初は,Aki-USB開発kitにてモニタプログラムを書き込んだりしていました.SRAMの配線も合体ロボ型で組んで試していたのですが, モニタで,"f 20000 20100 55" 等のコマンドで書き込んでみても,エラーが出てどうしてもうまくいかず,分からないので, もう一機普通の秋月H8 3048マザーボードを買ってきて,同様にSRAMの配線をして比べてみて,やっとAki - H8 3048 のUSB開発kitでは,P3-0〜7 (D8〜D15)がUSBに使われてしまっていることに気付きました. USBキットでのSRAM増設改造は,前例はあるものの,自分の知識では無理(or相当な時間がかかり)そうなので,まずは情報も多いシリアル通信で の(通常の秋月マザーボードを使っての)SRAM増設とシリアル通信を試みるように方針を変更しました. こちらでは,モニタを埋め込んでみて,MコマンドやFコマンドを使って増設したSRAMに無事書き込み,Dコマンドで再度正確に読み出しが出来たの で,すんなり行くだろうと思っていたのですが.(ここまでも長かったのですが,,ML過去ログをかなり参考にさせていただきました.) ここからが壁でした. windowsでの秋月付属のCコンパイラで行っていますが,RAM領域が変わったことをどこでどのように設定してよいのか全くわかりません. 色々試したのですが,どうしてもわからないのでおかしいところがあれば,アドバイスいただけないでしょうか? 増設するSRAMはHM628128DLP5で1Mbitサイズなのでモード5での動作を考えています. SRAMの配線は, SRAM = H8 3048 A0〜7 = P1-0〜7 A8〜15 = P2-0〜7 A16 = P5-0 IO0〜7 = P3-0〜7(D8〜D15) CS1 = P8-3 OE = P6-4 WE = P6-5 CS2 = P8-2 その他GNDとVcc という,至って普通な配線かと思います. 2タイプ試したことと,SRAM増設しない設定では正常に動作することから,配線間違いは無いと思います. 今成功しているファイルは,以下にずらずらと(すみません)示すファイル.SUBと.ASMファイルですが, これをSRAM増設に対応させるには,この0FEF10をモード5の動作にて20000番地に入れ替えればよいのかなと思い, START R(20000),P(200),D(8000),C(9000)や, START R(20000),P(20200),D(28000),C(29000)や, などいろいろやったのですが,どのようにしても確保する変数は内蔵RAM領域に確保されているような感じです(∵確保する変数の量を変えてみる と,4kbyteが限界のような振る舞いをします). mainプログラム中では,int X[500];といった配列変数を確保しようとしています.int X[1100];などと確保しようとすると固まります.. これはint=4byteなので,500個で約2kbyteであるが,1100個では約4.4kbyteであることから,RAM領域に確保できないと認識しておりますが. #########usbtest.sub###### OUTPUT usbtest PRINT usbtest INPUT start,main,sci,lcd LIB U:\Nijsseni\h8\wakuchin\c38hab START R(0FEF10),P(200),D(8000),C(9000);←ここをいろいろと変えてみたのですが. ROM (D,R) EXIT ######################## #########start.asm####### .CPU 300HA .SECTION V,CODE,LOCATE=H'000000 ; RAM用初期化ここからは自分で勝手に加えたSRAM初期化のコードです ABWCR: .EQU H'FFFEC ASTCR: .EQU H'FFFED WCR: .EQU H'FFFEE WCER: .EQU H'FFFEF P1_DDR: .EQU H'FFFC0 P2_DDR: .EQU H'FFFC1 P5_DDR: .EQU H'FFFC8 P8_DDR: .EQU H'FFFCD MOV.B #H'FF,R0L MOV.B R0L, @ABWCR:8 ; CS1領域バス幅8ビット(P4:D0-D7) MOV.B #H'FF,R0L MOV.B R0L,@ASTCR:8 ; CS1領域3ステートアクセス MOV.B #H'F0,R0L MOV.B R0L,@WCR:8 ; 0wait MOV.B #H'FF,R0L MOV.B R0L,@P1_DDR:8 ; P1をアドレスバス(A0-A7) MOV.B R0L,@P2_DDR:8 ; P2をアドレスバス(A8-A15) MOV.B R0L,@P5_DDR:8 ; P5をアドレスバス(A16-A19) MOV.B #H'E8,R0L MOV.B R0L,@P8_DDR:8 ; P8-3 CS1出力 ;ここまでが勝手に加えたSRAM初期化コードです.この場所も疑問があるのですが.. .IMPORT _main .DATA.L _start ;リセットベクトル .DATA.L int_error .DATA.L int_error .DATA.L int_error .DATA.L int_error .DATA.L int_error .DATA.L int_error .DATA.L int_error .DATA.L int_error .DATA.L int_error .DATA.L int_error .DATA.L int_error IRQ0: .DATA.L int_error IRQ1: .DATA.L int_error IRQ2: .DATA.L int_error IRQ3: .DATA.L int_error IRQ4: .DATA.L int_error ;---------------------------------------------------------- .SECTION P,CODE,ALIGN=2 _start: mov.l #H'0FFF10,er7 ; mov.l #H'21100,er7 ;↑この部分があやしいと思い,このような行に色々と入れ替えてみたのですが・・・だめでした ;初期化付きデータを使用する場合、RAMに転送する mov.l #H'8000, er0 ; 転送元(8000) mov.l #H'0FEF10, er1 ; 転送先 ; mov.l #H'20100, er1 ; 転送先 ;↑この部分が怪しいと思い,このような行に色々と入れ替えてみたのですが・・・だめでした mov.l #DATA_END, er2 ; 転送終了 init_loop: cmp.l er1, er2 beq init_end mov.b @er0+, r3l mov.b r3l, @er1 inc.l #1, er1 bra init_loop init_end: jsr @_main ; 割り込み未使用 int_error: rte ;usb_interrupt: ; push.l er0 ; push.l er1 ; push.l er2 ; push.l er3 ; push.l er4 ; push.l er5 ;; push.l er6 ; jsr @_usb_int ; pop.l er6 ; pop.l er5 ; pop.l er4 ; pop.l er3 ; pop.l er2 ; pop.l er1 ;; pop.l er0 ; rte ;---------------------------------------------------------- ; 割り込み許可、禁止ルーチン .EXPORT _EnableInterrupt,_DisableInterrupt _EnableInterrupt: andc.b #H'3f,ccr rts _DisableInterrupt: orc.b #H'c0,ccr rts ;---------------------------------------------------------- .SECTION D,DATA .SECTION B,DATA DATA_END: .RES.W 1 .END ########## どこが不要な部分かわからないので,全部載せてしまいました. リンク時に生成されるMAPを見ると, 最後に添付しているようになっておりますが,Rセクションと,Bセクションが外部RAM領域に割り当てられているのですが,Rセクションでは,トー タルADDRES=0になっていますし,main.c内にてint x[10000]といったような大きなファイルを確保しても,MAPファイルには何も変化がありませ ん.. main.c内の大きな変数確保がRセクションで行わなければならないのかと思っているのですが.. 長いと思いましたが,一応MAPファイルも添付させて頂きます. 自分の知識量がまだ少ない為,どんな小さなことでもかなり参考になると思いますのでお願いします. waku wakuchin@xxxxxxxxxxxx 以下usbtest.MAPです,長くてすみません. ###############usbtest.MAP###### H8/300H LINKAGE EDITOR (Evaluation software) Ver.1.0 LINK COMMAND LINE LNK -subcommand=usbtest.sub LINK SUBCOMMANDS OUTPUT usbtest PRINT usbtest INPUT start,main,sci,lcd LIB D:\H8\akic\c38hab START R(20000),P(200),D(8000),C(9000) ROM (D,R) EXIT H8/300H LINKAGE EDITOR (Evaluation software) Ver.1.0 PAGE : 1 *** LINKAGE EDITOR LINK MAP LIST SECTION NAME START - END LENGTH UNIT NAME MODULE NAME ATTRIBUTE : CODE NOSHR V H'00000000 - H'0000005B H'0000005C start start * TOTAL ADDRESS * H'00000000 - H'0000005B H'0000005C ATTRIBUTE : CODE NOSHR P H'00000200 - H'00000233 H'00000034 start start H'00000234 - H'000005D5 H'000003A2 main main H'000005D6 - H'000006A7 H'000000D2 sci sci H'000006A8 - H'000008E5 H'0000023E lcd lcd H'000008E6 - H'00000943 H'0000005E sprintf sprintf H'00000944 - H'00000973 H'00000030 vsprintf vsprintf H'00000974 - H'00000C4D H'000002DA addd3 addd3 H'00000C4E - H'00000CC7 H'0000007A dtol3 dtol3 H'00000CC8 - H'00000CFD H'00000036 itod3 itod3 H'00000CFE - H'00000FEB H'000002EE muld3 muld3 H'00000FEC - H'0000100D H'00000022 spregld3 spregld3 H'0000100E - H'00001035 H'00000028 spregsv3 spregsv3 H'00001036 - H'00002DE3 H'00001DAE _fmtout _fmtout H'00002DE4 - H'000031C9 H'000003E6 _dti _dti H'000031CA - H'0000336D H'000001A4 _its _its H'0000336E - H'000033C7 H'0000005A memcpy memcpy H'000033C8 - H'000033E3 H'0000001C strlen strlen H'000033E4 - H'00003409 H'00000026 divl3 divl3 H'0000340A - H'00003445 H'0000003C divul3 divul3 H8/300H LINKAGE EDITOR (Evaluation software) Ver.1.0 PAGE : 2 *** LINKAGE EDITOR LINK MAP LIST *** SECTION NAME START - END LENGTH UNIT NAME MODULE NAME ATTRIBUTE : CODE NOSHR P H'00003446 - H'00003465 H'00000020 mull3 mull3 H'00003466 - H'00003483 H'0000001E mv83 mv83 H'00003484 - H'00003491 H'0000000E ned3 ned3 H'00003492 - H'000034B9 H'00000028 _allzero _allzero H'000034BA - H'000035B1 H'000000F8 _calcnpw _calcnpw H'000035B2 - H'00003655 H'000000A4 _log10 _log10 H'00003656 - H'000036CD H'00000078 _lsfts _lsfts H'000036CE - H'000036FB H'0000002E _pow5 _pow5 H'000036FC - H'00003775 H'0000007A _rsfts _rsfts H'00003776 - H'00003821 H'000000AC _sub _sub H'00003822 - H'000038C5 H'000000A4 _unpack _unpack H'000038C6 - H'00003903 H'0000003E memcmp memcmp H'00003904 - H'000039BF H'000000BC cmpd3 cmpd3 H'000039C0 - H'00003A47 H'00000088 _mult64 _mult64 H'00003A48 - H'00003BA9 H'00000162 _power _power H'00003BAA - H'00003C93 H'000000EA _rnd _rnd H'00003C94 - H'00003D2F H'0000009C _setsbit _setsbit H'00003D30 - H'00003E35 H'00000106 frexp frexp H'00003E36 - H'00003F6B H'00000136 modf modf H'00003F6C - H'00003F8D H'00000022 dslc3 dslc3 H'00003F8E - H'00003FAF H'00000022 dsruc3 dsruc3 H'00003FB0 - H'00004001 H'00000052 _duchek _duchek H'00004002 - H'00004053 H'00000052 _lsft _lsft H8/300H LINKAGE EDITOR (Evaluation software) Ver.1.0 PAGE : 3 *** LINKAGE EDITOR LINK MAP LIST *** SECTION NAME START - END LENGTH UNIT NAME MODULE NAME ATTRIBUTE : CODE NOSHR P H'00004054 - H'000041E1 H'0000018E _mult _mult H'000041E2 - H'0000427D H'0000009C _pow10 _pow10 H'0000427E - H'00004289 H'0000000C eqd3 eqd3 H'0000428A - H'00004299 H'00000010 ltd3 ltd3 H'0000429A - H'000042E1 H'00000048 _add _add H'000042E2 - H'00004311 H'00000030 memset memset * TOTAL ADDRESS * H'00000200 - H'00004311 H'00004112 ATTRIBUTE : DATA NOSHR ROM D H'00008000 - H'00008000 H'00000000 start start * TOTAL ADDRESS * H'00008000 - H'00008000 H'00000000 ATTRIBUTE : DATA NOSHR C H'00009000 - H'0000907D H'0000007E main main H'0000907E - H'00009085 H'00000008 _fmtout _fmtout H'00009086 - H'00009185 H'00000100 _ctype _ctype H'00009186 - H'0000920D H'00000088 _its _its H'0000920E - H'00009215 H'00000008 _log10 _log10 H'00009216 - H'000092F5 H'000000E0 _pow5 _pow5 H'000092F6 - H'000093F9 H'00000104 _power _power H'000093FA - H'00009401 H'00000008 frexp frexp H'00009402 - H'00009409 H'00000008 modf modf * TOTAL ADDRESS * H'00009000 - H'00009409 H'0000040A H8/300H LINKAGE EDITOR (Evaluation software) Ver.1.0 PAGE : 4 *** LINKAGE EDITOR LINK MAP LIST *** SECTION NAME START - END LENGTH UNIT NAME MODULE NAME ATTRIBUTE : DATA NOSHR RAM R H'00020000 - H'00020000 H'00000000 start start * TOTAL ADDRESS * H'00020000 - H'00020000 H'00000000 ATTRIBUTE : DATA NOSHR B H'00020000 - H'00020001 H'00000002 start start H'00020002 - H'00020041 H'00000040 main main H'00020042 - H'00020091 H'00000050 sci sci H'00020092 - H'000200D1 H'00000040 lcd lcd H'000200D2 - H'0002010D H'0000003C _fmtout _fmtout H'0002010E - H'0002010F H'00000002 _errno _errno * TOTAL ADDRESS * H'00020000 - H'0002010F H'00000110 H8/300H LINKAGE EDITOR (Evaluation software) Ver.1.0 PAGE : 1 *** LINKAGE EDITOR EXTERNALLY DEFINED SYMBOLS LIST *** SYMBOL NAME ADDR TYPE $ADDD$3 H'00000A3E DAT $CMPD$3 H'00003904 DAT $DIVL$3 H'000033E4 DAT $DIVUL$3 H'0000340A DAT $DSLC$3 H'00003F6C DAT $DSRUC$3 H'00003F8E DAT $DTOL$3 H'00000C4E DAT $EQD$3 H'0000427E DAT $ITOD$3 H'00000CC8 DAT $LTD$3 H'0000428A DAT $MULD$3 H'00000DB4 DAT $MULL$3 H'00003446 DAT $MV8$3 H'00003466 DAT $NED$3 H'00003484 DAT $SUBD$3 H'00000A0E DAT $sp_regld$3 H'00000FEC DAT $sp_regsv$3 H'0000100E DAT _ClearLCD H'000007C6 ENT _DisableInterrupt H'00000230 DAT _EnableInterrupt H'0000022C DAT _GetSCI H'00000606 ENT _GetSW H'00000526 ENT _H8init H'0000054C ENT _InitLCD H'00000756 ENT _InitSCI H'000005D6 ENT _LCDOut4 H'000006FE ENT _LocateLCD H'00000806 ENT _PrintLCD H'0000082A ENT _PrintSCI H'00000626 ENT _PutLCD H'000007DA ENT _PutSCI H'000005F6 ENT _ScanSCI H'00000616 ENT _SetLED H'000004D8 ENT __add H'0000429A ENT __allzero H'00003492 ENT __calcnpw H'000034BA ENT __ctype H'00009086 DAT __dti H'00002DE4 ENT __duchek H'00003FB0 ENT __errno H'0002010E DAT __fmtout H'00001036 ENT __its H'000031CA ENT __log10 H'000035B2 ENT __lsft H'00004002 ENT __lsfts H'00003656 ENT __mult H'00004054 ENT __mult64 H'000039C0 ENT __pow10 H'000041E2 ENT __pow5 H'000036CE ENT __power H'00003A48 ENT __rnd H'00003BAA ENT H8/300H LINKAGE EDITOR (Evaluation software) Ver.1.0 PAGE : 2 *** LINKAGE EDITOR EXTERNALLY DEFINED SYMBOLS LIST *** SYMBOL NAME ADDR TYPE __rsfts H'000036FC ENT __setsbit H'00003C94 ENT __sub H'00003776 ENT __unpack H'00003822 ENT _frexp H'00003D30 ENT _getad H'00000580 ENT _initSRAM H'00000554 ENT _main H'00000234 ENT _memcmp H'000038C6 ENT _memcpy H'0000336E ENT _memset H'000042E2 ENT _modf H'00003E36 ENT _sprintf H'000008E6 ENT _strlen H'000033C8 ENT _timer_init H'000005A6 ENT _vsprintf H'00000944 ENT _wait H'000005B8 ENT _wait_ad H'0000056E ENT