こんにちは。NoMaYです。今首を傾げているのですが、以下のドキュメントによると、e2 studio v7.5.0ではAmazon FreeRTOSプロジェクトに於いてスマートコンフィグレータでRTOS Objectコンポーネントというものが使用出来る/存在するらしいのですが、これは単なるFreeRTOSプロジェクトでは使用出来ない/存在しないものなのでしょうか?(スマートコンフィグレータウィンドウの、コンポーネントタブ上に表示されない&コンポーネント追加ダイアロにも表示されない、ので、そうなのかな、とは思っているのですが、Amazon FreeRTOSプロジェクトとFreeRTOSプロジェクトで、このような部分で違っているのが意外でしたので、、、)e2 studio 7.5.0 Release Notewww.renesas.com/jp/ja/doc/products/tool/doc/016/r20ut4556ee0101-e2studio.pdfPage 17 of 72「New Amazon FreeRTOS Configuration user interface provide within e2 studio 7.5 featuring:● Imported FreeRTOS project with pre-loaded FreeRTOS Components (Object, Kernel and Amazon Libraries).略o FreeRTOS Object configuration: allow user to be able to create, configure multiple FreeRTOS objects using GUI (Tasks, Semaphores, Queues, Software Timers, Event Groups, Message Buffers, Stream Buffers)o Create/Remove FreeRTOS Objects with user friendly UI.略」ちなみに、プロジェクトの生成では、コンパイラはCC-RX V3.01、デバイスはR5F565NEDxFP、に設定して試しました。
シェルティさん、こんにちは。NoMaYです。もうひとつFreeRTOS RXパッケージ v10.0.03の問題点に気付きました。RX100ポートレイヤですが、このポートレイヤでは消費電力削減用のTICKLESS IDLEという機能が追加されていて、その差分の影響で、freertos_start.c内のTICK割り込み生成のCMT設定のvApplicationSetupTimerInterrupt()がポートレイヤから呼び出されなくなってしまっています。結果、[訂正]下記参照 このポートレイヤではCMTはCMT0固定になります。対処案ですが、近々では、CMT0以外は使えないという制限にするのが良いかと思います。その次は、プルリクエストには使えないことを承知の上でRX100ポートレイヤからTICKLESS IDLEという機能を削除して、他のポートレイヤと同じにするのが良いかと思います。(そして、そのポートレイヤはRXv1コア搭載RX200マイコン向けポートレイヤと等価になります。) その後、TICKLESS IDLEという機能をRX100ポートレイヤで復活させるのが良いかな、と私は思います。[訂正]下記参照 ただ、RX100ポートレイヤ内のvPortSuppressTicksAndSleep()という関数内でもCMTを触っていますので、その箇所をポートレイヤ内に残すのか、その部分を関数として切り出してfreertos_start.c内へ移すのか、そういうことを検討した方が良いのかな、とも思います。ちなみに、消費電力削減といってもwait()を使うケースだけなので、より多くのスタンバイモード(他品種対応とかディープソフトウェアスタンバイモード対応とか含む)に対応させるにはどうするのが良いか、とか考えるのも面白そうです。[訂正]先ほどコードを見ていた時には見落としたのですが、以下の記述がRX100ポートレイヤのport.cにありましたので、FreeRTOSConfig.cに以下の記述を追加すればポートレイヤがfreertos_start.c内のvApplicationSetupTimerInterrupt()を呼び出すようになります。ですので、TICKLESS IDLEという機能を使わない場合はそのように記述する、ということにすれば良いのかな、と思います。{Renesas/RX100, GCC/RX100, IAR/RX100}/port.c
* Sets up the periodic ISR used for the RTOS tick using the CMT. * The application writer can define configSETUP_TICK_INTERRUPT() (in * FreeRTOSConfig.h) such that their own tick interrupt configuration is used * in place of prvSetupTimerInterrupt(). */static void prvSetupTimerInterrupt( void );#ifndef configSETUP_TICK_INTERRUPT /* The user has not provided their own tick interrupt configuration so use the definition in this file (which uses the interval timer). */ #define configSETUP_TICK_INTERRUPT() prvSetupTimerInterrupt()#endif /* configSETUP_TICK_INTERRUPT */
frtos_config/FreeRTOSConfig.c
void vApplicationSetupTimerInterrupt(void);#define configSETUP_TICK_INTERRUPT() vApplicationSetupTimerInterrupt()
NoMaYさん こんにちは、シェルティです。 本件、AWSチームと会話し、現在進めているOTA込みのAWS認証には 以下プルリクエストは適用しない(FPU×RX130×GCCの組み合わせなど、影響範囲が小さいのでNGのまま)方向で進めてます。(AWS認証が一旦落ち着いたあとにマージ検討進める方向) github.com/.../146 github.com/.../152 > 消費電力削減といってもwait()を使うケースだけなので、 > より多くのスタンバイモード(他品種対応とかディープソフトウェアスタンバイモード対応とか含む)に > 対応させるにはどうするのが良いか、とか考えるのも面白そうです。 こちら、私も非常に興味がありますね。 Microchipは以下のようなアプリケーションノートを出しております。 ww1.microchip.com/.../Atmel-42204-SAM4L-Low-Power-Design-with-FreeRTOS_AP-Note_AT03289.pdf ルネサスもこういったOSの実装についてももっと追及していくべきですね。 特に低消費電力がアピールポイントのマイコンでは上記のような実装を徹底的に極めておくのは重要です。 昨今この機運が高まってはきているので、実現はしやすそうです。(技術ではなく政治に課題有) とはいえMicrochipはこのアプリケーションノートを7年前に発行していることから考えると まだまだルネサスはOS実装におけるアプローチについて精進しなければならないと感じます。 以上です