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、に設定して試しました。

Parents
  • こんにちは。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マイコンボードすべてでソフトウェアの移植がスマートコンフィグレータ上で容易に実現できます。

Reply
  • シェルティさん、こんにちは。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マイコンボードすべてでソフトウェアの移植がスマートコンフィグレータ上で容易に実現できます。

Children
  • 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と言えない感じです。もう少し時間ください。

    以上です