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のIAR向けポートレイヤで特定の品種のIOR定義ファイルがインクルードされてる、、、ここも直さなくちゃ、、、きっと、RTOSデモプログラム側を同時に直さないといけないかと思うので、Amazonさんに説明するのがちょっとややこしくなりそうですね、、、

    github.com/FreeRTOS/FreeRTOS-Kernel/blob/V10.4.0-kernel-only/portable/IAR/RX600/port.c#L40

    /* Scheduler includes. */
    #include "FreeRTOS.h"
    #include "task.h"

    /* Library includes. */
    #include "string.h"

    /* Hardware specifics. */
    #include <iorx62n.h>

     

  • NoMaYさん

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

    IARの件ご連絡ありがとうございます。これも直す必要ありますね。

    あと以下AWSから連絡もらえました。

    ①FreeRTOSデモサンプルは全件マージ完了
    ②TB用のサンプルは "totally welcome" であること
    ③サンプル実装が出来たらプルリクエストで送ってほしいこと
    ④サンプルはLED点滅&メッセージ送出のシンプル版と、FreeRTOSフルテストの2種類があること
     ・実装は上記のどちらでも良いこと
     ・両方実装するならマクロで切り替えられるようにするのが良いとのこと
     ・RISC-V用のサンプルが最新であり、参考になるかもしれないとのこと

    以下参考になりそうなURLとしてAWSから連絡いただいたものです。

    Switching between demos:
    github.com/.../main.c
    github.com/.../main.c

    Implementation of demos:
    github.com/.../blinky_demo
    github.com/.../full_demo

    Full demo starts the test task: github.com/.../main_full.c

    Full demo also creates a check task: github.com/.../main_full.c

    Also depending on the port we should have tasks that check the context switching with ‘register check tasks’github.com/.../main_full.c and potentially interrupt nesting checks.github.com/.../IntQueue.c

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

    情報ありがとうございます。今朝、RXv3ポートレイヤを使うRTOSDemoプログラムがFreeRTOSのmasterにmergeされた(RXv3ポートレイヤ自体は先月のうちにFreeRTOS-Kernelのmasterにmergeされた)のですが、基本的なところでは変わり無い(というか私が参考にしたRX71Mより更に以前のものから基本的なところでは変わっていない)ような感じですね。それでも、細かいところに関しては、これから比べてみようと思います。

    TB-RX65N, TB-RX231, TB-RX130のFreeRTOSデモプログラムは、先日のリプライのように、以前のかふぇルネへの投稿の続きの投稿としてやるつもりでいたのですが、ひとまず形が出来たところで、ルネサスさんのFreeRTOSのForkにプルリクエストの形式で投稿してみましょうか?(GitHubではプルリクエストにDraftというマークを付けられるようなので、そのマークを付けておこうかと思います。)

    また、ポートレイヤ(とIAR向けRX600ポートレイヤに関するRTOSDemoプログラム側の修正とか)も区切り(というか纏まりというか)の良さそうなところで適宜プルリクエストの形式で投稿してみましょうか?

    どちらも、日本語で、のつもりですけれども。

  • NoMaYさん

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

    どちらも是非お願いします。もちろん日本語で問題ないです。
    AWSへのプルリクエストはルネサスで引き受けようと思います。

    対AWSのGitHub上の振る舞いは経験値がたまり、かなりの頻度でAWSとGitHub上で連絡が取りあえるようになりました。込み入った内容の場合はメールベースや音声会議もするようになってきました。
    当たり前ではありますが、プルリクエストの単位をすぐレビューできる範囲「数ファイル、数行」に区切って数をこなしていく、という形にすると先に進みやすいですね。

    あとAWSがそうしているように、ルネサスもGitHub上にプルリクエストをマージするためにGitHub上でプルリクエストやIssueをレビューする人を多数割り付けておいてユーザからのフィードバックをどんどん本体コードに盛り込んでいけるような体制づくりを目指していきたいと思います。
    私の直接の管掌範囲であるRX Driver PackageとFreeRTOSの実装は少なくともそうしていきます。

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

    では、FreeRTOSもFreeRTOS-KernelもルネサスさんのForkに適宜プルリクエストの形式で投稿していこうと思います。

    また、以前にもリプライしたような気がしますが、同じ内容でも私から投稿するよりルネサスさんから投稿した方がプルリクエストが早くマージされる可能性が高そうな気もしますので(これからは特に)、そのようにルネサスさんの方でお願いします。(あまり変わらなさそうであれば、遠回り感もありますので、また考えましょう。) それに、私の手元には実機が足りていませんので、RTOSDemoプログラムの対象の実機があれば、実機で動かしてすぐに確認が終わるようなことも、他の実機で確認出来るようにする為のプログラムの改造を考えて修正して確認しないといけませんので、その分の時間も必要だからです。(もっとも、他の実機というのは、より安価な実機ということに私の場合なりますので、そういう実機でも確認出来るようになることにも意義はあると思いますので、後追いという形になってしまうかとは思いますが、試行錯誤してみるかも知れないかな、とも思います。)

    なお、RL78はルネサスさんの方で受ける人が今のところ居なさそうなので、私からするようにします。(たぶん、居ないかな、と、、、)

  • NoMaYさん

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

    >>そのようにルネサスさんの方でお願いします。(あまり変わらなさそうであれば、遠回り感もありますので、また考えましょう。)

    承知しました。ありがとうございます。

    >>なお、RL78はルネサスさんの方で受ける人が今のところ居なさそうなので、私からするようにします。(たぶん、居ないかな、と、、、)

    実はRL78用のFreeRTOSもシェルティの管掌範囲です。
    というよりはルネサス用のFreeRTOSは、といったほうが正確ですね。
    以下リポジトリのオーナーはシェルティです。
    github.com/.../amazon-freertos

    RL78のプルリクエストもルネサスのフォークに出していただければ、と思います。

    さらにすでにRL78用のFreeRTOSも整備もある程度進みました。
    少し色々実装が汚いのですが、RL78でもWiFiでAWS接続できるようになりました。
    github.com/.../202002.00-rl78-1.0.0
    今はまだコードだけひとまずGitHubにアップしたところですが、
    解説用のコンテンツ(GitHub上のwikiでの解説やアプリケーションノート)の作成も進めてます。

    今回先にAWS接続込のFreeRTOSの方を作りましたが、RL78の場合はAWS接続込のFreeRTOSというよりは、
    FreeRTOSカーネルだけ使いたいケースのほうが多いでしょうから
    これについてもRXの環境と同じような形のものを今後拡充していきたいと考えてます。

    RL78のほうは、RL78/G14 Fast Prototyping BoardというのをFreeRTOSが動作するボードとして考えてます。
    www.renesas.com/.../rl78-g14-fast-prototyping-board.html

    以上です
Reply
  • NoMaYさん

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

    >>そのようにルネサスさんの方でお願いします。(あまり変わらなさそうであれば、遠回り感もありますので、また考えましょう。)

    承知しました。ありがとうございます。

    >>なお、RL78はルネサスさんの方で受ける人が今のところ居なさそうなので、私からするようにします。(たぶん、居ないかな、と、、、)

    実はRL78用のFreeRTOSもシェルティの管掌範囲です。
    というよりはルネサス用のFreeRTOSは、といったほうが正確ですね。
    以下リポジトリのオーナーはシェルティです。
    github.com/.../amazon-freertos

    RL78のプルリクエストもルネサスのフォークに出していただければ、と思います。

    さらにすでにRL78用のFreeRTOSも整備もある程度進みました。
    少し色々実装が汚いのですが、RL78でもWiFiでAWS接続できるようになりました。
    github.com/.../202002.00-rl78-1.0.0
    今はまだコードだけひとまずGitHubにアップしたところですが、
    解説用のコンテンツ(GitHub上のwikiでの解説やアプリケーションノート)の作成も進めてます。

    今回先にAWS接続込のFreeRTOSの方を作りましたが、RL78の場合はAWS接続込のFreeRTOSというよりは、
    FreeRTOSカーネルだけ使いたいケースのほうが多いでしょうから
    これについてもRXの環境と同じような形のものを今後拡充していきたいと考えてます。

    RL78のほうは、RL78/G14 Fast Prototyping BoardというのをFreeRTOSが動作するボードとして考えてます。
    www.renesas.com/.../rl78-g14-fast-prototyping-board.html

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

    別のブランチの中にあったのですね。では、RL78もそのようにしようと思います。(RL78/G14マイコンを使ったAmazon FreeRTOSもとうとう出来るようになったんですね。RL78/G14ですと、FreeRTOSは使われていませんが(いないと思いますが)、ルネサスさんでLoRaWAN対応もされていますね。)

    それで、週末か来週頭には、以下のTB-RX65N, TB-RX231, TB-RX130のFreeRTOSデモプログラムとRX72N Envision KitのFreeRTOSデモプログラムのRSK対応追加版、及びこれらのビルドに必要(+α)のカーネル修正、といったあたりをルネサスさんのForkに投稿しようか、と思います。FreeRTOSデモプログラムはコピペ(+力技)でどんどん作れるので、以下のようにちょっと数が多いです。ただ、RSKでの動作確認は私の方では出来ていないものですけれども。

                                                     Envision
                                                        Kit     TB      RSK     CC-RX   GNURX   ICCRX
    Demo/RX100_RX130_TB_GCC_e2studio                    ―      レ      △      ―      レ      ―
    Demo/RX100_RX130_TB_IAR_e2studio_EWRX               ―      レ      △      ―      ―      レ
    Demo/RX100_RX130_TB_Renesas_e2studio_CS+            ―      レ      △      レ      ―      ―
    Demo/RX200_RX231_TB_GCC_e2studio                    ―      レ      △      ―      レ      ―
    Demo/RX200_RX231_TB_IAR_e2studio_EWRX               ―      レ      △      ―      ―      レ
    Demo/RX200_RX231_TB_Renesas_e2studio_CS+            ―      レ      △      レ      ―      ―
    Demo/RX600_RX65N_TB_GCC_e2studio                    レ      レ      △      ―      レ      ―
    Demo/RX600_RX65N_TB_IAR_e2studio_EWRX               レ      レ      △      ―      ―      レ
    Demo/RX600_RX65N_TB_Renesas_e2studio_CS+            レ      レ      △      レ      ―      ―
    Demo/RX700_RX72N_EnvisionKit_GCC_e2studio           レ      ―      △      ―      レ      ―
    Demo/RX700_RX72N_EnvisionKit_IAR_e2studio_EWRX      レ      ―      △      ―      ―      レ
    Demo/RX700_RX72N_EnvisionKit_Renesas_e2studio_CS+   レ      ―      △      レ      ―      ―

    複数ボード対応は、以下のようにしてみました。

    src/FreeRTOS_Demo/demo_specific_io.h
    github.com/NoMaY-jp/FreeRTOS/blob/5bbe279/FreeRTOS/Demo/RX700_RX72N_EnvisionKit_GCC_e2studio/src/FreeRTOS_Demo/demo_specific_io.h#L31

    /* Select one of the following defines. Note that you don't have to
    change the target device. */

        #if !defined(RSK_RX72N) && !defined(RPB_RX72N)

            //#define RSK_RX72N     /* Renesas Starter Kit+ for RX72N */
            #define RPB_RX72N       /* Renesas Envision Kit RPBRX72N */

        #endif



    /* Board support settings. */

        #ifdef RSK_RX72N



            /* Switches */
            #define SW1                     (PORT4.PIDR.BIT.B5)
            #define SW2                     (PORT4.PIDR.BIT.B4)
            #define SW3                     (PORT0.PIDR.BIT.B7)
            #define U_GPIO_PIN_SW1          (GPIO_PORT_4_PIN_5)
            #define U_GPIO_PIN_SW2          (GPIO_PORT_4_PIN_4)
            #define U_GPIO_PIN_SW3          (GPIO_PORT_0_PIN_7)

            /* LED port settings */
            #define LED0                    (PORT7.PODR.BIT.B1)
            #define LED1                    (PORTH.PODR.BIT.B6)
            #define LED2                    (PORTL.PODR.BIT.B7)
            #define LED3                    (PORTL.PODR.BIT.B6)
            #define U_GPIO_PIN_LED0         (GPIO_PORT_7_PIN_1)
            #define U_GPIO_PIN_LED1         (GPIO_PORT_H_PIN_6)
            #define U_GPIO_PIN_LED2         (GPIO_PORT_L_PIN_7)
            #define U_GPIO_PIN_LED3         (GPIO_PORT_L_PIN_6)

            /* FreeRTOS CLI Command Console */
            extern void R_SCI_PinSet_SCI9_RSK_RX72N(void);
            #define U_SCI_UART_CLI_PINSET() R_SCI_PinSet_SCI9_RSK_RX72N()
            #define U_SCI_UART_CLI_SCI_CH   (SCI_CH9)
            #define U_DTC_UART_CLI_TX_ACT   ((dtc_activation_source_t)VECT(SCI9,TXI9))
            #define U_DTC_UART_CLI_TX_DR    (SCI9.TDR)

        #endif /* RSK_RX72N */

        #ifdef RPB_RX72N



            /* Switches (and its notation in the User's Manual) */
            #define SW1/*(SW2)*/                (PORT0.PIDR.BIT.B7)
            #define U_GPIO_PIN_SW1/*(SW2)*/     (GPIO_PORT_0_PIN_7)

            /* LED port settings (and its notation in the User's Manual) */
            #define LED0/*(LED2)*/              (PORT4.PODR.BIT.B0)
            #define U_GPIO_PIN_LED0/*(LED2)*/   (GPIO_PORT_4_PIN_0)

            /* FreeRTOS CLI Command Console */
            #define U_SCI_UART_CLI_PINSET() R_SCI_PinSet_SCI2()
            #define U_SCI_UART_CLI_SCI_CH   (SCI_CH2)
            #define U_DTC_UART_CLI_TX_ACT   ((dtc_activation_source_t)VECT(SCI2,TXI2))
            #define U_DTC_UART_CLI_TX_DR    (SCI2.TDR)

        #endif /* RPB_RX72N */

     

  • 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)をうまく活用しつつ凌いでいきます。

    以上です