コードサイズ制限が持続したままになる
テクニカル・ノート 24687
アーキテクチャ:
All
コンポーネント:
general
更新日:
2018/09/04 7:13
はじめに
IAR Embedded Workbench が 実行コードを生成せずに too much code というメッセージが出力されます。
対象となる診断メッセージ
Error[Li016]: size limit exceeded
Error[Li016]: size limit exceeded ##### > 12288
Fatal Error[e89]: Too much object code produced (more than x bytes) for this package
考えられる原因
2つのシナリオがあります。
シナリオ A
コードサイズ制限のある他のライセンス (例えば評価版) がインストールされていて、このライセンスが使用されている。
シナリオ B
正しいエディションの IAR Embedded Workbench を使用しているが、何か問題がある。
考えられる解決策
シナリオ A
確かに正しい IAR Embedded Workbench (サイズ制限がないもの)を使っていることを確認してください。
この手順は、使用しているライセンス管理システムによって異なります。ほとんどの製品はLMS2へ移行しているため、LMS2について説明します。( もし古いシステムを使用している場合は、- 下の「LMS1 シナリオA」 セクションを参照してください。)
IAR Embedded Workbench IDEの[ヘルプ]メニューの「ライセンスマネージャ」を選択して、ライセンスマネージャを起動してください。
ライセンス詳細 > 選択されたライセンスの画面に "32K Kickstart" のような表示がある場合、ライセンスはサイズ制限があります。 同様に "_KS" 、 "_BL" で終わる機能名(例えばARM_EW_COMPILER_KS)が表示されている場合もライセンスはサイズ制限があります。 問題ないライセンスがドロップダウンリストにある場合は、それを選択しなおしてください。ない場合は取得する必要があります。
シナリオ B
プロジェクト内のすべてのオブジェクトコードが適切にビルドされている(つまり「サイズ制限なし」である)ことを確認してください。 適切なエディションを使用していることを確認し、以下を実行してください:
- プロジェクト内のすべてのソースコードをコンパイル/アセンブル
- メニュー:プロジェクト > クリーン
- メニュー:プロジェクト > すべてを再ビルド
- ソースコードのないオブジェクト(例えばサードパーティのライブラリ)も、適切なエディションでビルドされている必要があります。
- ARM用 IAR Embedded Workbench を使用していて、exceeded limit 12288 bytes となった場合、C-RUN を無効にしてください。(サイズ制限モードで有効)
プロジェクトメニュー > オプション > ランタイム解析 - 「有効化」チェックを外します。
背景
コードのサイズ制限のIAR Embedded Workbench で生成したオブジェクトコードを混在させてリンクした場合、コードサイズ制限が適用されます。
古いバージョン(2012-2013 以前)
シナリオ A
LMS1 では、異なるバイナリが異なる機能を提供します。そのため、サインオンメッセージで、Kickstart、Base-line であるかなどを表示します。例: IAR C/C++ Compiler V6.12.1.40500, Base-line Version for Atmel AVR
サインオン・メッセージは、例えば、以下で確認できます。
- コンパイラリストファイルのヘッダ
- IAR Embedded Workbench のビルド ログウィンドウ
- コマンドラインコンパイラを実行している場合の標準出力
PCに、正しいエディションがインストールされている場合、代わりにそれを起動してください。ない場合は、インストールする必要があります。
シナリオ B
必要なアクションは、上記LMS2 シナリオB と同様です。
全ての製品名は、それぞれの所有者の商標または登録商標です