2013年1月26日土曜日

mbed-rtosのmailを使う

BaseUsbHostを更新したので、BaseUsbHost_examleのライブラリ更新のついでにプログラムを修正しました。
キャプチャーした画像をUSBに保存するだけのサンプルプログラムです。

キャプチャーしているスレッドの中でファイル保存しているので、
保存している時間が長くなってアイソクロナス転送の受信が止まって転送エラーが発生していました。
main.cpp
現在の設定ではITD内のフレームカウンタを4、ITDの最大キュー数を3にしているので12ms(4*3)以内にキャプチャースレッドの受信処理が間に合わないといけない。フレームカウンタは最大8個、キュー数をもっと増やせばいいかもしれないがメモリーを消費したくない。

今回の修正ではキャプチャーしているスレッドから画像データをrtosのmailで、
main()メインスレッド送るようにして、メインスレッドでファイルに保存するようにしてみました。
main.cpp
コンディションコードやパケットステータスコードを見てもエラーは発生していないようです。
ファイル処理をしてないのでスタックの使用量は大きく減りました。
FATFileSystemが呼ばれると1800バイト以上消費します。
もちろん、代わりにメインスレッドのスタックの消費量は増えますが、メインスレッドはスタックのサイズ制限はありません。

rtosのサンプルプログラムrtos_mail - main.cppとほぼ同じように使っています。
allocでメモリーブロックからの切り出しではデータの有無を確認しています。

(2013/1/26)
---

0 件のコメント: