こんにちは、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
こんにちは。NoMaYです。FreeRTOSカーネルの中ではTickでしか時間を扱っていないようですので、FITのUSBモジュールの該当箇所その他をpdMS_TO_TICKS()マクロを使うように書き換えれば、あとは、そうしたい人が、このマクロをFreeRTOSConfig.hで独自定義するようにして、ミリ秒以下のTickを使うようにすれば、それで行ける話でもある、ような気もします。というか、昨今のFreeRTOSであれば、そもそもpdMS_TO_TICKS()マクロを使うのが作法であるような気がします。
ただし、上記の概念コードでは、pdMS_TO_TICKS()マクロは使ってはいけない、なぜなら、たぶん、このマクロで1ミリ秒を指定したら、結局、現状と同じことになって動作しないだろうから。