NXPテクニカルサポート様
こんにちは!
Zhengdian AtomのRT1052開発ボード用SDKには、XIP実行モードとSDRAM実行モードの2種類のサンプルプログラムが含まれています。SDRAM実行モードはデバッグモードでのみ実行可能で、電源が切断されたり、デバッガが切断されたり、システムが再起動されたりすると、プログラムは実行されません。Zhengdian AtomのXIP実行モードプログラムは教育目的のものであり、公式のNXP SDKほど機能が充実していない部分もあります。
質問があります。「C:\Users\admin1\Desktop\SDK_25_06_00_EVKB-IMXRT1050\boards\evkbimxrt1050\lvgl_examples\lvgl_demo_widgets\mdk\flexspi_nor_sdram_releasep」にあるルーチンは、XIPモードで実行されていますか、それともSDRAMモードで実行されていますか?コンパイルされたMAPファイルを確認したところ、実行領域はQSPI FLASHとSDRAMの両方にあります。そして、LVGLファイルはQSPI FLASHとSDRAMの両方で実行されます。したがって、lv_conf.hファイル内の「#define LV_MEM_SIZE (500 * 1024U)」で定義されているメモリ空間は、SDRAMにありますか、それとも内部RAMにありますか?
こんにちは、 @FromCH0 さん。
NXPテクニカルサポートチームにご連絡いただきありがとうございます!
プロジェクト `flexspi_nor_sdram_release` は、純粋な SDRAM デバッグモードではなく、NXP SDK で定義されているハイブリッドモード(FlexSPI NOR フラッシュ XIP + SDRAM データ)で動作します。NXP SDK 25.06.00 の公式ドキュメントには、このターゲットのプログラムテキストは FlexSPI NOR フラッシュに格納され、XIP を介して直接実行できる一方、読み書き可能なデータは外部 SDRAM に格納されることが明記されています。
詳細については、以下のリンクを参照してください。https: //docs.mcuxpresso.nxp.com/mcuxsdk/25.06.00/html/boards/RT/evkbimxrt1050/gettingStarted/topics/build_...
したがって、MAPファイルにQSPI/FlexSPIフラッシュとSDRAMの実行領域の両方が表示されるのは正常です。通常、LVGL関数コードと読み取り専用定数はフラッシュに格納され、LVGLランタイム変数、動的メモリプール、および表示バッファはSDRAMに格納されます。ソースファイルは、フラッシュにコードセグメントを、SDRAMにデータセグメントを同時に生成することもあり、その実行場所はソースファイル全体だけでは判断できません。
LV_MEM_SIZE (500 * 1024U) は、LVGL の内部動的メモリ プールのサイズを定義するだけで、アドレスを直接指定するものではありません。プロジェクトが LVGL の組み込みメモリマネージャを使用し、カスタム アロケータを有効にせず、固定メモリ プール アドレスを設定していない場合、flexspi_nor_sdram_release リンカ構成では、この約 500 KiB のメモリ プールは通常、オンチップ RAM ではなく、外部 SDRAM に RW/ZI データとして配置されます。
生成されたMAPファイル内でwork_mem、lv_mem、または対応するLVGLメモリプールシンボルを検索して確認できます。アドレス0x800xxxxxは、外部SDRAMに配置されていることを示しています。
よろしくお願いします、
ギャビン