T-SH2MB用デバックモニタの作成 [RX&SH&H8]
ルネサスのサイトから「半導体セミナー」→「サンプルプログラム」と進み、注意事項をよく読み、内容に納得した上で先に進むと、「サンプルプログラム」の中に「SuperHファミリ」が在りますので、ここから先に進み、お使いのSHCコンパイラバージョンに合わせたSH2用モニタプログラムをダウンロードします。
自己解凍式実行ファイルである「sh2hew3.exe」をダブルクリックして、任意のフォルダーに解凍を行います。
解凍先のフォルダーの中の「monitor.hws」をダブルクリックすれば、HEWが起動してワークスペースが開きます。
コンパイラバージョンがちょっとでも異なると色々聞いてきますが、自信を持って(笑)先に進んでください。この程度で怯んでいては、今後のバージョンアップに耐えられません(*´ー`) 。
無事ワークスペースが開いたなら、一旦ビルドを行っておきます。
この時このモニタプログラム専用ライブラリが生成される為に、最初のビルドでは時間が掛かりますが、これ以降は短い時間でコンパイルが完了するようになります。
さて、T-SH2MB専用にカスタマイズを行う必要がありますので、その手順に入ります。
HEWの左側のペインの中の「monitor.c」をダブルクリックするとエディタ上にソースファイルが開きますので、まず先頭から5行目のインクルードファイルを指定し直します。
T-SH2MBで使用しているマイコンはSH2/7145なので、グループとしては7144と言う事になります。
※グループとは、周辺IO等の配置や構成が一致しているマイコン群です。
修正前:#include "7040s.h"
修正後:#include "7144s.h"
次に関数「INITIALIZE」を、外付けRAMの配置に合わせて変更します。
このT-SH2MBはCS1領域の0x400000~0x5fffffまでの間の4Mbyteに32bitでバス接続されたSRAMが搭載されています。また、T-SH2MBのオプションによって変わって来ますが、基本構成では55nsのSRAMが接続されていますので、waitサイズは3とします。
#pragma noregsave(INITIALIZE) /* Non Register Save */
void INITIALIZE(void) /* */
{ /* */
/*SCIで使用する端子が選択されていないので、ここでまず使用する端子の設定を行う*/
PFC.PACRL2.BIT.PA4MD = 3; /* PA4 is TxD1 */
PFC.PACRL2.BIT.PA3MD = 3; /* PA3 is RxD1 */
/*BSCのBCRでCS1空間を有効に設定する*/
PFC.PBCR1.BIT.PB8MD = 2; /*A20を有効にする*/
PFC.PBCR2.BIT.PB7MD = 2; /*A19を有効にする*/
PFC.PBCR2.BIT.PB6MD = 2; /*A18を有効にする*/
PFC.PBCR2.BIT.PB1MD = 1; /*A17を有効にする*/
PFC.PBCR2.BIT.PB0MD = 1; /*A16を有効にする*/
PFC.PCCR.WORD = 0xffff; /*A0からA15を有効にする*/
BSC.BCR1.BIT.A1LG = 1; /*CS1は32bit空間*/
BSC.BCR2.BIT.IW1 = 0; /*CS1空間後のアイドルサイクル無し*/
BSC.BCR2.BIT.CW1 = 0; /*CS1空間連続アクセスアイドルサイクル無し*/
BSC.BCR2.BIT.SW1 = 0; /*CSアサート拡張有り*/
BSC.WCR1.BIT.W1 = 3; /*3wait*/
PFC.PDCRH1.WORD = 0x5555; /*D24からD31までを有効にする*/
PFC.PDCRH2.WORD = 0x5555; /*D16からD23までを有効にする*/
PFC.PDCRL1.WORD = 0xffff; /*D0からD15までを有効にする*/
PFC.PDCRL2.WORD = 0x0000; /*D0からD15までを有効にする*/
PFC.PACRH.BIT.PA23MD = 1; /*WRHHを有効にする*/
PFC.PACRH.BIT.PA22MD = 1; /*WRHLを有効にする*/
PFC.PACRL1.BIT.PA14MD = 1; /*RDを有効にする*/
PFC.PACRL1.BIT.PA13MD = 1; /*WRHを有効にする*/
PFC.PACRL1.BIT.PA12MD = 1; /*WRLを有効にする*/
PFC.PACRL1.BIT.PA11MD = 1; /*CS1 出力PIN*/
} /* Goto Monitor Program */
次は「monitor.sub」を変更します。以下の様にして置きます。
INPUT SUPERH,MONITOR,LOWER
LIST MONITOR.MAP
SHOW SYMBOL
OUTPUT MONITOR.MOT
FORM STYPE
CHANGE INFORMATION=1320
NOOPTIMIZE
LIBRARY SUPERH,7144
LIBRARY MONITOR
DEFINE $BRR=13
DEFINE $STACK=0
START VECTOR/0,ROM,P,C/400,RAM/FFFFE000,USER/FFFFE160,SCI/FFFF81B0
1.INPUTで「LOWER.OBJ」を読むように指定しています。当然、プロジェクトファイルに「LOWER.C」を追加しておきます。
2.LIBRARYを7144に変更しておきます。
3.SCIのボーレートジェネレータの初期値を13(hex)にして置きます。38400bpsで通信します。
4.STARTセクション指定でCソースのセクションである”P”と"C"を”ROM”に続けて記述し、”RAM”や”USER”を内蔵RAM領域に割り当てています。
SCIの開始アドレスは、SCI1のレジスタの開始アドレスに合わせておきます。
外部に多量のRAMが存在しますが、なるべく内蔵RAMを優先的に使った方がお得です。
参考までにmap出力の割り付けを下記に掲載しておきます。
*** Mapping List ***
SECTION START END SIZE ALIGN
VECTOR
00000000 000002bf 2c0 4
ROM
00000400 000057dd 53de 4
P
000057e0 0000bdb3 65d4 4
C
0000bdb4 0000c0c3 310 4
SCI
ffff81b0 ffff81b5 6 4
RAM
ffffe000 ffffe15f 160 4
USER
ffffe160 ffffe160 0 4
これで設定は完了したので、ビルドを掛けてmotファイルを作成します。また同時に作成されるmapファイルの中身を見ますので、エディタでmapファイルを開いてください。
エディタで開いたmapファイルから関数名”printf”と”scanf”を探し出し、開始アドレスをメモしておきます。
FILE=printf
000057e0 0000581b 3c
_printf
000057e0 3c func ,g *
FILE=scanf
0000581c 00005857 3c
_scanf
0000581c 3c func ,g *
後は作成したmotファイルをターゲットに書き込み、通常モードで起動して、デバックモニタのクレジットが通信ターミナルを通して出力されるのを確認すればOKです。
※書き込みにはFDTを使用します。ターミナルソフトにはHTERMを使用します。
※作成したデバックモニタ拡張子をjpgファイルとして登録していますので、右クリックでローカルに落とし、拡張子をzipに変更してから解凍して使ってください。
あ゛っ!
本当に拡張子改変方式を使っていらっしゃるのですね。
vectorに登録されているアーカイバを調べましたが、画像ファイルを書庫にするようなものは見当たりませんでした。本当に実現したらすごいのかも。
# ウィルスにも利用されそうで、ちょっと怖いのですが。
by noritan (2008-02-18 08:57)
> # ウィルスにも利用されそうで
そうですね、ウイルス検出プログラムの検索対象外でバイナリーを送る事が出来そうですからね。
皆さん一応ウイルス対策ソフトは入れて置いてね。
でも考えてみると実行ファイルをソースで提供する方式だって、ウイルス検索の対象外ではあるんで、何処までそのソースを信用できるか?ですね。
by hamayan (2008-02-18 09:13)