2155674_ja-JP

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

2155674_ja-JP

2155674_ja-JP

S32K3+RTD400+SPD 1.0.4リンクファイル

SPD104 の使用時にリンク ファイルに関するいくつかの問題が発生しました。現在、iar バージョン 9.50.2 を使用しています。S32DS から iar に変換するときに生成される icf ファイルには、SPD 関連のコンテンツが含まれません。SPD104 マニュアルの eMcem_MemMap に関するセクションを参照します。いくつかのセグメント割り当てが icf ファイルに追加されましたが、依然としていくつかの問題が発生しました。

最も頻繁に発生するエラーは次のとおりです

エラー[Lp005]: 配置にコンテンツを含むセクションが混在しています(例:eMcem.oのrwデータセクション.s32_saf_bssシンボル: [eMcem_DriverState]") [ROM への配置に適しています] およびコンテンツのないセクション (例: "zi section .bss in abs.o シンボル: [abs_output]") [RAM への配置に適しています]


コードから、例えば、eMcem_MemMap.hには次のコードがあります。

#ifdef EMCEM_START_SEC_VAR_ZERO_INIT_UNSPECIFIED

/ * *

* @file eMcem_MemMap.h

* @ref eMcem_MemMap_h_REF_1 に違反します

*/

#undef EMCEM_START_SEC_VAR_ZERO_INIT_UNSPECIFIED

/ * *

* @file eMcem_MemMap.h

* @ref eMcem_MemMap_h_REF_1 に違反します

*/

#未定義 MEMMAP_ERROR

#pragma ghs セクション bss=".s32_saf_bss"

#endif

マニュアルの理解によれば、ここの.s32_saf_bssセグメントはRAMに配置されるセグメントであるはずだが、eMcem.cでは、次のコードがあります

#定義 EMCEM_START_SEC_VAR_ZERO_INIT_UNSPECIFIED

/* @ref eMcem_c_REF_0410 に違反します */

/* @ref eMcem_c_REF_2001 に違反します */

#include "eMcem_MemMap.h"


/ * *

* @brief ドライバの状態。

* @details eMCEM ドライバは、起動時または実行時に状態を EMCEM_S_UINIT から EMCEM_S_INITIALIZED に変更します。

* 構成ロックタイプがHARD_LOCKに設定されている場合、ドライバは構成をロックします

* 状態を EMCEM_S_LOCKED に変更します。

*/

eMcem_StateType eMcem_DriverState = EMCEM_S_UNINIT;


#EMCEM_STOP_SEC_VAR_ZERO_INIT_UNSPECIFIED を定義します

コードでは、eMcem_DriverState に明示的に値が割り当てられています。ここでの割り当ては0ですが、ルールによれば、データセクションに配置する必要があります。


変数のセグメント割り当てロジックを強制的に修正するようにコンパイラを設定できます。つまり、「コンテンツなし」に属する必要がある明示的にゼロ初期化された変数を、.data セグメント (コンテンツあり) から .bSS セグメント (コンテンツなし) に移動し、リンカー スクリプトの要件 (RAM 領域には「コンテンツなしセグメント」のみを配置できる) に準拠させて、混合配置の競合を解決します。しかし、これは根本的な問題の解決策ではないと思う。


この問題に対するより合理的な解決策はあるでしょうか?

Re: S32K3+RTD400+SPD 1.0.4 link file

こんにちは@Neo1096さん

このThreadのリンカーファイルを使用できますか?

https://community.nxp.com/t5/S32K/S32K3-SPD-DMA/mp/2139734


BR、ダニエル

タグ(1)
評価なし
バージョン履歴
最終更新日:
‎11-21-2025 07:23 AM
更新者: