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です。

    ビルド関係のプルリクエストですが、1つ足りていなかったです。以下がリストから漏れています。

    Upgrade GCC project files for e2 studio v7.8.0 in Demo/RX100-RSK_GCC_e2studio folder
    github.com/FreeRTOS/FreeRTOS/pull/264

    それで、私のプルリクエストなのですが、これで終わりではなくて、もうちょっと続くと思います。(既に出してある分のみならず、この後も新規のプルリクエストを出すつもりです。)

    最近GitHubに慣れてきて思ったのですが、かふぇルネのスレッドにそのリストを返信しても埋もれてしまって探し難いと思いますので、GitHubのルネサスさんのリポジトリにissueのページを追加して頂いて、そちらに投稿するようにしたいのですが、どうでしょうか?

    また、今現在、GitHubのルネサスさんのリポジトリには、FreeRTOS-KernelのForkはあるのですが、FreeRTOSのForkがありません。新規に出したいプルリクエストにFreeRTOSのリポジトリのものもあるのですが、FreeRTOSの方もForkして頂ければ、その分はそのFreeRTOSのForkの方のissueに投稿するようにしたいと思います。どうでしょうか?

    それでも、プルリクエストのような今あるソースコードに密着した細かい話では無いもの(あるいは細かい話になる前の段階のもの)に関しては、このまま、かふぇルネに投稿しようかと思うのです。

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

    TB-RX65N, TB-RX231, TB-RX130のFreeRTOSデモプログラムですが、ちなみに、かふぇルネへの以下の投稿の続きの投稿として、以前から自分のリポジトリでは、やるつもりでいたものです。(それから、RL78/G14 Fast Prototyping Boardでやっていたような別のタイプのFreeRTOSサンプルプログラムも、これらのボードでもやるつもりでいます。static allocation, UART送受信, DMA/DTC, 等あるもの。)

    FreeRTOSをFITやCG(や追々PDG2でも?)と一緒に使うサンプルプログラムをCSplusでビルド出来るプロジェクトにしてみた

    japan.renesasrulz.com/cafe_rene/f/forum21/4826/freertos-fit-cg-pdg2-csplus/32094#32094

    作業結果的に、st1011さんが移植されたRX65N_TB_FreeRTOS_Full_Demo版を、FreeRTOS 10.2.1のソースとe2 studio v7.4.0で生成したFreeRTOSプロジェクトのソースを使って、CS+プロジェクトへ焼き直した形になりました。以下、プロジェクトのファイル一式です。(CS+ V8.01+CC-RX V2.03でビルド)(e2 studio用.project/.cproject等を同梱(zipファイルをe2 studioに直接インポート可能)) なお、長時間運転は検証中です。


    japan.renesasrulz.com/cafe_rene/f/forum21/4826/freertos-fit-cg-pdg2-csplus/32081#32081

    昨日の比較を踏まえて、まずは、e2 studioのFreeRTOSプロジェクトのフォルダ構成とグルー部分のソースを尊重しつつ、st1011さんがされたようなFull Demoの移植を、kern-gtさんがされたようにCS+で行う、ということをやってみようかなと思います。その時、スタンドアロン版のスマートコンフィグレータがRXファミリ Renesas FreeRTOSモジュールに現状は未対応のようですので、その代わりと言っては何ですが、出来るだけFreeRTOS 10.2.1のソースを使用するようにしようかと思います。それがうまく出来たら、RX231版/RX130版、GNURX版、C++プロジェクト版を作成する、というようにやってみようかなと思います。


    RL78 FreeRTOS APIを特別なおまじない記述無しで割り込みルーチンから呼び出せるようにしてみた(CC-RL/GNURL78)
    japan.renesasrulz.com/cafe_rene/f/forum21/5845/rl78-freertos-api-cc-rl-gnurl78/34947#34947

    ここまでのCall Walker (CC-RL+CS+)対応作業(+α)を纏めてzipファイルに固めました。なお、スタックサイズ設定は以下のようにfreertos_start.hに記述することにしました。(他方、今回のGNURL78での値はざっくり決め打ちの値です。GNURL78でのスタック使用量の妥当な見積もり方法に関しては後日考えます。)


    rl78g14fpb_freertos_sampleprog1_ccrl_c_csplus_20200503.zip (*1,*2,*3)    476KB
    rl78g14fpb_freertos_sampleprog2_ccrl_c_csplus_20200503.zip (*1,*2,*3)    465KB
    rl78g14fpb_freertos_sampleprog3_ccrl_c_csplus_20200503.zip (*1,*2,*3)    527KB
    rl78g14fpb_freertos_sampleprog1_gnurl78_c_e2v780_20200503.zip (*1,*2,*4)   418KB
    rl78g14fpb_freertos_sampleprog2_gnurl78_c_e2v780_20200503.zip (*1,*2,*4)   408KB
    rl78g14fpb_freertos_sampleprog3_gnurl78_c_e2v780_20200503.zip (*1,*2,*4)   469KB

    sampleprog1: UART送受信をDTCで行う版
    sampleprog2: UART送受信を割り込みのみで行う版
    sampleprog3: UART受信をリングバッファで行いUART送信を割り込みのみで行う版

  • NoMaYさん

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

    打合せ席上斜め読み状態で全文読めてない状態で申し訳ありませんが、
    以下「すぐできること」対応完了です。

    >>GitHubのルネサスさんのリポジトリにissueのページを追加して頂いて、そちらに投稿するようにしたいのですが、どうでしょうか?

    賛成です。作りました。日本語で書いていただいてもOKです。
    Dinh Van Namさんは日本語/英語/C言語/python言語/母国語もバリバリのスーパーマンです。
    github.com/.../issues

    > GitHubのルネサスさんのリポジトリには、FreeRTOS-KernelのForkはあるのですが、
    > FreeRTOSのForkがありません。新規に出したいプルリクエストに
    > FreeRTOSのリポジトリのものもあるのですが、FreeRTOSの方もForkして頂ければ、
    > その分はそのFreeRTOSのForkの方のissueに投稿するようにしたいと思います。
    > どうでしょうか?

    賛成です。作りました。IssueもONにしておきました。
    github.com/.../FreeRTOS

    以上です
  • こんにちは。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

    以上です
  • シェルティさん、こんにちは。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 */