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

SAKATA,KOSUKE / 坂田昂亮 kosuke.sakata.oy @ hitachi-automotive.co.jp
2016年 6月 6日 (月) 10:10:45 JST


お世話になります、日立オートモティブシステムズの坂田と申します。

弊社では例年新人教育の題材として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番地
***************************************