FreeRTOSのconfigTICK_RATE_HZに1001以上を設定した場合の、USB Host Mass Storage Class(r_usb_hmsc)の動作について

こんにちは、B.Ishiiと申します。

以下の事象について、質問があります。

■現象
FreeRTOSで、FITモジュールのUSB Host Mass Storage Class(r_usb_hmsc)を利用していますが、configTICK_RATE_HZに10000を設定したところ、USBメモリを操作できなくなりました。

■解析
以下のportTICK_PERIOD_MSマクロが0になってしまい、ゼロ除算など、意図しない計算結果を引き起こしているようです。

■対策
以下のソース変更をしたところ、私が利用しているUSB機能部分については、動作するようになりました。


※左は変更後、右は変更前

■質問
※ここまで長々とすみません。

上記は、制限事項か不具合かのどちらなんでしょう?
制限事項の場合、将来的に対策される(制限から外れる)予定などありますでしょうか?

※コミュニティではなく、ルネサスの中の人に聞いたほうが良いですかね。
※portTICK_PERIOD_MSは、他のFITモジュールでも使われています。
 configTICK_RATE_HZが1001以上の場合は、上記同様、意図しない動作が起きそうです。

■環境
・RX72N
・FreeRTOS(with IoT Libraries)
 Ver. afr-v202012.00-rx-1.0.1
・USB basic(low-level) driver(r_usb_basic)
 Ver. 1.40
・USB Host Mass Storage Class(r_usb_hmsc)
 Ver. 1.31

Parents
  • B.Ishiiさん、こんにちは。NoMaYです。

    それから、とても納得が行かないことかも知れませんが、以下のようなことは、結局ポーリング処理であることがあまり良くは無いのですが(RTOS専門のサイトに投稿したら、きっと、怪訝な顔をされてしまいそうですけれども)、ひとつの手としてないわけでは無いと今しがた思いました。

    (1) 100μ秒毎のタイマ割り込みを内蔵周辺機能で作成する
    (2) taskUART_chAでセマフォA操作待ちする
    (3) taskUART_chBでセマフォB操作待ちする
    (4) 上記の(1)の割り込み処理内でセマフォAとセマフォBを操作をする
    (5) taskUART_chAでセマフォA操作待ちが解除されたら今まで通りのことをする
    (6) taskUART_chBでセマフォB操作待ちが解除されたら今まで通りのことをする

Reply
  • B.Ishiiさん、こんにちは。NoMaYです。

    それから、とても納得が行かないことかも知れませんが、以下のようなことは、結局ポーリング処理であることがあまり良くは無いのですが(RTOS専門のサイトに投稿したら、きっと、怪訝な顔をされてしまいそうですけれども)、ひとつの手としてないわけでは無いと今しがた思いました。

    (1) 100μ秒毎のタイマ割り込みを内蔵周辺機能で作成する
    (2) taskUART_chAでセマフォA操作待ちする
    (3) taskUART_chBでセマフォB操作待ちする
    (4) 上記の(1)の割り込み処理内でセマフォAとセマフォBを操作をする
    (5) taskUART_chAでセマフォA操作待ちが解除されたら今まで通りのことをする
    (6) taskUART_chBでセマフォB操作待ちが解除されたら今まで通りのことをする

Children
  • こんにちは。NoMaYさん。

    代替案を提示していただき、ありがとうございます。
    他にも要求仕様は色々ありますので、システム全体を考えて、もう少しどの方式が良いか検討続けようと思います。