以前にSW4STM32環境でのメモリ領域を確認方法を紹介しましたが、今回はRP2040のPICO-SDK環境でビルド時にメモリ領域を確認する方法を紹介します。
簡単なプログラムであれば、FlashやRamの領域を気にする必要はありませんが、大量にメモリを使用する場合はどれくらい既に占有しているのか気になると思います。リンカの設定を少し追加することで詳細情報をビルド時のコンソールに表示することが可能です。
デフォルトではFlashやRamの領域の情報は表示されません。表示させる場合はプロジェクトフォルダ内の「CMakeLists.txt」のtarget_link_libraries以降に下記のスクリプトを追記します。下記のスクリプトのPROJECT_NAMEの部分はプロジェクトに応じて変更してください。
target_link_options(PROJECT_NAME PRIVATE "LINKER:--print-memory-usage")
実際にプロジェクト名がProjectionBallの場合で追加した際のイメージは下記の通りです。
追記すると下記のようにビルドの度にFLASHとRAMの占有率が表示されるようになります。
Memory region Used Size Region Size %age Used
FLASH: 43380 B 2 MB 2.07%
RAM: 79212 B 256 KB 30.22%
SCRATCH_X: 2 KB 4 KB 50.00%
SCRATCH_Y: 0 GB 4 KB 0.00%
FLASH: 43380 B 2 MB 2.07%
RAM: 79212 B 256 KB 30.22%
SCRATCH_X: 2 KB 4 KB 50.00%
SCRATCH_Y: 0 GB 4 KB 0.00%
なお、STM32等にはない、SCRATCH_X、SCRATCH_Yの領域はマルチコア利用時の振り分けに使用される領域なようです。
RP2040でも大量にメモリを使用するプロジェクトの場合にはぜひ、このような設定を有効化してみてください。