[Armadillo:06546] Re: Armadillo-300にてCFアクセス

mizo email@hidden
2011年 1月 17日 (月) 10:57:30 JST


溝渕です。

TFC 小林 wrote:
> Armadillo-300を使ってコンパクトフラッシュに
> テキストファイルを保存、読み出しを行うプログラムを作成したのですが、
> 保存がうまくできなく、困っています。
> 
> inittabにて、
> ::sysinit:/bin/mkdir -m +w /mnt/cf
> ::sysinit:/bin/mount -w -t vfat /dev/hda1 /mnt/cf
> と、コンパクトフラッシュをマウントして、
> rcにて、./bin/Appを書き、Appというアプリを自動起動して、

Appはどこに置いてありますか?

/bin/Appだったりするのでしょうか?もし、スクリプト内でcdしていたりする
と、カレントディレクトリが/ではなくなるので、./bin/Appと/bin/Appは異なり
ます。

> コンパクトフラッシュにあるデータを読みだし、
> データを書き換えて保存する動作をしています。
> 電源を切り、再度実行すると前回書いたはずのデータが読みだせず、
> 前々回書いたデータを読み出してしまいます。

最終的に、コンパクトフラッシュはumountしていますか?以下のようなプログラ
ムの場合、書き込みデータはキャッシュされるので、コンパクトフラッシュにす
ぐには反映されません。

確実にデータを書き込むためには、umountするのが無難だと思います。

以上です。

> rootでログインした後にAppを実行すると、
> 正しく前回書いた値が読み出せます。
> 
> Armadillo電源投入後、Appを自動起動して、
> コンパクトフラッシュに正しくデータを読み書きするには
> どうすれば良いのか、ご教授お願いします。
> 
> 以下、Appの概要
> ///////////////////////////////////////////////////////
> 
> FILE *file;
> int value;
> int ret;
> 
> file = fopen("/mnt/cf/test.txt","r");
> if(file<0){
>   printf("Read Open Error = %d\n",errno);
> }
> ret = fscanf(file,"%d",&value);
> printf("File Read : ret = %d , value=%d\n",ret,value);
> fclose(file);
> 
> srand((unsigned)time(NULL));
> value = rand();
> 
> file = fopen("/mnt/cf/test.txt","w");
> if(file<0){
>   printf("Write Open Error = %d\n",errno);
> }
> ret = fprintf(file,"%d",value);
> printf("File Write : ret=%d , errno=%d , value=%d\n",ret,errno,value);
> fclose(file);
> 
> ///////////////////////////////////////////////////////
> 
> rootでログインした場合での実行結果
> ///////////////////////////////////////////////////////
> 1回目
> File Read : ret = 1 , value=255766725
> File Write : ret=10 , errno=0 , value=1868517907
> 
> 2回目
> File Read : ret = 1 , value=1868517907
> File Write : ret=10 , errno=0 , value=2075531002
> 
> 
> 自動起動の実行結果
> ///////////////////////////////////////////////////////
> 1回目
> File Read : ret = 1 , value=2075531002
> File Write : ret=10 , errno=0 , value=174736598
> 
> 2回目
> File Read : ret = 1 , value=2075531002
> File Write : ret=10 , errno=0 , value=1836334099




armadillo メーリングリストの案内