2 Replies Latest reply on May 26, 2020 5:28 PM by MoTa_728816

    Community Translation - Known Issues with GCC Link Time Optimization (LTO) Feature in PSoC ® Creator™ 3.1 - KBA97708

    MoTa_728816

      Hi,

       

      I'd like to translate KBA97708 into Japanese.

       

      Please confirm to my work.

       

      moto

       

      Original KBA: KBA97708

      Known Issues with GCC Link Time Optimization (LTO) Feature in PSoC ® Creator™ 3.1 - KBA97708

        • 2. Re: Community Translation - Known Issues with GCC Link Time Optimization (LTO) Feature in PSoC ® Creator™ 3.1 - KBA97708
          MoTa_728816

          Original KBA: KBA97708

          Known Issues with GCC Link Time Optimization (LTO) Feature in PSoC ® Creator™ 3.1 - KBA97708

           

          Translated by: https://community.cypress.com/people/MoTa_728816

          ==============================

          タイトル:PSoC® Creator™ 3.1 GCC リンク タイム オプティマイゼーション (LTO) 機能における既知の問題 - KBA97708

           

          ヴァージョン:*A

           

          質問:

          PSoC Creator プロジェクトで GCC LTO が機能しないのはなぜですか?

           

          回答:

          PSoC Creator (ヴァージョン 3.0およびそれ以降) に含まれている GCC は下記の説明のように GCC LTO 機能に関する問題の影響を受けやすいことが知られています。

           

          デザインが GCC LTO を使用しているのかを確認する方法は?

           

          • PSoC Creator 3.1 で GCC ツールチェーンを使用していて、Build Settings ダイアログで下記の設定を行っている場合、問題が発生する可能性があります:

            Compiler > Optimization Link Time Optimization が “True”に設定されている 

            Linker > OptimizationOptimization Level が “None”以外に設定されている。

            注意:これらの設定は問題の発生を回避するために、PSoC Creator 3.2 からは削除されています。

           

          • どのヴァージョンであっても PSoC Creator を GCC ツールチェーンで使用していて、Build Settings ダイアログの Compiler または Linker > Command Line > Custom Flags でコマンド引数 -flto を手動で入力することにより、LTO を有効にしている場合、問題が発生する可能性があります。

           

          問題 1 - GCC リンカエラー :  Referenced Symbol Defined in Discarded Section

           

          デザインで GCC LTO が有効に設定されていると、リンカ(Linker)がデザインに誤った最適化を行う可能性があります。この場合下記のようなリンカエラーが発生します:

          `_sbrk' referenced in section `.text._sbrk_r' of <path>/arm-none-eabi/lib/armv6-m\libg_s.a(lib_a-sbrkr.o): defined in discarded section `.text' of .\CortexM0\ARM_GCC_484\Release\Cm0Start.o (symbol from plugin)

           

          注意:例え現状でデザインが問題なくコンパイルされていても、一見無関係な変更を行うことで問題が発生してしまう場合があります。

          合わせて https://answers.launchpad.net/gcc-arm-embedded/+question/261316 もご参照ください。

           

          問題 2 - PSoC 4/ PSoC 5LP 初期化時のハードフォールト

           

          PSoC 4 または PSOC 5LP ファミリのデバイスを使用したデザインで GCC LTO を有効にしていると、CPU が初期化時にハードフォールトを発生する可能性があります。

          これはクロスモジュール インラインと cy_boot コンポーネント 4.20 またはそれ以前のヴァージョンの ISR のリマッピングの衝突が原因です。

           

          この問題を解決するには PSoC Creator 3.2 では cy_boot コンポーネントをヴァージョン 5.0 にアップデートしてください。

           

          PSoC Creator 3.1 またはそれ以前のヴァージョンでこの問題を解決するのには、Generated_Source/<PSOC4 / PSoC5>/cy_boot/Cm0Start.c ファイルの LTO を無効にしてください。Workspace Explorer でこのファイルを右クリックして、Compiler の Link Time Optimization 設定を無効にしてください;“デザインが GCC LTO を使用しているのかを確認する方法は?”参照。

          ==============================

          26-May-2020

          moto