GR-SAKURA
GR-KURUMI
GR-COTTON
GR-CITRUS
GR-PEACH
GR-KAEDE
GR-ADZUKI
GR-LYCHEE
GR-ROSE
GR-MANGO(*)
SNShield
Web Compiler
IDE for GR
TOPPERS関連
女子美コラボ
その他
※プロデューサミーティング中
作り方使い方資料
イベント関連
作品記事
体験記事
ライブラリ
ツール
その他・過去ファイル
上記エラーを回避するため、GR-MANGOのメモリを上手に活用する方法をご教授お願いいたします。
e2Studio環境で、binファイルに埋め込んだjpg画像を読み込んでDRPで加工、HDMIを通してDisplay出力しようとしています。しかし、作成したプロジェクトをビルドすると、CASHED_RAMでoverflowが発生したとエラーが出てしまいました。
上記エラーを回避するため、jpg画像と、デコード後のバッファをOCTARAMに配置しようと試みたのですが、jpgからのデコードで失敗してうまく行きませんでした。(そもそも配置できているかも不明です。)
下記方法をご存知のかたがいましたら教えていただけないでしょうか。・jpg画像と、デコード後のバッファをOCTARAMに配置した上でDRPライブラリを利用する方法・上記以外でメモリの問題を解決する手段
以上です。度々申し訳ありませんが、よろしくお願い致します。
■利用画像『1280×720』(161KB):ベースライン
■利用するDRPとそのコンフィグレーションサイズaffineは実装次第では不要かもしれませんが、他は必ず利用したいです。・Argb2grayscale:15K・Affine:712K・Remap:215K・Cropping:16K・Sobel:40K・CircleFitting:174K
■jpg読み込みの参照プロジェクトrza2m_jpeg_codec_sample_freertos_gcc』
■記述したデコード後のバッファ宣言
static uint8_t buffer[1280*720*4] __attribute((section("OCTA_BSS"),aligned(32)));
miniwillowです。
GR-MANGO FreeRTOS Software packageに含まれる、
rza2m_drp_dynamic_sample3_freertos_gcc
のプロジェクトあればDRPとOCTA RAMをどちらも使っています。
もしよろしければ参考にしてみてください。
再度のアドバイスありがとうございます。そもそもOCTARAMに配置できていなかったようです。上記プロジェクトを参考にした結果、読み込んだ画像データをOCTARAMに配置したコードができました。ただ、memcpyで書き込もうとすると強制終了する現象が起きてしまいました。書き込み許可とかの設定があるのででしょうか。正直、現状お手上げ状態なので、たびたび申し訳ありませんが、ご教授下さい。
■試験手順1.画像サイズを1/10にした、OCTARAMを利用しなくてもOverflowが起きないプロジェクトを用意2.一部変数の配置領域をCashedRamからOCTARAMに変更3.実行するとmemcpy実行時に強制終了する。4.画像データを持つ変数の変数の配置領域をOCTARAMからCashedRamに変更5.正常に動作する。
■強制終了発生コードmemcpy(memory_address_of_JPEG, g_jcu_example_image, size_of_JPEG_image);
・memory_address_of_JPEG:今回配置領域を変更した変数型:uint8_t * 値:0x6002d000(OCTA) or 0x80069280(Cashed)・g_jcu_example_image:画像データが格納された変数型:const unsigned char[63055] 値:0x80069280・size_of_JPEG_image:画像サイズ型:const size_t 値:63055
■OCTARAM利用時のコードOCTARAM利用:__attribute__ ((section ("Large_Graphics_RAM")))■linker_script.ldの設定OCTAVRAM (NOLOAD) : ALIGN( 0x40 ) { * (Large_Graphics_RAM) . = ALIGN( 0x20 ); * (OCTA_CACHED_BSS)} > OCTA_CACHED_RAM
以上です。
OCTARAMはリンカで配置を定義しただけでは使えず、初期化が必要になりますが、設定されていますか?
rza2m_drp_dynamic_sample3_freertos_gccのhwsetup.cのR_HYPERBUS_Setup()で初期化しています。
この関数にはOCTABUSドライバ(r_octabus)、OCTABUSのユーザーコンフィグ(octabus_setup)等必要ですがrza2m_drp_dynamic_sample3_freertos_gccからコピーしてもらえればそのまま使えると思います。
ありがとうございます。ご指摘通り初期化を行っておりませんでした。読み込み画像やremap用の変数などをOCTARAMに配置することで、画像サイズを縮小することなく機能を無事に実現できました。何度もご助言頂きありがとうございました。