cancel
Showing results for 
Search instead for 
Did you mean: 

Knowledge Base Articles

タイトル:FX3 SDKのコードサイズの最適化- KBA230335- Community Translated (JA)

Employee

タイトル:FX3 SDKのコードサイズの最適化- KBA230335- Community Translated (JA)

Community Translated by keni_4440091         Version: **

Translation - English: Optimizing Code Size in FX3 SDK - KBA230335

質問:

FX3 SDKのコードサイズを最適化するための推奨設定は何ですか?

回答:

各シンボルで消費するスペースの明確化

新しい機能が既存のプロジェクトに追加される時、コードスペースが足りなくなる場合があります。GNU
ARM
ツールチェーンにバンドルされているarm-none-eabi-nmツールは、より多くのコードスペースを消費するシンボルを明確化するために使用する事が可能です。

GNU umELFファイルにすべてのシンボルを表示します。しかし、--sizeオプションは各々のシンボルのサイズを表示し、かつ--size-sortが指定された場合は、サイズによってソートします。従って、コマンドプロンプトで下記のコマンドを使用して、最も多いコードスペース(10進数)を消費しているシンボルを明確化する事ができます。

arm-none-eabi-nm --print-size –size-sort --radix=d “path
of elf file”

このコマンドはサイズに沿った各々のシンボルを昇順に表示します。

コードサイズの最適化

コードサイズを最適化するためには下記の方法が使えます:

  1. リリースモードでプロジェクトを立ち上げる

デバッグモードでプロジェクトを構築している間、デバッグおよびシンボル情報が含まれます。また、最適なデバッグを有効にするために最適化オプションは無効になります。しかし、リリースモードでは、デバッグおよびシンボル情報は削除され、かつ最適化オプションはコードサイズを削減するために有効になります。このようにコードサイズを削減するためにリリースモードでプロジェクトを構築する事を推奨します。リリースモードでプロジェクトを構築するためには、ビルド ドロップ-ダウンリストからリリース(リリースコンフィギュレーション)を選択して下さい。1.プロジェクト構築のためのリリース設定の選択 
pastedImage_2.png
     リリースコンフィギュレーションを使用してプロジェクトを構築している時、最適化レベルは自動的にOptimize most (-O3)に変更されます。     最適化オプションを確認するには:a.     プロジェクトエクスプローラーのプロジェクトを右クリック。b.     ポップアップメニューからプライオリティをクリックc.     プロパティダイアログの左のペインからC/C++ビルドを展開し、設定をクリック。d.     ツール設定タブに移動。e.     最適化レベルを確認するためにオプティマイゼーションをクリック。2.プロジェクトの最適化設定 
pastedImage_16.png

  1. 場合によっては、最適化レベルをOptimaze most (-O3)からOptimize size (-Os)に変えることで更にサイズを削減できます。最適化レベルドロップ-ダウンリストからOptimize size (-Os)を選択して下さい。(2参照)

  1. .imgファイルのサイズを削減するもう一つの方法はリンク時最適化を使う事です。リンク時最適化はすべてのコンパイルユニットで通過する最適化パスです。また、この方法がコードサイズ削減のために使用されますが、コードの機能が欠落しないことを確認するために十分なテストを行う必要があります。

リンク時最適化を有効にするには:

  1. プロジェクトの最適化設定に移動して下さい。(2参照)
  2. Link-time optimizer (-flto)を選択。(3参照)

3Link-time Optimizerを有効にする  pastedImage_18.png

  1. Applyをクリック、そしてOKをクリック。
  2. プロジェクトを構築する前に、一旦プロジェクトをクリーンします。プロジェクトを右クリックし、Clean Projectをクリック。
  3. プロジェクトが構築されました。

0 Likes
Version history
Revision #:
1 of 1
Last update:
‎Jul 07, 2020 05:02 AM
Updated by:
 
Contributors