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さん

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

    対応一覧表ありがとうございます。認識一致です。
    また複数ボード対応のコードも承知しました。本来この類のコードはBSPで持つべきなんですよねえ。
    BSPにボード依存情報がほとんどない、との理由から一旦BSPからはボード依存コードを除去したのですが、
    シェルティ個人的にはSDRAMの初期設定コードとか含めてBSPに持たせるべきと考えている次第です。

    /* FreeRTOS CLI Command Console */に使うSCIのチャネル番号情報なんかもボード依存でして、
    BSP(Board Support Package)なり、BDF(Board Description File)を駆使してどうにかうまいこと対処できるよう仕様検討を進めている最中です。

    RSKで動作するかはこちらで見てみようと思います。
    整ってくるまではNoMaYさんのコード(demo_specific_io.h)をうまく活用しつつ凌いでいきます。

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

    あと2~3日ぐらいかなと思ったのですが、1週間掛かってしまいました。すみません。ようやくですが、プルリクエストの形式でソースを投稿してみました。

    Add Renesas TB-RX130/RX231/RX65N RTOS Demo and update Renesas RX72N Envision Kit RTOS Demo #3
    github.com/renesas/FreeRTOS/pull/3

    Update Renesas RX100 and RX600v2 port layer for Renesas TB-RX130/RX231/RX65N RTOS Demo #5
    github.com/renesas/FreeRTOS-Kernel/pull/5

    AWSさんからのアドバイスのあったDemo/RISC-V_RV32_SiFive_HiFive1-RevB_IARに順ずるようにしたこと以外にも、以下のことを追加しました。(でも、今回気付いたのですが、EWRXではRXマイコンのデバッグコンソール機能が使えませんね。IARコンパイラでビルドされたプログラムファイルはELF/DWARF形式のようで、e2 studio/GDBで読み込めてデバッグも出来てDebug Virtual Console機能も使えたので勢いでGNURX/CC-RX/ICCRXどれも同じ動作/構成にしましたが、EWRXだけ使っている人には違和感があるかも。)

    (1) The simple blinky demo's 'Blink' messages are sent to not only the UART but also the Debug Console.
    (2) The full demo sends '.' pass messages and/or various fail status messages to the Debug Console.
    (3) The following error messages can be displayed in the Debug Console if it is detected.
    Assertion failed!
    Insufficient heap memory!
    Stack Overflow!
    (4) Optimize stack size setting a little.
    (5) Add dual(or triple) eval board support.
    (6) Add task notification array demo/tests.

    (*) Note that EWRX doesn't have the Debug Console.

  • NoMaYさん

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

    ありがとうございます。こちらでも動作検証し本家にプルリクエスト出します。
    進捗は適宜報告いたします。

    デバッグコンソールの件、ありがとうございます。確かにデバッグコンソール向けの出力は機種(RXマイコン)依存なので、EWRXで使えないのは必然かもしれません。特に問題にはならないと思います。

    プルリクエストを眺めていて、以下のように感じました。引き続き相談させてください。

    ①今回刷新いただいたTB用とEnvision用のサンプルを残して他の古いプロジェクトは消した方がユーザが混乱しないのではないか。
    ②スマートコンフィグレータ出力のsmc_genが同じ内容物で各サンプルフォルダに入っており、Amazon FreeRTOSのディストリビューションのようにsmc_genはプロジェクト外部参照とし共通項で括りたいが良い方法が無さそう
    ③smc_workaroundフォルダ内のコードは本家RX Driver Packageに反映すべきではないか?

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

    そうなんですよね。e2 studioでFreeRTOSプロジェクトを生成出来る今、古いFreeRTOSデモプログラムでRXスマートコンフィグレータ未対応(それ以前のCGオンリ時代)のデモプログラムは混乱の元でしかないかも知れないですよね。また、もっと古いHEW時代のデモプログラムは、その点では意義があるけれども、そのマイコンを今選択するということがお勧め出来ないというか、そんな感じのところでもありますね。

    ただ、FreeRTOSは、サポートするマイコンの種類の多さや、対応するコンパイラや統合開発環境の種類の多さとか、そういう点もアピールポイントにしているようでもありますので、古いデモプログラムを消すことにAWSさんが賛成するか、ちょっと微妙かも知れないような気はします。

    あと、別の視点として、e2 studioでFreeRTOSプロジェクトを生成出来る今、これらのデモプログラムを下敷きにしてプログラムを作っていく人はいないだろうから、混乱する人は出てこないのではないか、、、という考え方も出来そうにも思います、、、(では、デモプログラムの意義は何なのかという話になると、レグレッションテストということになるのかなぁ、という気がしてきています、、、)

    その一方で、個別案件としては、以下のように思います。

    (1) 以下はTB-RX231の(RSK選択時の)デモプログラムと機能的に重複する(むしろ少ない)ので削除する敷居は低いと思います

    Demo/RX200_RX231-RSK_GCC_e2studio_IAR/
    Demo/RX200_RX231-RSK_Renesas_e2studio/

    (2) 以下はまさに混乱を招きそうなCGオンリ時代)のデモプログラムです

    Demo/RX100_RX113-RSK_GCC_e2studio_IAR/
    Demo/RX100_RX113-RSK_Renesas_e2studio/
    Demo/RX600_RX64M_RSK_GCC_e2studio/
    Demo/RX600_RX64M_RSK_Renesas_e2studio/
    Demo/RX700_RX71M_RSK_GCC_e2studio_IAR/
    Demo/RX700_RX71M_RSK_Renesas_e2studio/

    (3) 以下は更に古い(でもHEW時代よりは後)ですがtickless idle modeのデモ内容を何らかの形で残すようにしたいですね

    Demo/RX100-RSK_GCC_e2studio/
    Demo/RX100-RSK_IAR/
    Demo/RX100-RSK_Renesas_e2studio/

    (4) 以下はHEW時代のものですがwebserverのデモ内容はRX65NとかRX72Nとかで残すようにしたいですね(私には知識不足で困難)

    Demo/RX600_RX62N-RDK_GNURX/
    Demo/RX600_RX62N-RDK_IAR/
    Demo/RX600_RX62N-RDK_Renesas/
    Demo/RX600_RX62N-RSK_GNURX/
    Demo/RX600_RX62N-RSK_IAR/
    Demo/RX600_RX62N-RSK_Renesas/
    Demo/RX600_RX63N-RDK_Renesas/

    (5) 以下はHEW時代のものですが、今となっては新規にFreeRTOSを試す人はいないかも、とも思ったりします、、、

    Demo/RX200_RX210-RSK_Renesas/
    Demo/RX600_RX630-RSK_Renesas/

    あと、「③smc_workaroundフォルダ内のコードは本家RX Driver Packageに反映すべきではないか?」は来週からのテーマですね。こちらも、GitHubのルネサスさんのRX Driver Packageのリポジトリに、issueなりpull requestなりといった形式で投稿していってみようかと考えているところです。(かふぇルネの投稿の中に埋もれないようにと。)

  • NoMaYさん

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

    コメントありがとうございます。サンプルの扱いについてはAWSの意見も聞いて判断します。
    (1)~(5)について承知しました。まとめ大変助かります。個人的には全部削除かとは思っています。
    (4)のwebserverについては、RX72N Envision KitでOSレス環境でTCP/IP機能を実現する方法を最新情報で作りました。
    ①: github.com/.../1-Ether-TCP-IP

    WebサーバのFITモジュールもearly prototypeですが用意しました。Webサーバの組み立て方も近いうちに書いてみようと思います。①に②をスマートコンフィグレータで少し足すだけで動作します。
    ②: github.com/.../rx-driver-package

    また、RX72N Envision KitでFreeRTOS環境でTCP/IP機能を実現する方法も最新情報で作りました。
    github.com/.../新規プロジェクト作成方法(FreeRTOS(with-IoT-Libraries))

    こちらはまだAmazonからウェブサーバのモジュールが提供されていないですが、提供されればウェブサーバの組み立て方の情報を同じく書いてみようと思います。また、他の機能(MQTTとかOTAとかS3バケットのやり取りとか、センサデータのAWS上の可視化とか)の情報を適宜足していきたいと考えてます。

    「③smc_workaroundフォルダ内のコードは本家RX Driver Packageに反映すべきではないか?」についても承知しました。引き続き議論させてください。

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

    ふと思ったのですが、実は、RX700v3_DPFPUポートレイヤは以下の3種類(というか2種類というか)に対応出来るようになっているのですが、もう少し頑張ってRXv1+FPU有り/FPU無しにも対応出来るようにしてRX_SmartConfiguratorポートレイヤへとリネームさせてしまうことも出来そうです。どうでしょうか?

    現在のRX700v3_DPFPUポートレイヤで対応出来るもの

    (RXv3コア+単精度FPU有り)+倍精度FPU有り
    (RXv3コア+単精度FPU有り)+倍精度FPU無し = (RXv2コア+単精度FPU有り)

    追加で対応するもの

    RXv1コア+単精度FPU有り
    RXv1コア+単精度FPU無し

    活用しようと考えているコンパイラのプリデファインマクロ

    GNURX
        __RXv3__=1
        __RXv2__=1
        __RXv1__=1
        __RX_FPU_INSNS__=1
        __RX_DFPU_INSNS__=1

    CC-RX/ICCRX
        __RXV3=1
        __RXV2=1
        __RXV1=1
        __FPU=1
        __DPFPU=1

    活用例

    GNURX
        RX72N
            __RXv3__=1
            __RX_FPU_INSNS__=1
            __RX_DFPU_INSNS__=1
        RX65N/RX231
            __RXv2__=1
            __RX_FPU_INSNS__=1
        RX130
            __RXv1__=1
        RX13T
            __RXv1__=1
            __RX_FPU_INSNS__=1

    CC-RX/ICCRX
        RX72N
            __RXV3=1
            __FPU=1
            __DPFPU=1
        RX65N/RX231
            __RXV2=1
            __FPU=1
        RX130
            __RXV1=1
        RX13T
            __RXV1=1
            __FPU=1

     

  • NoMaYさん

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

    ご提案ありがとうございます。素晴らしいと思います。

    リネームの案ですが、RX700v3_DPFPU(他RX600v2、RX600、RX200、RX100、SH2A_FPU)はそのままにして

    RX100のFPUのON/OFFのところまで入れて、SCベースにしたものをRXとして新設するのが良いように思いました。

    RX以外のものは、「SCは使いたくないけどFreeRTOSは使いたい」人向けですかね。

    以上です

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

    それでは"RX"を新設して取り掛かろうかと思います。ただ、RX72N Envision Kit向けのデモプログラムもその"RX"の方を使用するようにプロジェクトを修正しますので、RX700v3_DPFPUポートレイヤを使用するデモプログラムが存在しなくなってしまい、それもどうしたものか、と思っているところです。ですが、FreeRTOS-KernelやFreeRTOSのリポジトリには、例えばGCC/RL78のように、ポートレイヤだけがあって、それを使用するデモプログラムが存在しないもの、もありましたので、追々考えてみようかと思います。(もっとも、このGCC/RL78ポートレイヤですが、それを使用するデモプログラムが存在していないだけのことはあって、そのままでは動作しないものでしたが、、、)

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

    ポートレイヤに"RX"を新設してデモプロプログラムでそれを使用するソースコードに変更してみました。

    FreeRTOSポートレイヤ側
    github.com/renesas/FreeRTOS-Kernel/tree/b5c50f4fda0d49ac8ecdc9239eb9f337c0305e4c/portable/

    GCC/RX/
    IAR/RX/
    Renesas/RX/

    FreeRTOSデモプログラム側
    github.com/renesas/FreeRTOS/tree/ff999df66e59387aba3e194bbebe881809feca1c/FreeRTOS/Demo/

    RX100_RX130_TB_GCC_e2studio/
    RX100_RX130_TB_IAR_e2studio_EWRX/
    RX100_RX130_TB_Renesas_e2studio_CS+/

    RX200_RX231_TB_GCC_e2studio/
    RX200_RX231_TB_IAR_e2studio_EWRX/
    RX200_RX231_TB_Renesas_e2studio_CS+/

    RX600_RX65N_TB_GCC_e2studio/
    RX600_RX65N_TB_IAR_e2studio_EWRX/
    RX600_RX65N_TB_Renesas_e2studio_CS+/

    RX700_RX72N_EnvisionKit_GCC_e2studio/
    RX700_RX72N_EnvisionKit_IAR_e2studio_EWRX/
    RX700_RX72N_EnvisionKit_Renesas_e2studio_CS+/

  • NoMaYさん

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

    本件、内部で検討を進めました。以下方針で進めようと思います。
    github.com/.../5

    引き続き、本件に開発者を割いて検討を進めています。
    ご意見ありましたらまた書込みいただけますと幸いです。

    サンプルの動作検証については、数が多いと大変なので、一旦はTBとEnvision Kitに絞ります。
    一方で、GitLabを使ってCI/CD環境の構築および、GitLab Runnerを動かすためのRaspberry Piと各種マイコンボードの購入手配とセットアップ、Raspberry PiからRXマイコンへの書き込みの動作確認など諸々の準備が済み、いよいよマイコン実機を使ったソフトウェア評価自動化の環境構築ができてきました。
    評価が自動化できれば、FreeRTOSサンプルをいくら増やしてもメンテナンスコストゼロで最新のRX Driver Packageを適用した状態を維持できます。RSK用のサンプルも追々復旧させようと考えています。

    以上です