[H8-ML(2523)] Re: 20KB を超えると転送できない??
From: "Fujisawa Toru" <fujisawa@xxxxxxxxxxxxxxxxxxxxx>
Date: 2002年12月07日(土)00時26分21秒
藤澤@神工大です。お世話になります。

hamayanさん、度々の素早いレスをありがとうございます!
それから、みなさんのおかげで転送で止まらなくなりました!!
これでやっと、半分壁を越えられました。

> hamayan です。
> うーん、そうですねー、トラ技のバックナンバーのページを見たら、2002年3
月
> 号はアセンブラまでですね。
> どうも、2001年6月号の SH2の記事とごちゃごちゃに成っていました。m(__)m
> あれも、日立のコンパイラの話なので、参考に成ります。一部アセンブラで、
> 後はC言語でDやBセクションの初期化を行う例が掲載されています。

2001年6月号なら手元にあったので(SH2は関係ないと思って開かなかったので灯
台下暗しですが・・・)さっそく読んでみました。なるほど、これなら私にも理解
で
きそうです。

> "Fujisawa> > ROM(D,R)
> ROM化するので、Dセクションの内容がRセクションにコピーされるよ!っ
> て宣言です。

そこまではOKです。H38HMAN.TXTの記述は読んではいたのですが、やはり
十分理解できなかったので、クリアやコピーを詳しく教えていただいて助かり
ました。

> "Fujisawa> > VECTOR(0),P,C,D(100),R,B(0FFEF10)
> VECTORは割込みベクター、それに続いて、P、C、DセクションをRO
> M領域に取ります。
> Dのコピー先のRセクションと、Bセクションを内蔵RAM領域に取っていま
> す。

 ここで、Cセクションに入れるべきデータ使っていないといういことから
CANNOT FIND SECTIONエラーが出ますが、一度無視してCを入れてみたら
なんと!転送で止まらなくなりました!!最初からみなさんのご指摘のように、
これをやればよかったんですね(随分遠回りしました。)!!

問題の部分は現在、次のようになっています。STARTUP(0)としているのは、
startupとvectorの別ファイルがあるからです(中身は十分理解していません
が・・・)。

START STARTUP(0),P,C,D(200),B,R(0FEF10)

(こうなる以前は、MAPファイルをみてもCという文字がないのでCセクションが
後ろに
来ているのかどうか私には判断できなかったのですが)やはりご指摘のように、
Cセク
ションが後ろに配置されるという問題のようですね(※この点については以下の
ページ
も参考になりました)。なるほどです。

http://www.fsinet.or.jp/~robot/data/h8/h8.htm


> 起動直後、スタックの設定を終えた辺りで、
>
> mov.l	#(STARTOF D),er5
> で、Dセクションのアドレスを取得できます。
> 同様の手順で、
> mov.l	#(STARTOF R),er6
> で、Rセクションの取得、
> mov.l	#(SIZEOF D),er4
> で、Dセクションのサイズ、
> 後はこの二つのアドレス間で、データ−のコピーを行えば良いのです。
> クリアは、
> mov.l	#(STARTOF B),er5
> mov.l	#(SIZEOF B),er4
> でクリアするコードが書けると思います。

ありがとうございます!
もう半分は、これをやることです。
クリアしていないためか、書いてない文字が液晶に出ていますが、
転送ができたので大変助かりました。

よい報告が出来るように、また頑張ってみます。
ではまた!

---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.423 / Virus Database: 238 - Release Date: 2002/11/25


スレッド概略
[2478(R)](起点)
 └[2520(U)]
   └[表示中]


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


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