新井です。 On Sun, 24 Oct 1999 03:00:52 +0900 "amalthea" <amalthea@xxxxxxxxxxxxxxxxx> wrote: > おこんばんわぁ〜〜〜〜〜アマルテアこと 小野@千葉です。 > > 原因がさっぱりわからないリンカーのエラー??が出るん > ですが、わかる方いらっしゃいますか??。 > > ** 117 ADDRESS SPACE DUPLICATE > > なんですが、プログラム的なエラーは無いはずなんですけど > 、エラーの内容を知りたくて、マニュアル類を探したんですが > どこにもエラー類の解説が見当たらなくて、困ってしまいました。 日立製であろうと秋月製であろうと、リンカーはアドレスを明示的に指定しない 限り、リンク時にアドレスを重複して割り付ける事は有りません。例えば、リン ク時のバッチファイル(*.sub File)の中に、 START P,C,D,ROM(100),EXRAM(05000),CR,DR,B,RAM(0FEF10),USER(0FF200),SCI(0FFF FB8) の様に記述すると、プログラム(秋月のCコンパイラでは、コントロールプログラ ム領域のセクション名は、自動的にPとなる)は、下記の様に16進で100番地から割 付が始まります。 P H'00000100 - H'00000257 H'00000158 ad9851 H'00000258 - H'000002B7 H'00000060 adc H'000002B8 - H'000004DF H'00000228 lcd_drv H'000004E0 - H'00000993 H'000004B4 rtm_h8 幾つかのOBJファイルをリンクする際は、Pの領域は、順次割り付けられ決して重 複する事は有りません。Pが終われば、その後にC、D、ROMセクションが順次続き ます(上記の例では)。 しかし、上記例では、EXRAM領域が再び絶対アドレスで指定されています。そこで、 P(C,D,ROMを含む)セクションが大きくなり、H'5000番地を越えると、EXRAM領域と 重なって ** 117 ADDRESS SPACE DUPLICATE が出る可能性があります。 そこで、アマルテアこと小野@千葉さんの場合は、私の予想では、例外処理のベ クター領域(0番地から順次)とP領域の重複辺りが一番可能性があると思います。 明示的にアドレスを宣言しなければ、この部分は動作しませんのでよく起きるパ ターンと思われます。 他に、初めてリンクを実行したのでなければ、どの時点で出るようになったのか を分析し、その時点で追加した部分を分析する事が重要です。追加部分できっと プログラムやデータ領域が増えた事に起因している可能性があります。 更に、リンカー用バッチファイル(*.sub)で、上記の様なSTART指定部分で、下記 の様に START P,C,D,ROM,EXRAM,CR,DR,B,RAM,USER,SCI(100) 番地指定を一個にして、リンクします。もちろんこれでは、H8ボードにローディ ングしても動きませんが、何処が悪いかを調査する方法としては使えます。 ** 117 ADDRESS SPACE DUPLICATE がでなくなれば、順次アドレス指定を復活して確かめていけば、たどりつくでしょ う。 リンカーが生成するMAPファイルの中で、アドレスの割付状況を見る事が出来ます。 良く調査すると悪い部分が読めるでしょう。リンクモジュールが多いと大変です が、一度挑戦してみては? 新井 ------------------------------------------- Kenji Arai / JH1PJL E-mail: arai876@xxxxxxxxxxx kenjia@xxxxxxxxxxxx jh1pjl@xxxxxxxx URL http://www.page.sannet.ne.jp/kenjia/