e2 studio v7.5.0でFreeRTOS+SCFGプロジェクトではRTOS Objectコンポーネントというものは使えないのかな

こんにちは。NoMaYです。

今首を傾げているのですが、以下のドキュメントによると、e2 studio v7.5.0ではAmazon FreeRTOSプロジェクトに於いてスマートコンフィグレータでRTOS Objectコンポーネントというものが使用出来る/存在するらしいのですが、これは単なるFreeRTOSプロジェクトでは使用出来ない/存在しないものなのでしょうか?(スマートコンフィグレータウィンドウの、コンポーネントタブ上に表示されない&コンポーネント追加ダイアロにも表示されない、ので、そうなのかな、とは思っているのですが、Amazon FreeRTOSプロジェクトとFreeRTOSプロジェクトで、このような部分で違っているのが意外でしたので、、、)

e2 studio 7.5.0 Release Note
www.renesas.com/jp/ja/doc/products/tool/doc/016/r20ut4556ee0101-e2studio.pdf
Page 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さん

    こんにちは、シェルティです。

    コメントありがとうございます。RL78のことも考えていただきありがとうございます。
    GitHub上でのNoMaYさんの活動によりamazon-freertosリポジトリも、FreeRTOS-Kernelリポジトリも、
    どちらもAWSからみてRenesasがawarenessになりAWSとのチャネルがしっかり開きました。
    わりといつでもAWSと相談できる状態になりつつあります。残件も追々で対応進めていきましょう。

    ルネサス内部のRXマイコン関係者もNoMaYさんのことを認識しており、
    NoMaYさんに実施いただいている活動について感謝し尽くせない思いとのことです。
    私もそう思います。重ねてお礼申し上げます。

    「楽しみながら」というのも大事ですよね。
    私も何か仕事をする際に、会社には「この仕事を完遂すればマイコンの売り上げに〇〇円貢献する」といった話を通したりもしますが、自身としては「この仕事は楽しそうだ」という条件もANDで必ず掛かってきます。
    FreeRTOS関連の仕事は大変楽しいです。

    引き続き相談させてください。

    以上です
  • こんにちは。NoMaYです。

    FreeRTOS v10.3.1の次はv10.3.2ではなくてv10.4.0でした。FreeRTOS.orgとGitHubリポジトリ上でリリースされました。(どうもAmazon FreeRTOSの方は今ではFreeRTOS IoT Libraryという呼び方をされるっぽいです。)

    Download FreeRTOS
    www.freertos.org/a00104.html

    FreeRTOSv10.4.0
    github.com/FreeRTOS/FreeRTOS/releases/tag/V10.4.0

    V10.4.0-kernel-only
    github.com/FreeRTOS/FreeRTOS-Kernel/releases/tag/V10.4.0-kernel-only
     

  • NoMaYさん

    こんにちは、シェルティです。

    ご連絡ありがとうございます。
    NoMaYさんのプルリクエストについてAWSから私に連絡がきて、
    ルネサス側でも内容確認してその結果を以ってマージする、という方向で進んでます。

    あとまだ半熟なところもあるのですが、RX72N Envision Kit用に以下コンテンツを作りました。

    新規プロジェクト作成方法(FreeRTOS(Kernel Only))
    github.com/.../新規プロジェクト作成方法(FreeRTOS)

    新規プロジェクト作成方法(FreeRTOS(with IoT Libraries))
    github.com/.../新規プロジェクト作成方法(FreeRTOS(with-IoT-Libraries))

    全般的にスマートコンフィグレータでポチポチっとやればシステムが組めるよう整備を進めていく方向です。
    ボード関連のコンフィグがまだ半熟です。Board Description Fileで制御する仕組みです。
    この辺できてこれば、RXマイコンボードすべてでソフトウェアの移植がスマートコンフィグレータ上で容易に実現できます。

    以上です
  • シェルティさん、こんにちは。NoMaYです。

    > NoMaYさんのプルリクエストについてAWSから私に連絡がきて、
    > ルネサス側でも内容確認してその結果を以ってマージする、という方向で進んでます。

    どうもありがとうございます。ところで、ルネサスさん側で内容確認する時ですが、ビルド関係のプルリクエストに関して、評価ボードで動かしてみることまでされますか?もしされるのならば、コンパイラのバージョンを上げることまでプルリクエストに含めたい&コンパイラのバージョンを上げる為のプルリクエストを出したい、とも思うのです。

    現在、GNURXでは、以下のようにして自分のミスが減るよう配慮しました。(配慮したつもりです。)

    GNURX

    ・ 今e2 studio v7.8.0でビルド出来なくなっているのはv5.4→v6.0の時にプロジェクト継承性は保証しないとされたことが原因でした
    ・ 私の手元にはFreeRTOSのRTOSDemoプログラムの対象の評価ボードが無くビルド確認は出来ますが残念ながら実機確認が出来ません
    ・ そこで、プロジェクトをアップグレードする前後でビルドされたMOTファイルが同じであることを担保とすることにしました
    ・ ただ、GNURXのバージョンを上げるとMOTが変化してしまいますのでv12.03とかv14.01とか15.01とか5~8年前のままとしました

    ・ なお、自分でプロジェクト設定を変更して、コンパイラを最新のv8.3.0-202002へ切り替えてもビルド出来ます
    ・ とはいえ、ベースのGCCも当時のv4.8.0から現在はv8.3.0に変化するなど随分変化していて、自分でバージョン変更するのもちょっと不便だと思いますので、出来れば最初からe2 studio v7.8.0+GNURX v8.3.0-202002でビルド出来るようにしておきたいです
    ・ ただ、GNURXのバージョンに関しては、次版が出た時にまた同じ話になって際限が無いですが、古いv12.03とかのままは良くない気がします

    ・ あっ、そういえば、デフォルトのライブラリもoptlib(いずれ廃止される筈)からnewlibへ変化してますね、、、ここも変えておきたいですが、いろいろやろうとするとミスをしそうですね、、、まだ廃止されていないので保留しておくのが良いかも、、、(以下で気付いたのですが、後数年はe2 studio v7.8.0が容易にダウンロード可能な状態が維持されるだろうから、それが良さそうかも、、、)

    ・ あっ、あっ、そういえばe2 studio v7.8.0インストール時にインストールされるGNURXはv8.3.0-202002では無いっぽいですね。(つい最近、かふぇルネにe2 studio v2020-04 or 07でトラブルが投稿されていましたね、、、) どうするのが良いのだろう、、、うむむむ、、、v7.8.0は32bit版最終ということで後数年は容易にダウンロード可能な状態が維持されるだろうから、それに合わせた少し前のGNURXが良さそう、、、(後でe2 studio v7.8.0をインストールし直して、GNURXのバージョンは確認しておこうと思います)

    また、CC-RXとICCRXでは、以下のような状況です。

    CC-RX

    ・ 今e2 studio v7.8.0でビルド出来なくなっているのは調べた結果そもそもFreeRTOS.org側とAWS側の手違いが原因でした
    ・ そもそも(旧バージョンのe2 studioでも旧バージョンのCC-RXでも)ビルド出来ないのでMOTファイルの比較もやりようがありません
    ・ 他方、ソースの僅かな変更やプロジェクトファイルの微調整でビルド出来るようにはなります

    ・ また、e2 studio v5.4→v6.0の時にプロジェクト継承性は保証されたのでプロジェクトをアップグレードすればv7.8.0でビルド出来ます
    ・ また、CC-RXを最新のV3.0.2にしてもビルド出来ます
    ・ なお、上記2点はビルドエラーにならなかったプロジェクトでも同様にe2 studio v7.8.0+CC-RX V3.02でもビルド出来ます

    ・ といった経緯で今のところ昔のプロジェクトフォーマット&昔のCC-RXのままとしました

    ・ とはいえ、初心者には、プロジェクトアップグレードの必要性に気付かないとか、コンパイラバージョン違いによる謎のエラーに対処出来ないとか、ちょっと不便だと思いますので、出来れば最初からe2 studio v7.8.0+CC-RX V3.02でビルド出来るようにしておきたいです
    ・ ただ、CC-RXのバージョンに関しては、V3.03とか出た時にまた同じ話になって際限が無いですが、古いV1.2.1とかのままは良くない気がします

    ICCRX

    ・ 今RX231のプロジェクトが最新のEWRXでビルド出来なくなっているのは、昔のEWRXでRX231未サポートだったのか不具合があったのか、自前でリンカスクリプトや割り込みベクタテーブルや例外ベクタテーブルを持たせていたことが原因でした
    ・ それらを削除(それに合わせてプロジェクトを微調整)したところ、あっさりビルド出来るようになりました
    ・ さすがにその状況で全く実機確認無しはまずい気がしたのと、幸い少しソースを修正してTB-RX231で動作確認出来たので、TB-RX231で確認してあります

    ・ なお、EWRXでは古いプロジェクトを読み込むとダイアログがポップアップして強制的に新しいプロジェクトに変更されます
    ・ また、IDEとコンパイラは同一パッケージになっていて、コンパイラ単体パッケージが無く、双方一体で運用するようなものみたいに思えます

    ・ ただ、FreeRTOS.orgの人もAWSの人も最近のEWRXで動作確認されたことは無いと思われますので、もし実機確認されるのであれば、この際、新しいプロジェクトに変更された後のプロジェクトをプルリクエストで投稿しておいてはどうだろうか、と思うのです

    その一方で、以下の方向で進んでいる現状、どこまでFreeRTOS公式パッケージに手間を掛けるのが良いのか、悩ましいとも思うのです、、、

    > 全般的にスマートコンフィグレータでポチポチっとやればシステムが組めるよう整備を進めていく方向です。
    > ボード関連のコンフィグがまだ半熟です。Board Description Fileで制御する仕組みです。
    > この辺できてこれば、RXマイコンボードすべてでソフトウェアの移植がスマートコンフィグレータ上で容易に実現できます。

  • NoMaYさん

    シェルティです、こんにちは。

    ありがとうございます。こちらでレビューする際に参考にさせていただきます。
    ちなみにプルリクエストするサンプルは全部実機動作確認するつもりです。
    ゆくゆくはIARやGCCのサンプルも全部登録していきたいところです。
    ただ今回登録するサンプルとしては、たとえばCC-RXでRX65N、RX231、RX130のみ、
    などのようにRXマイコンの代表選手のみに絞るかもしれません。

    あと、それぞれのプロジェクトを手作りすると工数が膨大になってイヤになってしまうので、
    CMakeでe2 studioのプロジェクト(CC-RX、GCC)を出力する方法でスマートに作りたいと考えてます。

    また実機動作確認も全環境で実施すると果てしなくめんどくさいので、
    ただいま頑張ってCI/CDシステムを構築しています。

    RAファミリではアメリカのソフトウェア開発部隊が主導して完全にCI/CDが出来上がっていて、
    ルネサス内部サーバからGitHubに対してBOTが検証済みのコードを自動アップする体制を構築済です。
    Nightly Buildといって夜な夜な全自動で「ビルド⇒フラッシュ書換⇒テスト実行⇒結果集計」を
    FSPに収録されている全ソフトに対して行っています。
    github.com/.../master

    RXファミリではこの方法を輸入し同じくRX Driver Packageの以下に検証済のコードをアップする体制を構築しようと考えてます。
    github.com/.../rx-driver-package

    #いまはシェルティが1個ずつ頑張って更新しているので、いまだRX Driver PackageのV125世代で更新が止まってしまっています。

    この辺りできてこれば、テストとデプロイをBOTに任せて、設計者はコードのみに集中できるようになります。

    以上です
  • シェルティさん、こんにちは。NoMaYです。

    ちょっと2つ話が入り混じっているような気がします、、、あと、TB-RX65N、TB-RX231、TB-RX130のプルリクエスト用FreeRTOSデモプログラム作成の件、私やりたいです~~~

    その1 ⇒ 以下は私の既に出してあるプルリクエストのこと

    > ありがとうございます。こちらでレビューする際に参考にさせていただきます。

    その2 ⇒ 以下の全体は今後ルネサスさんが出すプルリクエストのことですけれども、1行目は私の既に出してあるプルリクエストのこと?それとも今後ルネサスさんが出すプルリクエストのこと?(返事は急がないです。金曜夜とかでも。どのみち、気長に構えていますので、、、)

    > ちなみにプルリクエストするサンプルは全部実機動作確認するつもりです。
    > ゆくゆくはIARやGCCのサンプルも全部登録していきたいところです。
    > ただ今回登録するサンプルとしては、たとえばCC-RXでRX65N、RX231、RX130のみ、
    > などのようにRXマイコンの代表選手のみに絞るかもしれません。

    あと、以下の部分ですけれど、実は、RXv3ポートレイヤだけ先にFreeRTOS-Kernelのmasterにマージされて、それを使うRTOSDemoプログラムがFreeRTOSのmasterにマージされていなかったりしているのですが、このRTOSDemoプログラムでCC-RXもGCCもIARも等価に扱えますので、先延ばししなくてもやれますよ。

    更に、私の手元で、RX72N Envision KitとRX72N RSKを#define(or コンパイラオプションのマクロ定義)一発で切り替えるソースも用意してありますので、それもRX65N、RX231、RX130へ適用したい(TBとRSKを切り替えられるようにしたい)ところです。(ただ、RX72N RSKの実機では未確認です。)

    > ゆくゆくはIARやGCCのサンプルも全部登録していきたいところです。
    > ただ今回登録するサンプルとしては、たとえばCC-RXでRX65N、RX231、RX130のみ、
    > などのようにRXマイコンの代表選手のみに絞るかもしれません。

    以下、RX72N Envition KitのプルリクエストのURLとビルド手順等の解説のWikiのURLです。

    Add Renesas RX72N Envision Kit RTOS Demo using Renesas RXv3 port layer #167
    github.com/FreeRTOS/FreeRTOS/pull/167

    RX72N Envision Kit RTOS Demo Programs
    github.com/NoMaY-jp/FreeRTOS/wiki/RX72N-Envision-Kit-RTOS-Demo-Programs#rx72n-envision-kit-rtos-demo-programs

    なお、RX72N Envision KitとRX72N RSKを#define(or コンパイラオプションのマクロ定義)一発で切り替えるソースは、1~2日中に私のリポジトリのソースに追加します(というか復活させます)。(プルリクエストのやり方が分からなくて困惑していた時にプルリクエストに余分な要素だと思い一時的に消してそのままになっているのです。)

    ちなみに、品種依存しているソースは、その消してある部分を含む以下のソースとBSPモジュールとポートレイヤだけです。(その筈です。) また、コンパイラ依存の差分が出るソースは、RXスマートコンフィグレータが生成したソースの一部とポートレイヤだけです。(その筈です。) あと、ボード依存の記述は以下のソースのみです。(その筈です。最終的には、TB-RX65N、TB-RX231、TB-RX130に実際に移植してみてからでないと、結果的なことは言えませんけれど。)

    FreeRTOS/Demo/RX700_RX72N_EnvisionKit_Renesas_e2studio_CS+/src/FreeRTOS_Demo/demo_specific_io.h
    github.com/NoMaY-jp/FreeRTOS/blob/a4a2b21a52/FreeRTOS/Demo/RX700_RX72N_EnvisionKit_Renesas_e2studio_CS%2B/src/FreeRTOS_Demo/demo_specific_io.h

    [追伸]

    以下、面白そうですね。TB(or RSK)を使ったFreeRTOS Renesas RX RTOSDemoプログラムのCI/CDに関して何かアイデアが浮かんで来そうです、、、(浮かんで来たアイデアは、ぼちぼちと、かふぇルネに投稿してみようかと、、、)

    > Nightly Buildといって夜な夜な全自動で「ビルド⇒フラッシュ書換⇒テスト実行⇒結果集計」を
    > FSPに収録されている全ソフトに対して行っています。

    [追伸その2]

    RX72N Envision Kit(and RX72N RSK)のFreeRTOS RTOSDemoプログラムも、いつものように、かふぇルネに投稿しようかと思います、、、

  • NoMaYさん

    シェルティです、こんにちは。

    返信遅くてすみません。
    本件開発チームと会話する時間を17日に1時間ほど確保しました。
    そのあと何らか回答します。書き込み自体は週末になるかもしれません。

    たぶん、私以外の開発チームの人は状況を把握しているのですが、私だけ把握してない、という状態です。
    私が状況を理解してGOと言えば先に進みますが、如何せん臆病者なので、ちゃんと理解しないとGOと言えない感じです。もう少し時間ください。

    以上です
  • シェルティさん、こんにちは。NoMaYです。

    GitHubのFreeRTOS-KernelのmasterにmergeされたDinh Van NamさんのGNURX向けポートレイヤなのですが、他の方の支援があってmergeされたものの、その方の修正に間違いがあって、RX100ポートレイヤが動作しなくなってしまっていることに気付きました。以下のように、上側コードの赤文字部分が下側コードに無く、当然ながら割り込み関数も割り込みベクタも意図通りに扱われません。

    portable/GCC/RX100/port.c

    Dinh Van Namさんのプルリクエスト:

    #if defined(configTICK_VECTOR)
    void vPortSoftwareInterruptISR( void ) __attribute__((naked, vector( R_BSP_SECNAME_INTVECTTBL, VECT_ICU_SWINT )));
    #else
    void vPortSoftwareInterruptISR( void ) __attribute__((naked));
    #endif

     

    #if defined(configTICK_VECTOR)
    void vPortTickISR( void ) __attribute__((interrupt( R_BSP_SECNAME_INTVECTTBL, _VECT( configTICK_VECTOR ) )));
    #else
    void vPortTickISR( void ) __attribute__((interrupt));
    #endif

    支援して下さった方の修正:

    #if ( configINCLUDE_PLATFORM_H_INSTEAD_OF_IODEFINE_H == 1 )

        R_BSP_PRAGMA_INTERRUPT( vSoftwareInterruptISR, VECT( ICU, SWINT ) )
        R_BSP_ATTRIB_INTERRUPT void vSoftwareInterruptISR( void ) __attribute__( ( naked ) );

    #else /* configINCLUDE_PLATFORM_H_INSTEAD_OF_IODEFINE_H */

        void vSoftwareInterruptISR( void ) __attribute__( ( naked ) );

    #endif /* configINCLUDE_PLATFORM_H_INSTEAD_OF_IODEFINE_H  */

     

    #if ( configINCLUDE_PLATFORM_H_INSTEAD_OF_IODEFINE_H == 1 )

        R_BSP_PRAGMA_INTERRUPT( vTickISR, _VECT( configTICK_VECTOR ) )
        R_BSP_ATTRIB_INTERRUPT void vTickISR( void ); /* Do not add __attribute__( ( interrupt ) ). */

    #else /* configINCLUDE_PLATFORM_H_INSTEAD_OF_IODEFINE_H */

        void vTickISR( void ) __attribute__( ( interrupt ) );

    #endif /* configINCLUDE_PLATFORM_H_INSTEAD_OF_IODEFINE_H */

     

  • NoMaYさん

    シェルティです、こんにちは。

    RX100のポートレイヤの件、Dinh Van Namさんと相談しておきます。
    Amazon FreeRTOSとしての認証対象はRX65Nのみなので、認証には影響なしということで
    他が多少バグっていても「近いうちにもう一回プルリクエストする」ということに
    AWSとの折衝上はしてありますので緊急対応は不要です。

    それから、NoMaYさんにいただいたプルリクエストにあるサンプルコードのレビュー結果は以下の通りです。
    総じて問題なし、IDEに対しては「過去の古いIDEには対応しない」で統一しました。

    e2 studio v5.4の件はシェルティの対応がたいへん遅いので、AWSメンバが調べてくれました。
    申し訳ない気持ちでいっぱいです。精進します。以下テキストはAWSメンバの書いたものに
    シェルティが「OK」と書き込んで返信したものです。
    同様の内容をプルリクエストにもDinh Van Namさんが書き込みます。

    - Renesas Demo project
    - E2 studio update
    - Make_RX600_RX64M_RSK_Renesas_e2studio_project_better
    github.com/.../231  Verified, can be merged
    Renesas: OK.
    - Upgrade_GCC_project_for_e2v780_in_RX200_RX231-RSK_GCC_e2studio_IAR
    github.com/.../255  Verified, but need to confirm the compatibility issue with Renesas (will not be unable to build using e2 studio v5.4 or earlier after merge)
    Renesas: OK. Renesas would like user to move to latest version of e2 studio.
    - Upgrade_GCC_project_for_e2v780_in_RX700_RX71M_RSK_GCC_e2studio_IAR
    github.com/.../257  Verified, but need to confirm the compatibility issue with Renesas (will not be unable to build using e2 studio v5.4 or earlier after merge)
    Renesas: OK. Renesas would like user to move to latest version of e2 studio.
    - Upgrade_GCC_project_for_e2v780_in_RX100_RX113-RSK_GCC_e2studio_IAR
    github.com/.../258  Verified, but need to confirm the compatibility issue with Renesas (will not be unable to build using e2 studio v5.4 or earlier after merge)
    Renesas: OK. Renesas would like user to move to latest version of e2 studio.
    - Build: Upgrade GCC project files for e2 studio v7.8.0 in Demo/RX600_RX64M_RSK_GCC_e2studio folder
    github.com/.../263  Verified, but need to confirm the compatibility issue with Renesas (will not be unable to build using e2 studio v5.4 or earlier after merge)
    Renesas: OK. Renesas would like user to move to latest version of e2 studio.

    - Build Error Fix
    - Fix_RX100-RSK_Renesas_e2studio_build_error
    github.com/.../228  Verified, can be merged
    Renesas: OK.
    - Fix_RX200_RX231_RSK_GCC_e2studio_IAR_IAR_build_error
    github.com/.../239  Verified, can be merged
    Renesas: OK.
    - Fix_RX600_RX64M_RSK_GCC_e2studio_build_error
    github.com/.../245  Verified, can be merged
    Renesas: OK.
    - Resolve stdio and stream_buffer link errors in RX64M demo (#42) #43
    github.com/.../43  Can be Closed (if PR#245 get merged)
    Renesas: OK.

    以上です
  • NoMaYさん

    シェルティです、こんにちは。

    ターゲットボード向けのサンプルですが以下のように意思表示しました。
    こちらはAWSの見解待ちです。(Ishiguro = シェルティです)

    Additional comment (very low priority):
    Ishiguro would like add samples for some of Target Boards for RX MCUs (RX65N, RX231, RX130).
    www.renesas.com/.../rx-family-target-board.html

    I think current samples corresponding to RSK (Renesas Starter Kit) series but these boards are quite expensive like 500US$ over. (But have complete capability for whole of RX MCUs application evaluation)
    I think further samples corresponding to TB (Target Boards) series that these boards are quite low price like about 15US$ and Emulator circuit on boards. (But have need adding circuits for each RX MCUs application evaluation)

    So I would like to add TB boards samples on FreeRTOS sample repo. What do you think?


    以上です