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

    素朴に考えれば、ここは、FreeRTOS.org(RTEL社)にRXv3 DPFPU対応ポートレイヤの予定があるかどうかを尋ねてみる、というのがまず第一かな、という気がしてきましたので、尋ねてみます。

  • こんにちは。NoMaYです。

    FreeRTOS.org(RTEL社)にRXv3 DPFPU対応ポートレイヤの予定があるか尋ねたところ、以下の返事でした。対応することはやぶさかではない。まずハードウェアを入手しないといけない。急いでいる人がいれば作ってプルリクエストすると良い。といった感じですかね。私はRX72N Envision Kitを入手したので、これで試しに作業を進め、うまくいけばプルリクエストまで出してみようかなと思います。

    Q)

    Is there any plan of such RXv3 port layer? If so, is there any rough schedule? Because...
    以後省略

    A)

    Yes it would be good to have upstream support for this. I would have to get the hardware first. We also accept pull requests https://github.com/FreeRTOS/FreeRTOS-Kernel if somebody needed this sooner - we would still need to get hardware but the task would be faster as we would just need to verify the testing.

  • こんにちは。NoMaYです。

    > RX72N Envision Kitを入手したので、これで試しに作業を進め、うまくいけばプルリクエストまで出してみようかなと

    きっと、ポートレイヤだけでプルリクエストを出す訳にはいかなくて、RTOSDemoプログラムまで作らないといけないと思いますので、以下のようなRTOSDemoプログラムを作る作業を一緒に進めようと思います。

    ・RX71M RSK+用のRTOSDemoプログラムをベースに、倍精度浮動小数点演算に関するデモ(というかテスト)項目を追加する
    ・現状、FreeRTOSプロジェクトではCGコンポーネントが使えないのでFIT R_SCI_RXモジュールを使うように書き換える
    ・r_rx_compiler.hのマクロを使い、同じソース記述で以下の3種類のコンパイラに対応させるように書き換える
    ・開発環境は以下の4パタンに対応する(e2 studioに関してはFreeRTOSプロジェクト、他はFreeRTOSプロジェクトもどき)
      CC-RX/e2 studio
      GNURX/e2 studio
      CC-RX/CS+
      ICCRX/EWRX
    ・3種類のコンパイラは最新版を使用する、3種類の統合開発環境も最新版を使用する
    ・RX Driver Packageは最新版を使用する、単体RXスマートコンフィグレータも最新版を使用する
    ・CC-RX/GNURXのコンパイルオプション等は私が投稿時に用いているものに設定する(ICCRXに関しては今後調査する)
    ・HOCOを使うようにして、RX72N RSK+とRX72N Envision Kitで外部発振周波数が異なる件を吸収する

  • NoMaYさん

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

    本活動、大変助かります。方針確認しました。問題なさそうです。
    こちら開発チームにもFreeRTOSのGitHubとNoMaYさんのアイデアを見ておくよう指示しております。
    何か実装上の課題などがありましたら、教えてください。こちらでも考えてみたいと思います。

    こちら「GitHubを使う」ということだけで社内でいろんな手続きや交渉が必要な状況で
    プルリクエスト1個だすのも一苦労といったところです。
    体制整備を進めてルネサスからもGitHub上の各本家にプルリクエストをどんどん出していけるようにしたい、
    と考えています。

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

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

    FreeRTOSのRenesas RXのポートレイヤのIAR版を見ていて気付いたのですが、IAR版はコンフィグレーションファイルがFreeRTOSConfig.hの他に(ポートレイヤのアセンブラソースの為)もう1つPriorityDefinitions.hがありますね。将来のRXスマートコンフィグレータでのIAR版のサポート(があると思っています)が、ちょっと面倒そうですね。(RXスマートコンフィグレータはIAR版に対して2つコンフィグレーションファイルを扱わなければならなくなるから。)

    何か対策を考えておられますか?もし、私の方でPriorityDefinitions.hを不要にするように改造したら、(うまくいくかどうかは今後の作業の結果次第として、) そちらで困った問題が発生するようなことはありますか?(あと、FreeRTOS.orgの方で受け入れられるかという点もありますが。)

    ●CC-RX版のポートレイヤと関連ファイル

    port.c
    port_asm.src
    portmacro.h
    FreeRTOSConfig.h

    ●GNURX版のポートレイヤと関連ファイル

    port.c
    portmacro.h
    FreeRTOSConfig.h

    ●IAR版のポートレイヤと関連ファイル

    port.c
    port_asm.s
    portmacro.h
    FreeRTOSConfig.h
    PriorityDefinitions.h

    なお、PriorityDefinitions.hは以下の通りでした。(定型のCopyrightの部分は省略しました。)

    #ifndef PRIORITY_DEFINITIONS_H
    #define PRIORITY_DEFINITIONS_H

    #ifndef __IASMRX__
        #error This file is only intended to be included from the FreeRTOS IAR port layer assembly file.
    #endif

    /* The interrupt priority used by the kernel itself for the tick interrupt and
    the pended interrupt.  This would normally be the lowest priority. */
    #define configKERNEL_INTERRUPT_PRIORITY         1

    /* The maximum interrupt priority from which FreeRTOS API calls can be made.
    Interrupts that use a priority above this will not be effected by anything the
    kernel is doing. */
    #define configMAX_SYSCALL_INTERRUPT_PRIORITY    4

    #endif /* PRIORITY_DEFINITIONS_H */

     

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

    > 私の方でPriorityDefinitions.hを不要にするように改造したら、(うまくいくかどうかは今後の作業の結果次第として、)

    これは出来ました。ついでに、以下の画面コピーのように、e2 studioでもIAR C/C++コンパイラFreeRTOSプロジェクトもどきを作ってみました。ちょっと惜しかったのは、e2 studio上ではIAR C/C++コンパイラ向けscfgファイルを開こうとするとエラーになってしまうことです。現状、仕方ないですね。なお、EWRXでのIAR C/C++コンパイラFreeRTOSプロジェクトもどきも作っています。EWRX版に加えe2 studio版もRTOSDemoプログラムのプルリクエストに含めようと考え始めました。

    e2 studioでもIAR C/C++コンパイラFreeRTOSプロジェクトもどきを作ってみた



    e2 studio上ではIAR C/C++コンパイラ向けのscfgファイルを開こうとするとエラーになるので単体RXスマートコンフィグレータで開く必要がある



    EWRXでのIAR C/C++コンパイラFreeRTOSプロジェクトもどきも作ってあります


    注) FreeRTOSの各タスクのスタック設定に基づいてC-SPYにスタックチェックさせるやり方はまだ習得出来ていません、、、

  • NoMaYさん

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

    IAR向けの活動実施いただきありがとうございます。大変助かります。
    NoMaYさんの活動常にウォッチさせていただいております。

    こちらではe2 studio / Smart Configurator / FreeRTOS の連携機能の強化を進めています。
    現状 e2 studio 2020-04 (v7.8)ではボードコンフィグレーション周りにまだ課題を抱えており、
    FreeRTOS込のプロジェクト生成はできるようになりましたが、端子設定やクロック設定は自分で行う必要があります。
    このあたりを改善して、ユーザがボードを選択したらそれに合わせてボードコンフィグレーションが行われて適切な状態で自動コード生成されるところを目指して進めています。

    引き続き情報交換させてください。

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

    あと、RXv3コア+倍精度浮動小数点演算ユニット対応ポートレイヤを作り始めてみて調べていて気付いたのですが、他に、RX13TがRXv1コア+単精度浮動小数点演算ユニットという構成になっていて、RX62NやRX63Nなどと同じ構成ですので、注意が必要そうだと思いました。RX13TにはRX600ポートレイヤが使えるだろうとは思いますが、、、(ただ、モータ制御向けの低価格マイコンかと思いますので、RTOSを使う人がいるかなと考えると、ちょっといないかもと思いますけど、、、)

    RX13T 製品ページ
    www.renesas.com/jp/ja/products/microcontrollers-microprocessors/rx/rx100/rx13t.html

    RX13T ユーザーズマニュアル ハードウェア編
    www.renesas.com/jp/ja/search/keyword-search.html#genre=document&q=r01uh0822
     

  • こんにちは。NoMaYです。

    作ったRTOSDemoプログラムは海外のe2 studioに詳しくない方々に渡すことになるのですが、その方々がスマートコンフィグレータを使おうとしなければ問題無いのですが、もし使おうとしてscfgファイルをクリックしたら以下の画面コピーのような状態になってしまって、どう対処したら良いかを説明するのは厄介そうな気がしてきました、、、彼らのこの後の手順としては、どうするのが彼らにとって一番楽なやり方になりますでしょうかね?、、、



    #今月リリースされる予定らしいe2 studioの次版は、もう64bit版しか提供されないようなので、自分も64bit版をインストールしてみたのですが、(32bit版の設定を弄っていたせいもあるのかも知れませんが)しばし試行錯誤する羽目になってしまって、どうするのが良かったのかと思う今日この頃なのでもありました、、、

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

    FreeRTOS v10.3.1のRXマイコンのRTOSDemoプロジェクトがどれだけビルド可能な状態なのか調べてみたら、結構、惨憺たる状態でした、、、また、ビルド可能にするプルリクエストが出ていても、随分と長いこと放置されていたりもしました、、、

    ふと思ったのですが、ルネサスさんの方でFreeRTOS-kernelのForkだけでなくて、FreeRTOSのForkも作って頂いて、もし私がルネサスさんとAWSの両方にプルリクエストを出したりなんかしたら、後々、リポジトリの管理で面倒なことになったりしそうなものでしょうか?(その一方で、天秤に掛けるような行為は控えた方が良いかなぁ、と思ったりもしていますが、、、)

    FreeRTOS v10.3.1のRXマイコンのRTOSDemoプロジェクトのビルド可否

    IDEs:

    e2 studio v7.8.0
    EWRX V4.14.1

    Compilers:

    CC-RX V3.02.00
    GNURX 2020 q2 (8.3.0.202002)
    ICCRX V4.14.1.5408 (included in EWRX V4.14.1)

    Result:
                                            e2 studio   e2 studio   EWRX        
                                            CC-RX       GNURX       ICCRX       
    RX100_RX113-RSK_GCC_e2studio_IAR        -           Fail        Pass        
    RX100_RX113-RSK_Renesas_e2studio        Fail        -           -           
    RX100-RSK_GCC_e2studio                  -           Fail        -           
    RX100-RSK_IAR                           -           -           Pass        
    RX100-RSK_Renesas_e2studio              Fail(*)     -           -           
    RX200_RX210-RSK_Renesas                 N/A(HEW)    -           -           
    RX200_RX231-RSK_GCC_e2studio_IAR        -           Fail        Fail        
    RX200_RX231-RSK_Renesas_e2studio        Pass        -           -           
    RX600_RX62N-RDK_GNURX                   -           N/A(HEW)    -           
    RX600_RX62N-RDK_IAR                     -           -           Pass        
    RX600_RX62N-RDK_Renesas                 N/A(HEW)    -           -           
    RX600_RX62N-RSK_GNURX                   -           N/A(HEW)    -           
    RX600_RX62N-RSK_IAR                     -           -           Pass        
    RX600_RX62N-RSK_Renesas                 N/A(HEW)    -           -           
    RX600_RX63N-RDK_Renesas                 N/A(HEW)    -           -           
    RX600_RX630-RSK_Renesas                 N/A(HEW)    -           -           
    RX600_RX64M_RSK_GCC_e2studio            -           Fail        -           
    RX600_RX64M_RSK_Renesas_e2studio        Fail        -           -           
    RX700_RX71M_RSK_GCC_e2studio_IAR        -           Fail        Pass        
    RX700_RX71M_RSK_Renesas_e2studio        Pass        -           -           

    Note:

    'Pass' : The project can be built.
             (Note that only build check is passed.)
    'Fail' : The project cannot be built.
             (i.e. compiler error(s) or linker error(s) are caused.)
    'Fail(*)' : The project file cannot be migrated to the latest project file format.
                (i.e. I cannot start build.)
    'N/A(HEW)' : The project is for HEW (another IDE) which is no longer as important as it was.
    '-' : The project is not for the compiler.

    All projects of Pass/Fail needed to be migrated to the latest project file format.
    Additionally, when using e2 studio, toolchain type and toolchain version needed to be
    re-selected.