[H8-ML(4503)] Fw: [H8-ML(4502)] Re: SRAM増設時のSUB ファイル等の設定について行き詰まりました
From: "Yuki WAKUDA" <wakuchin@xxxxxxxxxxxx>
Date: 2004年02月23日(月)01時08分09秒
はまやん さん

wakuです

早速のご返答感謝致します.
いろいろ試してみたいですが,とりあえず先にご指摘の件に関して,言及しておきます.

> hamayan です。
> ちょっとやりたい事が見えないのですが、
> "Yuki> モニタで,"f 20000 20100 55"
> と言う事は作ったプログラムをモニタを使ってRAMにロードし、動かしたいのですか?
> "Yuki> START R(20000),P(200),D(8000),C(9000)や,
> とは言え、ここではばっちりROM領域を指定していますし、そうすると作ったプログラ
> ムをROMに書いて動かしたいと?

モニタで動かすことが出来ればそれが最も良かったんですが,モニタ上での簡単なプログラムの動作は成功したのですが,RAM動作用にマップを書
き換える必要がありますよね?
これを,秋月のデバッグモニタ付属のKAKIKATA.txtに沿って書き換えたりは出来たのですが,Cでコンパイルした場合の書き換えの方法でまず挫折
してしまったので,モニタ上での駆動を一時保留にして,ROM動作で開発を行っていたのです.
#疑問だったのは,モニタで観測しながらSCIでの通信はできるのでしょうか?
#モニタ駆動中はLCDに何か表示されるのでしょうか?(今までのところモニタ駆動中は全て一列目に■■■■■■と表示されています.)

デバッグモニタについては,参考にさせていただこうとしたサイトのリンク(日立サイト)が移転していたのですが,net上を漂っていた
「300hmoni.zip」を手に入れ,これと,
ttp://www.kazutaka.org/computer/akih8-1.html
ここを参考に,構築していました.実行するとver.2.0Cでした.(他にver.2.2Aらしきものも試しました)


> "Yuki> まず最初は,Aki-USB開発kitにてモニタプログラムを書き込んだりしていました.SRAMの配線も合体ロボ型で組んで試していたのです
が,
>
> AKI-USBキットは半田面側にSRAMを実装できるし、付属していませんでしたか。
> ここに実装するのが一番確実で、楽と思います。

USBkitに実装する為に最初はサンドイッチでやっていました.
今は秋月のマザーボードの空いた場所に設置しています.


> "Yuki> モニタで,"f 20000 20100 55"
> "Yuki> 等のコマンドで書き込んでみても,エラーが出てどうしてもうまくいかず,分からないので,
>
> モニタ(って多分ルネサスのモニタかな?)には、外部RAMをアクセスする為の改造が
> 入っています?

上で書いたように日立サイトの古いモニタです.モニタに関しては
・秋月のマザーでは外部RAMに対応できましたが,秋月USB開発キットのマザーボードでは読み書きが正確にできませんでした.


> "Yuki> もう一機普通の秋月H8 3048マザーボードを買ってきて,同様にSRAMの配線をして比べてみて,やっとAki - H8 3048 のUSB開発kitでは,
P3-0〜7
> "Yuki> (D8〜D15)がUSBに使われてしまっていることに気付きました.
> バスなので普通の使われ方ですね。SRAMと共用できます。

共有できるのですね,では,ここが競合していることが原因ではなさそうですね...USB開発kitでのモニタプログラムの不動はもう少し詳しく確
認してみます.まだまだ勉強中です.


> "Yuki> #########usbtest.sub######
> "Yuki> START R(0FEF10),P(200),D(8000),C(9000);←ここをいろいろと変えてみたのですが.
> Cで確保するセクションはSUBファイルで指定しているのに、
> "Yuki> #########start.asm#######
> "Yuki>  .CPU 300HA
> "Yuki>  .SECTION V,CODE,LOCATE=H'000000
>
> アセンブラで確保しているセクションはLOCATE命令を使うと、混乱の元になりそう。
>
> #########usbtest.sub######
> START V(0),P,C,D(200),R,B(0FEF10)

↑このSUBの中にV(0)を入れるものも試してみたのですが,だめだったのは,START.ASMの中にもLOCATEの記述がしてあったことが原因だったのです
ね!また試してみます.

> #########start.asm#######
>   .CPU 300HA
>   .SECTION V,CODE
>
> の方が・・・。
>
>
>
> "Yuki>  ; RAM用初期化ここからは自分で勝手に加えたSRAM初期化のコードです
>     ・
>     ・
>     ・
> "Yuki>  MOV.B #H'FF,R0L
>
> V(ベクタ用セクション?)セクションに実行コードを置くのはかなりまずい。
>
>
> "Yuki> ;----------------------------------------------------------
> "Yuki>  .SECTION P,CODE,ALIGN=2
> "Yuki> _start:
> "Yuki>  mov.l #H'0FFF10,er7
>
> バスの初期化はここに入れるべき。
>
> "Yuki> mov.l #DATA_END, er2   ; 転送終了
これは自分では多分絶対にわからなかったです(汗 有難う御座います.
ちょっと試してみます.


> #DATA_ENDはアセンブラファイルの中でしか有効ではない。
> セクションの開始アドレスを取得するなら
> #STARTOF Dとか#STARTOF R、
> セクションのサイズを取得するなら
> #SIZEOF Dが使えます。
>   mov.l #(STARTOF D),er0   ; 転送元
>   mov.l #(STARTOF R),er1   ; 転送先
>   mov.l #(STARTOF R + SIZEOF D), er2   ; 転送終了
有難う御座います.このように例で示して頂かないと多分解決できないです..これも試して見ます.少し希望が出てきました..

> Bセクションの0クリアも忘れずに。


> "Yuki> 最後に添付しているようになっておりますが,Rセクションと,Bセクションが外部RAM領域に割り当てられているのですが,Rセクション
では,トー
> "Yuki> タルADDRES=0になっていますし,main.c内にてint    x[10000]といったような大きなファイルを
> 確保しても,MAPファイルには何も変化がありませ
> "Yuki> main.c内の大きな変数確保がRセクションで行わなければならないのかと思っているのですが..
> main関数の内部で宣言して自動変数になっていません?。または、0クリアのみ
> のBセクション扱いになっているはず。どちらにしろ
> int    x[10000];
> だけでは、初期化済みデータとはなっていません。
main内部で宣言してます.
SECTIONに関しては,ここの過去ログにあります以下のものを鵜呑みにしているのですが,
C♪	.section C , data
C♪	;Cで言うところのconst型の変数のデータが入る
C♪	;const c = 10; の c という変数

D♪	.section D , data
D♪	;int i = 1 という際の1という初期値が入る

R♪	.section R , data
R♪	;int i = 1 という際のiという変数のためのエリア
R♪	;上記Dと非常に深い関係

B♪	.section B , data
B♪	;int i という際のiという変数が入る

これによると,例えば,X[500]は今,main内で
#######
int    X[500];
for(i=0;i<500;i++){
X[i] = ○○;
}
#######
というような使い方をしていますが,これはRセクションとBセクションのどちらなのでしょうか.
これがBセクションだとすれば,

どちらにせよ,いただいたアドバイスを元に,もう少し粘ってみます.五里霧中になっていてかなり気が滅入っていたので,元気がでました.有難
う御座いました!!

waku
wakuchin@xxxxxxxxxxxx

スレッド概略
[表示中](起点)
 └[4508(1)]


投稿順に移動
[←前の記事へ(P)]
[→次の記事へ(N)]


リスト表示へ
[このスレッド(T)]
[本記事の前後(L)]