NXPの公式技術スタッフの皆様、こんにちは。S32K144の使用中にいくつか問題が発生しました。
このアドレス割り当てテーブルでは
システムRAMのサイズは、SRAM_L(下方向に拡張)とSRAM_U(上方向に拡張)という領域に分けられます。
S32K144チップはユーザーによるカスタマイズに対応していますか?
グローバル変数のアドレス割り当ての問題
初期値がゼロでないグローバル変数はSRAM_Lに格納されます。
ゼロで初期化された変数はSRAM_Uに格納されます。
これが理由であり、またSRAM_LとSRAM_Uがカスタムサイズをサポートしている場合にも当てはまります。
2つのアドレス範囲の開始アドレスと終了アドレスに関して、何か規則はありますか?
初期値を持つグローバル変数と持たないグローバル変数では、チップによって割り当てられるアドレス範囲が異なるのはなぜですか?
このチップのフラッシュメモリ割り当てについてもっと詳しく知りたいのですが、チュートリアルや参考資料などがあれば、ダウンロードできる場所を教えていただけますか?
ご返信を心よりお待ちしております。
どうもありがとうございます!
ご返信よろしくお願いします。
こんにちは、 @Ni_
SRAM_LとSRAM_Uは、デバイスアーキテクチャによって定義された固定アドレス範囲を持つ物理メモリ領域です。アクセスは2つのSRAMアレイを隔てる0x20000000境界を越えて行うことはできません。したがって、バーストアクセスを行う際は配列を独立したメモリ領域として扱う必要があります。
リンカは、SRAM_LとSRAM_Uにオブジェクトを自動的に分散させる役割を担っていません。その代わりに、変数とセクションの配置は、開発者が定義したリンカースクリプトによって決定されます。したがって、割り当てられたアドレスがデバイスの有効なメモリ範囲内に収まる限り、SRAM_LとSRAM_Uの間でメモリ領域をどのように割り当てるかは、ユーザー自身が決定する必要があります。
BR、VaneB
こんにちは、 @Ni_
アプリケーションノートが用意されています。S32K3デバイス向けに設計されているものの、RTDで使用されているリンカーの概念は、S32K1デバイスにも基本的に同じである。したがって、これはリンカーの理解と設定に役立つ参考資料となるはずです。
AN14893 : S32K3xx リンカーファイルとスタートアップコード