FAQ~よくある質問~ | FAQマスタ詳細表示
FAQ詳細情報
ID | 10810940 |
---|---|
FAQカテゴリ(大) | リンカ |
最終更新日 | 2016-01-24 |
質問内容
EWARM 7.x にアップデートしたら no definition for init routine "__iar_zero_init3" が表示されるようになりました。
回答内容
EWARM v7.50.1 より、初期化のないRAMセクションで、リンカ設定ファイルで明示的に do not initialize のリストにないセクションがある場合、エラーになるようになりましたので、ご確認ください。
(7.50.2 以降の) ILINKのリリースノートに下記のように記述されています。
------------------------------------------------------------------------------------------------------
アプリケーションが純粋にアセンブラ言語で記述されて、ランタイムライブラリが使用されていない場合、リンカファイルにはreadwriteデータを含む各セクションについて、do not initializeディレクティブを含める必要があります。たとえば、次のアセンブラコードは
SECTION variables_section:DATA(2) DATA
var1:DS32 1
var2:DS8 64
次のディレクティブがリンカファイルに存在しなければならないことを意味します:
do not initialize { readwrite section variables_section };
リンカディレクティブが省略されると、リンカはvariables_sectionにゼロで初期化されるデータが含まれると想定し、ランタイムライブラリが使用されないために
Error[Lp001]:no definition for init routine "__iar_zero_init3"
を出力します。
------------------------------------------------------------------------------------------------------
参考資料URL
- 登録されているURLはありません。