(toppers-users 4549) Re: 周期タスク内でのファイルシステム利用時の処理時間について

Masaki Muranaka monamour @ monaka.org
2016年 6月 7日 (火) 10:29:12 JST


みなさま、おはようございます。

> うろ覚えですがFatFs場合、内部処理の待機にmsオーダーでWiatが入ることがあります。

すべてのバージョンの FatFs を読んだわけではないのですが、FatFs の中に wait 処理は
ないはずです。ファイルシステムにwaitを入れる理由もありませんし。
その下のデバドラでは何があったとしても不思議ではありませんけれども。

…とまで書いて、EV3RT 固有の話かも? と思ってざっとデバドラ読みましたら、確かに
tslp_tsk(1000) など書いてあるコードでした。
しかし時間の桁が違うので、今回の話との関係は薄いかなという気がします。



2016年6月7日 9:23 Nozomu Kon <nozomu.kon @ embedded-property.net>:
> 日立オートモティブシステムズ 坂田様
>
> 今と申します。
>
> 他の方もおっしゃっていますが、SDカードとファイルシステムは状況によっては
> 処理に時間がかかることがあります。
>
> 周期タスクは4ms内で完了する必要のあるクリティカルなものでしょうから
> 周期タスク内でwirteを行うのではなく、ファイルシステム用のタスクを設け、
> 周期タスクからはメッセージ送信のみに切り替えるといいのではないでしょうか。
> (ファイルシステムタスクにメッセージをキューするイメージです)
>
> ファイルシステムタスクが4ms以内に受信可能状態に戻る保証はありませんが、
> 少なくとも周期タスクは4msで定期的に動作するものと思われます。
>
> うろ覚えですがFatFs場合、内部処理の待機にmsオーダーでWiatが入ることがあります。
>
>
> On 2016/06/06 10:10, SAKATA,KOSUKE / 坂田昂亮 wrote:
>
> お世話になります、日立オートモティブシステムズの坂田と申します。
>
> 弊社では例年新人教育の題材としてETロボコンに参加させて頂いており
> 開発環境としてToppers殿製EV3RT hrp2 beta6-2を使用させて頂いております。
> このたび、弊方では原因が分からない症状が発生いたしましたので、
> 有識者の方々からのアドバイスを頂きたく投稿させて頂きました。
>
> 症状はファイルシステムの利用中に発生しております。
> Mindstorms EV3に挿入するmicroSDカード内に予め作成したログ保存用フォルダに、
> .csv形式で任意のテキストデータを書き込むプログラムを作成いたしました。
> 書き込み処理(fprintf関数)は周期起動タスクで実行させており、周期は4msと設定しております。
> fopen,fcloseは下記のごとく周期起動タスク外でタスク起動前、タスク終了後に実行しております。
>
> プログラム開始→fopen→周期タスク起動→(~~4ms周期で書き込み~~)→周期タスク終了→fclose→プログラム終了
>
> 症状はこの書き込み周期タスクの処理時間が一定の時間間隔で4msを大きく超えるタイミングが発生するというものです。
> 書き込み周期タスクの処理時間は、平時は1ms以下で処理されるようですが、およそ180msに1回の時間間隔で10ms~20msほどかかるタイミングが発生しており、4ms周期を守れていません。
> ちなみに、1周期の処理で書き込むデータ量は4byteの変数値1つ(+改行コード)です。
> また、既定周期を4ms→10msと変更した場合でも、上記の症状が発生することを確認しており、
> その場合、周期オーバーが発生する時間間隔が、およそ180ms→およそ450msに変化します。
> 処理時間のモニタにはget_utm関数で取得したμ秒タイマ情報を使用しています。
> 以上がこちらで確認している現象となります。
>
> つたない情報で恐縮ですが、一定時間間隔で処理時間が増大する症状の原因について、ご助言をいただければ幸いです。
> 弊方がRTOSについて知識不足のため、初歩的なことを質問しているのかもしれませんが
> これを機会にしっかりと学びたいと思っておりますので何卒宜しくお願い申し上げます。
> ***************************************
> 日立オートモティブシステムズ株式会社
> 技術開発本部 先行開発室 スマートADAS技術開発部
>  坂田 昂亮 Sakata Kosuke
> TEL : 外線 080-9045-6345/029-276-9379 内線 54244
> Mail: kosuke.sakata.oy @ hitachi-automotive.co.jp
> 〒312-8503 茨城県 ひたちなか市 大字高場 2520番地
> ***************************************
>
>