Armadilloフォーラム

USBメモリーへのファイルコピー

mitoh

2019年9月24日 13時19分

お世話になります。

Armadillo440でSDカードからUSBメモリへのコピーを行う処理に関して、時間が掛かりすぎるので苦慮しております。

プログラムを作成した当初USBにコピーが上手く出来ない現象が見られた為、マウント時に -o sync のオプションを
加えてこれを回避しました。
元々はAtde3ベースでアプリを作成していましたが、Flashメモリの変更に伴いAtde5に切り替えたところ、以前に
比べて約2倍の時間が掛かってしまっています。
(linuxバージョン的には、2.6.26-at7 から 3.14.36-at11 に変更)
実測ベースで、8Mのテキストファイルコピーが、元々は40秒強、新しい版では90秒以上かかります。

この状況の改善方法等に関し、情報が有りましたらお教えください。

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

コメント

at_makoto.sato

2019年9月25日 17時00分

佐藤です。

fwrite() を使用して USBメモリへの書き込みを行っていますでしょうか。
もしそうであれば代わりに write() を使用すると改善されるかもしれません。
また、書き込む際はなるべく大きいサイズを指定してみてください。

mitoh

2019年10月3日 11時29分

ご返信ありがとうございます。

ご提示頂いた内容は大変参考にはなりますが、残念ながら現状はコピーを
シェルを介してCPで行っています。

何か他に情報等が有りましたら、よろしくお願いいたします。

at_makoto.sato

2019年10月3日 12時50分

佐藤です。

cp の代わりに dd を使用すると良いかもしれません。

[a440]# dd if=元ファイル of=コピー先ファイル bs=4M conv=fsync

mitoh

2019年10月4日 11時07分

ご返信ありがとうございます。

ご教示頂いた dd を試してみたところ、15秒程度でコピーが出来ました。
大変ありがとうございました。