linker_script.ld の メモリ配置について UNCACHED_RAM

RZ-A2Mグループ RZ-A2M Simple Applications Package V8.20 

Pmod ESP32 Wi-Fi サンプルプログラム  についてです。 

他のサンプルプログラム も そうなのですが、 

linker_script.ld   の メモリ配置に 以下のような 記述があり

UNCACHED_RAM  0x82200000 0x00200000

この領域に

static uint8_t video_buffer[VIDEO_BUFFER_NUM][(VIDEO_BUFFER_STRIDE * VIDEO_BUFFER_HEIGHT)] __attribute__ ((section("Video_RAM")));

static uint8_t frame_buffer[R_BCD_CAMERA_FRAME_BUF_NUM][R_BCD_CAMERA_HEIGHT * R_BCD_CAMERA_WIDTH] __attribute__ ((section("Capture_RAM")));

static r_drp_simple_isp_t param_isp __attribute__ ((section("UNCACHED_BSS")));

などなど 配置されています。

RZ/A2M SUB ボード RTK79210XXB00000BE ユーザーズマニュアルの 

1.7 メモリ配置図

には 「その他:2044MB」 と表記されており ます

この領域には 保存可能なメモリが存在するのでしょうか

内臓RAM以外に ペリフェラル関係のメモリが 存在するのでしょうか

length = 0x00200000  となっていますが  どこまで 拡張できるのですか

そのあたりの 仕様がどこかに 記載されていますか?

どうぞよろしくお願いいたします。

  • atsuatsuさん

    ご質問の領域は、仮想アドレスが用いられています。

    0x82200000 番地から0x00200000バイトをUNCACHED_RAMとして確保していますが、
    物理アドレスは、0x80200000 番地から0x00200000バイトです。この領域は内蔵RAMです。

    RZ/A2Mグループ RZ/A2M Simple Applications Package V8.20 内のプログラムは、内蔵RAMをキャッシュを経由せずにアクセスしたい場合、物理アドレスに0x02000000を足した仮想アドレスにアクセスしています。

    また、CACHED_RAMは、物理アドレスがUNCACHED_RAMと重複しないように、80038000 - 801FFFFFの領域を割り当てています。

    RZ/A2Mの内蔵RAMの物理アドレスの末尾は0x803FFFFFです。UNCACHED_RAMのサイズを大きくしたい場合、0x80400000番地を使用することができないため、UNCACHED_RAMの開始アドレスをより若いアドレスに変更します。このとき、物理アドレスの重複を避けるために、CACHED_RAMのサイズも同じだけ減らす必要があります。

    仮想アドレスの設定は、Memory Management Uint(MMU)によって行われています。

    e2 studioで、プロジェクトを開き、拡張子がscfgのファイルをダブルクリックし、MMUというタブを選択してみてください。
    仮想アドレス0x80000000から4Mバイトの空間は物理アドレスも0x80000000であり、属性はNormal(L1-cacheable)
    仮想アドレス0x82000000から4Mバイトの空間は物理アドレスが0x80000000であり、属性はNormal(Non-cacheable)
    となっていることを確認できます。

    e2 studioのこの機能では、アドレスの属性を1Mごとに設定できます。
    CACHED_RAMもUNCACHED_RAMも実アドレスと仮想アドレスを一致させると、一見便利に見えますが、この場合、CACHED_RAMとUNCACHED_RAMの境界を1M単位でしか変更できません。これではCACHED_RAMとUNCACHED_RAMの境界を柔軟に変更できません。
    これを避けるために、UMCACHED_RAMの仮想アドレスを実アドレスと異なるアドレスに割り当てています。

    また、「その他:2044MB」について回答します。

    「その他:2044MB」の内訳については、「RZ/A2Mグループ ユーザーズマニュアル ハードウェア編」の5.4章に記載がありますので、参照ください。

    RZ/A2Mグループ ユーザーズマニュアル ハードウェア編:
    www.renesas.com/.../rza2m-group-users-manual-hardware

    内蔵RAM以外のRAMとして、RZ/A2M Evaluation Board KitにはHYPER RAMが搭載されています。HYPER RAMの使用方法は、RZ/A2Mグループ RZ/A2M Simple Applications Package V8.20 内のDRP Dynamic Sample 3を参照してください。ここで、HYPER RAMは内蔵RAMよりアクセスが遅いことにご注意ください。

  • hagiryo さま

    丁寧な説明ありがとうございます。

    ということは  CACHED_RAM と UNCACHED_RAM 合わせて 4M までということですね。

    FullHD(1920x1080) の画像を連続でカメラより取り込みたいと考えています。

    速度が間に合うかどうかということもありますが、取り込み先を外部メモリにせざるを得ないと考えています。

    HYPER RAM のサンプルは  RZ/A2M Simple Applications Package V8.20内で見つけれそうです。

    SDRAM 使用の サンプルは どこかにありますでしょうか

    どうぞよろしくお願いいたします。

  • RZ/A2Mでは、カメラの取り込みバッファを内蔵RAMに配置することを推奨しております。外部メモリの場合、帯域が不足してデータの取りこぼしが発生します。内蔵RAMに収まる画像サイズでご検討頂きたく。

  • RZ/A2Mグループ ユーザーズマニュアル ハードウェア編   

    46.2 CEU の機能概要  

    サイズ例として 5M画素2,560 pixel×1,920 line と記載されています。

    外部メモリを想定されていると考えますが、正常に取り込める条件など教えてください

  • CPUのH/W仕様は、5M画素2,560 pixel×1,920 line ですが、
    接続するデバイスとのAC特性、接続するデバイスのフレームレートおよび保存するRAMへの転送速度に依存します。
    SDRAMに映像取り込みバッファを配置する場合、バス帯域がボトルネックとなります。
    帯域が足らない場合、解像度、もしくは、カメラのフレームレートで調整して頂くことになります。
    帯域の過不足については、
    キャプチャイベントフラグクリアレジスタ(CETCR)CDTOF、VBPフラグにて確認して頂く事になります。