コードサイズ制限が持続したままになる

テクニカル・ノート 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 と同様です。


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

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