M3S-TFAT-TinyモジュールをRAMに使用する方法

お世話になります。

オープンソースFATファイルシステム M3S-TFAT-Tinyモジュールを使用し、外部メモリではなく内臓RAMにファイル作成を行おうとしているのですが、f_mkdir・f_open実行時にFR_WRITE_PROTECTED(書き込み禁止)が返されます。

開発環境は下記になります。

  • 統合開発環境:e2studio, 2022-04 (22.4.0)
  • スマートコンフィグレータ:2.13.0
  • 使用ボード:RX72N envition Kit
  • コンパイラ:GCC for Renesas RX 8.3.0.202202、GCC for Renesas RX 4.8.4.201803
  • OS:未使用
  • r_bsp::v7.1
  • r_tfat_rx : v4.02
  • r_tfat_driver_rx : v 2.20

この環境にて、サンプルプログラムを参考にプログラムを作成したのですが、f_openにてFR_WRITE_PROTECTED(書き込み禁止)が返されます。作成方法としては、スマートコンフィグレータでr_tdat_rx(v4.02)を導入し、コード生成後に下記のプログラムを記入しました。(スマートコンフィグレータではr_bspやr_fat_driver_rxの設定は行っておりません。)

何か設定・作成等にミスがあるのでしょうか?M3S-TFAT-Tinyに関するアプリケーションノート(R20AN0038JJ0402)を見るとRAMに対応可能なのかが読み取れなかったのですが、そもそも不可能なのでしょうか?

<記述内容(プロジェクトデータも添付いたしました。)>

#if   (BSP_CFG_RTOS_USED >= 1)
#include "r_smc_entry.h"
#include "r_tfat_driver_rx_config.h"

FATFS g_fatfs[TFAT_SDMEM_DRIVE_NUM];  /* Ponter to the filesystem object */
FIL g_file[1];              /* File objects */

void main(void){

const char *drv0 = "0:";
const char *path_fld = "0:FLD";
const char *path_txt = "0:FLD/TEXT.TXT";
uint8_t drv_no = TFAT_DRIVE_NUM_0;
FRESULT fr;              /* FatFs function common result code */

/* Register work area for each logical drive */
fr = f_mount(&g_fatfs, drv0, 0);

/* Create the directory */
fr = f_mkdir(path_fld);

/* Create the file to be written */
fr = f_open(&g_file[drv_no], path_txt, FA_CREATE_ALWAYS | FA_WRITE);
if (fr) return (int)fr;

while(1);
}

知識不足で申し訳ないのですが、よろしくお願いいたします。

test.zip

Parents
  • togashiさん、こんにちは。NoMaYです。

    > アプリケーションノート(R20AN0038JJ0402)を見るとRAMに対応可能なのかが読み取れなかったのですが、そもそも不可能なのでしょうか?

    > (スマートコンフィグレータではr_bspやr_fat_driver_rxの設定は行っておりません。)

    いやいやいや、さすがにそれは、出たとこ勝負すぎる、かと思います。最終的なターゲットもRAMなのでしょうか?(毎度のことながら出来合いのハードであってもRX72N Envision Kit向けのズバリのものがあるか分かりませんが、) サンプルプログラムとして以下の種類のものがあるようなのですけれども、これらでは目的に合致しないということでしょうか?

    ・ USBメモリ
    ・ SDメモリカード(SDモード)
    ・ USB Mini
    ・ eMMC
    ・ Serial Flash memory

    なお、RX72N Envision Kit+SDカードに関しては以下のズバリのサンプルプログラムがあります。(といっても手順のみです。)

    github.com/renesas/rx72n-envision-kit/wiki/1-SDHI-SDカードドライバ-ファイルシステム

    [追記]

    ここに、RX72N Envision Kit+USBメモリ/eMMCカード/Serial Flashメモリの場合の情報があります。

    github.com/renesas/rx72n-envision-kit/wiki/1-SDHI-SDカードドライバ-ファイルシステム/#USBメモリ/eMMCカード/Serial Flashメモリを接続したい
     

  • NoMaYさん。

    いつもお世話になっております。togashiです。

    返信が遅くなりすみません。また、色々な経緯が足りずお手数おかけしました。

    最終的なターゲットは、SDRAMになります。今回RX72N envisionKitでは搭載されていないため、ひとまずRAM(もしくはROM)で試してみようという経緯になります。ご紹介していただいたサンプルプログラムは、動作確認もかねて実装等は行ったのですが、SDRAMに実装したいため採用が厳しいです。

    こちらで過去に作成したプログラム(RX65N)では、SDRAMに対してファイルシステムを適応してたため、ターゲットがSDRAMでも対応はできるかと考えています。

    よろしくお願いいたします。

  • togashiさん、こんにちは。NoMaYです。

    そういうことであれば、さすがに、SDRAMで出来て内蔵RAMで出来ない、ということは無いと思うのです。内蔵RAMの空きに収まるようにファイルシステムの大きさを小さくする必要はあるかと思いますけれども。

    ですが、すみません、そもそもTFAT(FATFSだったと思いますが)でSDRAMにファイルシステムを作るやり方を私では検索をしても見付けることが出来ませんでした。ごめんなさい、他の人からのリプライを待って頂けませんか。

  • NoMaYさん。

    リプライありがとうございます。

    NoMaYさんと同じく、SDRAMで可能ならできるかと思ったのですが、アプリケーションノート(R20AN0038JJ0402)のモジュール構成として、各種デバイス・ドライバAPIを介す必要があるのでRAMでは難しいのかとも考えています。

    とんでもございません、ご対応していただきありがとうございます。私の方でもできる限り方法を探してみます。

Reply
  • NoMaYさん。

    リプライありがとうございます。

    NoMaYさんと同じく、SDRAMで可能ならできるかと思ったのですが、アプリケーションノート(R20AN0038JJ0402)のモジュール構成として、各種デバイス・ドライバAPIを介す必要があるのでRAMでは難しいのかとも考えています。

    とんでもございません、ご対応していただきありがとうございます。私の方でもできる限り方法を探してみます。

Children
No Data