2013年7月26日金曜日

PIC C18 (USART, LF62 書き込み)

-----------------------------
LF62 連続書込み試験(2010.01.07)
-----------------------------
USBメモリへLF62を使って、40文字5行の200バイトを一秒毎に書き込むテスト。
  • LF62 + PIC
  • USART:38400boud, 200byte
  • ファイルオープン、書込み、クローズ(メモリを抜かれた場合の為)の繰り返し
  • USBメモリ:ELECOM 1GB MF-AU201GGT
  • キーワード:組み込み機器, PIC, C18, ファイルシステム, FAT

①WriteFile Openオープン待ち70ms
②WriteFile70ms
③WriteFile Closeクローズ待ち390ms

ファイルオープンコマンドを書いてから、クローズ完了しプロンプトが返るまで 530 msだ。クローズのプロンプトが返るまでは、再書込みはできないので、この間は待つしかない。
データロガーの場合は、この530msの間もデータが一定時間間隔で溜まってくる。


【USART: 9600boud】
PIC-LF62 の転送速度を 9600boud にした場合が左図。
書き込みにかかっている時間は、データ個数で決まってくる。効率の良いデータ個数(セクタ単位512バイト)と、書込み間隔の設定が重要なようだ。USARTのボーレートは直接関係しない。
【問題点】
  • ボーレートを変えた場合、PIC側とLF62側のリセットのタイミングの問題の解決
  • USBメモリの認識(LF62)まで1分かかる
  • メモリフルの検出方法(残容量を時々調べるか、最初に残容量を調べて自分で積算する)
  • 電源をいつ切られてもいいように、割り込みでファイルクローズ処理する必要がある
  • フラッシュメモリには寿命がある
    (特定のメモリセルへ集中しないような工夫のされたUSBメモリもある)
-----------------------------
PCとUSBメモリ間で転送時間を測ってみた(2010.01.21)
-----------------------------
  • 500バイトのテキストファイルを50個作って転送した
  • PC →USB メモリへ書き込み:約5.3秒
  • USB →PCへ読込:1秒以内
  • 500バイトなので、1セクタ ごとにファイルコピーされた(1セクタ=512バイト)
  • 10セクタ/秒で、5kB/s
  • LF62では、ファイルクローズ処理に200ms以上かかっているのでシーケンシャルに考えると1秒間に4セクタ程度である
-----------------------------
断片化(2010.01.21)
-----------------------------
断片化(ファイル削除が繰り返された)の進んだデバイスは空セクタの検索に時間がかかる。当然メーカーや品種でも違ってくる。データロガーのような使い方のフラッシュメモリは、ファイルの削除はまとめて行って、再フォーマットしてから再使用する位がいいのかも。

2010.01.07 - 2010.01.21