こんにちは、NXP チームの皆様、
私は以下の環境を使用してS32K311プロジェクトに取り組んでいます。
MCU: S32K311
IDE: S32 Design Studio 3.6.7
RTD: S32K3_RTD_5.0.0_D2408_ASR_REL_4_7_REV_0000_20241002
AUTOSAR: 4.7
当初、プロジェクトは順調にビルディングされていました。
プロジェクトが進むにつれて、ADC、eMIOS、LCU、ICU、PIT、PORT、LPUART、LPSPI、TRGMUX、MCLなど、いくつかのRTDドライバを有効化・設定し、アプリケーションに必要なその他のペリフェラルを活用しました。
これらのドライバを統合した後、プロジェクトはリンク段階で以下のエラーで失敗します。
.non_cacheable_bss will not fit in region 'int_sram_no_cacheable' section .int_results overlaps section .non_cacheable_bss region 'int_sram_no_cacheable' overflowed by 440 bytes collect2.exe: error: ld returned 1 exit status
デフォルトのリンカスクリプトには、以下のSRAM領域が含まれています。
int_sram : ORIGIN = 0x20400000, LENGTH = 0x00003F00 int_sram_fls_rsv : ORIGIN = 0x20403F00, LENGTH = 0x00000100 int_sram_no_cacheable : ORIGIN = 0x20404000, LENGTH = 0x00003B00 int_sram_results : ORIGIN = 0x20407B00, LENGTH = 0x00000100 int_sram_shareable : ORIGIN = 0x20407C00, LENGTH = 0x00000400
リンカーは、 .non_cacheable_bssがこのセクションは、割り当てられた int_sram_no_cacheable 領域を約440 バイト超過しています。
複数のRTDドライバがS32K311で有効になっている場合、このメモリ使用は予想されますか?
.non_cacheable_bssのサイズを減らすための推奨方法はありますか?
リンカースクリプトを修正してint_sram_no_cacheable領域を増やすことは推奨されますか?もしそうなら、S32K311の推奨メモリ配置はどうなっていますか?
キャッシュできないセクションに割り当てられるメモリを減らすRTDの設定オプションはありますか?
複数のRTDペリフェラルを統合する際に同じような問題に遭遇した方はいらっしゃいますか?
何かご助言や解決策をご提案いただければ大変ありがたいです。
よろしくお願いします。
こんにちは、 @Esakkiさん
以下のディスカッションThreadは、似たような問題を扱い、有用なトラブルシューティングの提案を提供してくれるので役立つかもしれません。
さらに、S32K3のアプリケーションノートには、リンカーファイルやスタートアップコードについてより詳しく説明されており、メモリ領域の変更やカスタマイズ方法も含まれています。
AN14893 : S32K3xx リンカーファイルとスタートアップコード
この最後のThreadでは、コード最適化技術に関するいくつかの提案が含まれています。
S32K3xxでAPPのコードを最適化してパフォーマンスを向上させる方法
BR、VaneB