編集履歴一覧に戻る
sanguisorbaのアイコン画像

sanguisorba が 2021年09月19日07時44分07秒 に編集

初版

タイトルの変更

+

1Mbit SRAM搭載AKI-H8-USB用モニタデバッガの作り方 (H8/3048, 3052)

タグの変更

+

H8

本文の変更

+

**くれぐれも自己責任にてご活用ください。** ## 特徴 AKI-H8-USB (終売品)にはSRAM用パターンがあります。 今回は1MbitのSRAMを設置して、SRAM上でプログラムを実行できるデバッガを作成しました。 3048/3052ともにモード6で動作します。 アドレス空間は220000 - 23FFFF まで使えます。 ## 用意したもの ### ハード * AKI-H8/3052F USB開発キット (終売品・公式HPから削除済) * USB-シリアル変換 * SRAM 1Mb M68AF127B https://akizukidenshi.com/catalog/g/gI-01083/ ### ソフト * 300hhew3.exe (モニタデバッガ本体 リンク切れ) 300hhew2.exeでもコンパイルできるみたいですが充分な検証をやっていません http://web.archive.org/web/20050208165856/http://www.renesas.com/jpn/support/seminar/sample/index.html あと、コードサイズが300hhew3よりも大きいです * HEW 4 (評価版 要ユーザー登録) https://www.renesas.com/jp/ja/software-tool/cc-compiler-package-h8sx-h8s-h8-family * HtermとHtermが動く環境 https://www.renesas.com/jp/ja/document/swr/1403891?r=721346 ## ソース変更点 基本的な方針はこちらと同じです。同じ要領でプロジェクトを開いてください。 H8/3052F外部RAM対応モード6用モニタデバッガ生成メモ http://www7a.biglobe.ne.jp/~kanikani/h83052mon6/h83052mon6.html 違う点を説明します。 ### monitor.src まず、monitor.cを**削除**して、かわりにmonitor.srcを読み込みます。 monitor.srcについては既に先駆者がおられます。いずれかを選んでください。(ウェイト処理が異なります) **AKI-H8のコツ -SRAM増設編-** http://home.k03.itscom.net/kazutaka/computer/akih8-1.html こちらのウェブページでは8ビットバス幅によるmonitor.srcが公開されています。 2.2Aとなっていますが3.0でも改変なしで使えます。 **H8/3052Fネットワークボード向けデバックモニタ** https://www.vector.co.jp/soft/other/h8/se298945.html ネットワークボードとありますがAKI-H8-USBでも使えます。 ただし、monitor.subのパラメータが異なるのでコンパイル済のモトローラSコードは使えません。 3052とありますが、monitor.cと違ってmonitor.src側で3048/3052を指定する記述はないので3048でも使えます。 最後から4行目のコメントアウト部を外して有効にするかはお好みで(私は外して有効にしました) ``` mov.b #h'ff,r0l ;CS1は0WAITにする為にWSCを禁止 mov.b r0l,@WCER ;何だけれどWAIT端子を固定しないと ↑この部分がコメントアウトされているので;を取る ``` ### monitor.sub monitor.subは次のように記述してください H8/3052F ``` INPUT ADVANCED,MONITOR,LOWER LIST MONITOR.MAP SHOW SYMBOL OUTPUT MONITOR.MOT FORM STYPE CHANGE INFORMATION=1320 NOOPTIMIZE LIBRARY ADVANCED,3052 LIBRARY MONITOR DEFINE $BRR=13 DEFINE $STACK=FFFF00 START VECTOR/0,ROM,C/100,RAM/FFDF10,USER/220000,SCI/FFFFB8 ``` H8/3048 ``` INPUT ADVANCED,MONITOR,LOWER LIST MONITOR.MAP SHOW SYMBOL OUTPUT MONITOR.MOT FORM STYPE CHANGE INFORMATION=1320 NOOPTIMIZE LIBRARY ADVANCED,3048 LIBRARY MONITOR DEFINE $BRR=0C DEFINE $STACK=FFFF00 START VECTOR/0,ROM,C/100,RAM/FFEF10,USER/220000,SCI/FFFFB8 ``` ## ビルドする LOWER.Cをプロジェクトに追加するのを忘れずに! ![こんな感じになっていればビルドできると思います](https://camo.elchika.com/83913b48b9149cf730f5fe1553c3d2bd80476b90/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f38303034383535362d663062322d343030302d616334642d3266373330643761393339392f33666136303830302d303961382d343130662d623634372d323165343361316564653261/) あとはH8WriteTurboやFDTやF-ZTATなどの書き込みツールで転送すれば完了です。 ### サンプルプログラム Htermの使い方は前回紹介しました https://elchika.com/article/d2d4ea76-a4b2-4549-b174-d6862252da93/ AKI-H8-USB用のLチカプログラムを書いてみました。これをアブソリュートロードモジュールにして転送・実行できれば動作確認は終了です。 ウェイト処理の時間は前回と同様、割込みタイマーを使っているわけではないのでデバッガ依存です。 ``` ;---------------------------------- ; AKI-H8-USB用Lチカプログラム デバッガ用 ;---------------------------------- ; ;-----CPUの指定----- .CPU 300HA ;----- アドレス指定----- .SECTION P,CODE,LOCATE=H'220000 ;-----シンボル----- PBDR .EQU H'FFFFD6 ;ポートBデータレジスタ LED1 .BEQU 0,PBDR ;LED1(PB-0) LED2 .BEQU 1,PBDR ;LED2(PB-1) LED3 .BEQU 2,PBDR ;LED3(PB-2) LED4 .BEQU 3,PBDR ;LED4(PB-3) ;-----I/Oの初期設定----- INIT: MOV.B #H'FF,R0L ;出力設定 MOV.B R0L,@H'FFFFD4 ;ポートB ;-----MAIN----- BSET LED1 ;LED1の出力をON BSET LED2 ;LED2の出力をON BSET LED3 ;LED3の出力をON BCLR LED4 ;LED4の出力をOFF MAIN: BNOT LED4 ;LED4の出力を反転 BNOT LED1 ;LED1の出力を反転 JSR @WAIT BNOT LED1 ;LED1の出力を反転 BNOT LED2 ;LED2の出力を反転 JSR @WAIT BNOT LED2 ;LED2の出力を反転 BNOT LED3 ;LED3の出力を反転 JSR @WAIT BNOT LED3 ;LED3の出力を反転 BNOT LED4 ;LED4の出力を反転 JSR @WAIT JMP @MAIN ;無限ループ ;-----MAIN終了----- ;-----ウェイト----- WAIT: MOV.L #D'500000,ER6 ;ウェイトサブルーチン AAA: DEC.L #1,ER6 NOP BNE AAA RTS ; .END ```