LocalFileSystem - ローカルファイルシステム

LocalFileSystem - ローカルファイルシステム

http://mbed.org/handbook/LocalFileSystem

mbedには、PCからUSBストレージとして認識する、プログラム書込み用のメモリがある。 このUSBストレージをファイルシステムとしてプログラムから利用することができる。

名前を定義した後は、C言語と同様の方法でファイルをオープンできる。

Warning

mbed chipが載っている NXP LPC1768 / LPC11U24 でのみ使えます。

初期化

LocalFileSystem name(mount);

name:任意の名前
mount:任意のマウントポイント

ファイル操作

C言語の fopen, fputc, fgetc, fprintf, fscanf, fseek 等を参照。

ファイルを作成し、HelloWorldを書き込む

LocalFileSystem local("local");  // マウントポイントを定義(ディレクトリパスになる)

int main() {
    FILE *fp;

    fp = fopen("/local/out.txt", "w");  // ファイルを書き込みモードで開く
    fprintf(fp, "Hello World!");
    fclose(fp);
}

Import programLocalFileSystem_HelloWorld

LocalFileSystem Hello World

備考

ローカルファイルシステムを使っている間、PCからはディスクがイジェクトされたように見える。

もし、プログラムがファイルを開いたまま暴走し、PCからUSBストレージが認識できなくなった場合は以下の方法で回復できる。

  1. PCのUSBからmbedを外す
  2. リセットボタンを押したまま
  3. USBにmbedを接続すると認識する
  4. 新しいプロクラムを書き込む(リセットは押したまま)

ローカルファイルシステムは、mbedインターフェース(基板裏に搭載されている書込み用チップ)に「semihosting」コールをしてストレージへアクセスする。

ローカルファイルシステムには以下の制限がある。

  • ファイル名はDOSのいわゆる「8.3 形式」のみサポート
  • サブディレクトリはサポートしない
  • 書き込みモードのとき fseek は使えない
  • fread, fwrite の実行中、割り込みは拒否される

他のファイルシステム(SDカードやUSBフラッシュメモリ)はこの限りではない。


詳細 戻る


2 comments on LocalFileSystem - ローカルファイルシステム:

30 Apr 2016

最近(2016.4.30現在)はサンプルファイルの時点でエラーが起こってコンパイル不可です。Error: Cannot open source input file "device.h": No such file or directory in "extras/mbed_0954ebd79f59/platform.h", Line: 27, Col: 21 あと、16進数8桁の変数は扱えますでしょうか?エラーメッセージはなかったのですがfscanfで読み込もうとすると止まってしまいます。 変数の例は「0xFFFFFFFF」です。0xがなくても同じでした。

30 Apr 2016

ちなみに変数型はunsigned intです。

Please log in to post comments.