エラーメッセージ:Segment ISTACK is too long for segment definition

テクニカル・ノート 95811

アーキテクチャ:

8051

コンポーネント:

linker

更新日:

2018/08/26 3:48

はじめに

IAR Embedded Workbench for 8051バージョン8.20以前からバージョン8.30にプロジェクトを移行した後、内蔵RAMに関するリンカエラーe16が突然発生するようになりました。

Error[e16]: Segment ISTACK (size: 0xc0 align: 0) is too long for segment definition

説明

プロジェクトをリンクする際、リンカ設定ファイル(.xclファイル)が使用されます。このファイルには、リンカのコマンドが含まれています。
IAR Embedded Workbench for 8051では、このファイルは、プロジェクト(Project) > オプション(Options) > リンカ(Linker) > 設定(Config) > リンカ設定ファイル(Linker configuration file)で確認できます。

一方、バージョン8.30では、_NR_OF_VIRTUAL_REGISTERSというシンボルが廃止されました。

今回のリンカエラーは、この追加サイズによって発生します。

解決方法

プロジェクトで使用されている.xclファイルは、バージョン8.20以前のIAR Embedded Workbench for 8051のファイルであると推測されます。このファイルには、以下の記述が含まれています。

-Z(DATA)VREG+_NR_OF_VIRTUAL_REGISTERS=08-7F

必要に応じてこのファイルをコピーし、コピー先のファイルでこの行を以下のように変更してください。

-Z(DATA)VREG=08-7F

詳細なバージョンの説明

この変更は、バージョン8.30.1 (品番EW24413)で導入され、バージョン8.30.2のリリースノートに記載されています。

ヒント

テクニカルノート98110で同様の問題を扱っています。

申し訳ございませんが、弊社サイトではInternet Explorerをサポートしていません。サイトをより快適にご利用いただくために、Chrome、Edge、Firefoxなどの最新ブラウザをお使いいただきますようお願いいたします。