カスタマーサポートセンター

FAQ~よくある質問~ | FAQマスタ詳細表示

FAQ詳細情報

ID 10810920
FAQカテゴリ(大) リンカ
最終更新日 2016-01-02

質問内容

TN42505: 出力フォーマットは、複数のアドレス空間を扱えません。

回答内容

ターゲット: AVR
コンポーネント リンカ
公開 2011/05/18 13:46

 

概要
リンク中、モトローラとインテルのヘキサファイルについて「複数アドレス空間」の問題が発生することがあります。.

 

メッセージ
Error[e133]: The output format motorola cannot handle multiple address spaces.
Use format variants (-y -O) to specify which address space is wanted.

 

背景
モトローラとインテルヘキサフォーマットのような1つ以上のアドレス空間をサポートしない出力フォーマットは、メモリ空間あたり1つのファイルが必要になるかも知れません。1つのメモリ空間 (フラッシュ) の出力ファイルを作成している場合問題ありませんが、Data空間の EEPROM、外部 ROMにも出力する場合、リンカは、出力フォーマットがこれを実現できないので上のエラーを出力します。

 

ソリューション 1
1つの出力フォーマット、例えば Motorola を使用する場合、1つのメモリ空間あたり1つの出力ファイルが必要になります。

* フラッシュメモリへの出力制限するには XLINK オプション-y を使用します。
Project > Options > Linker > Extra options > "Use command line options" にチェックを入れ、

-y(CODE)

を書きます。

* 他のメモリ空間のための出力を行うには、メモリ空間あたり1つの出力ファイルを生成する必要があります。この目的には、XLINK オプション -O を使います。

例えば、EEPROM 空間と Motorola フォーマットを使用している場合、Project > Options > Linker > Extra options > "Use command line options" にチェックを入れ、

-Omotorola,(XDATA)=eeprom.a90

を記入します。Motorola-example.zip をチェックしてください。

 

ソリューション 2
追加の出力、例えば ubrof8 と Intel-standard を使用する場合、EEPROM にオブジェクトを置く場合 "Extra Output" に Intel-standard を使用できません。

ソリューションは、

* "Extra Output" オプションがディゼーブルであることを確認します。
* ubrof8 フォーマットの出力ファイルを作成する場合、
Project> Options> Linker>Output
をイネーブルにします。"other" をクリックし、'Ubrof8 (forced)' をドロップダウンメニューから選択します。
* Intel-standard フォーマットを作成する場合、1つのメモリ空間あたり1つのファイルが必要です。フラッシュメモリへの出力を制限するには、
Project> Options> Linker> Extra options >>"Use command line options" にチェックを入れ、

-Ointel-standard,(CODE)=flash.hex

を書きます。

他のメモリ空間、例えば EEPROM空間の出力を作成するには、
Project> Options> Linker> Extra options >>"Use command line options" にチェックを入れ、

-Ointel-standard,(XDATA)=eeprom.hex

を書きます。Intel-standard-example.zip をチェックしてください。

 

全ての製品の名前は、それぞれの所有者の商標または登録商標です。

参考資料URL