RX71Mでカメラ映像をSDRAMへとDMA転送するとPDC FIFOオーバーラン(内蔵RAMでは発生しない)

カメラからの入力をSPI通信にて転送する仕組みを作っています。

カメラからの入力を転送する部分でアドバイス頂けると助かります。

PDC(カメラモジュール)のFIFOに入力されたYUV422データをDMAを使用して、内蔵RAM( H’0004 0000)へと32Bit ずつブロック転送しています。

カメラモジュールの解像度を変更(480×272→640×480)に伴い内蔵RAMでは容量不足になるためDMAの転送先を内蔵RAM→SDRAM(H’0800 0000)へと変更したところ FIFOオーバラン発生(PDC.PCSR.OVRF)が発生しています。「カメラ→PDC FIFO > DMA転送時間」となっていることが原因と考えておりますが、調査方法がわかっていません。

640×480のカメラを使用する必要があり、カメラ解像度≒内蔵RAMに収まるサイズになるのか、DMA、PDCの設定で対応可能なのかを知りたいです。

下記に確認した内容、質問を記載いたします。

・カメラの解像度を480×272にし、DMA転送先を変更
    ▼内蔵RAMへ転送:オーバーラン発生せず

    ▼SDRAMへ転送:オーバラン発生

→転送先に依存、解像度に依存しない

・カメラモジュールからの入力をDMAを使用してSDRAMへと転送すること自体が問題?転送速度、量の問題?

 SDRAM初期化はサンプルコードのままです。
  

・FIFOオーバラン発生時にDMA再実施などの処理を入れましたが、頻度が高すぎるため根本的な原因を調査しておきたい。

Parents
  • こんんちは、TTSSさん

    DMAでは無く、CPUで転送するとどうなるでしょうか?

    ※そもそも、SDRAM領域は、CPUで正しく読み書き出来るでしょうか?

    ※SDRAMの初期化は、SDRAMの仕様に合っていますか?

    又、内蔵RAMと、SDRAMで、書き込み速度を計測して、どのくらい違うのかを調べてみてはどうでしょうか?

    ※TPUなどで、なるべく分解能が高いカウンタを作り、100Kバイトくらいを埋めるのにかかる時間を計測するなど

    ---

    ウエィトの無効ループは、最適化すると、無くなると思うので、何か対策が必要だと思います。

Reply
  • こんんちは、TTSSさん

    DMAでは無く、CPUで転送するとどうなるでしょうか?

    ※そもそも、SDRAM領域は、CPUで正しく読み書き出来るでしょうか?

    ※SDRAMの初期化は、SDRAMの仕様に合っていますか?

    又、内蔵RAMと、SDRAMで、書き込み速度を計測して、どのくらい違うのかを調べてみてはどうでしょうか?

    ※TPUなどで、なるべく分解能が高いカウンタを作り、100Kバイトくらいを埋めるのにかかる時間を計測するなど

    ---

    ウエィトの無効ループは、最適化すると、無くなると思うので、何か対策が必要だと思います。

Children
No Data