Amazon FreeRTOSだそうです。ルネサスさんのRXは参加しないのかな?

こんにちは。NoMaYです。

ライセンスはMIT Licenseでした。TLSとしてmbed TLSが使用されていました。サポートされているボードの写真を見ていたら、どれにも有線LANコネクタが無いことに気付きました。時代の流れでしょうか、、、

Getting Started with Amazon FreeRTOS
aws.amazon.com/freertos/getting-started/

Amazon FreeRTOS
aws.amazon.com/freertos/

Amazon FreeRTOS ソースコード
github.com/aws/amazon-freertos

[関連リンク]

FreeRTOS - freertos.org
www.freertos.org/

FreeRTOS - sourceforge.net
sourceforge.net/projects/freertos/files/

FreeRTOS kernel自体はCC-RXにも対応
github.com/aws/amazon-freertos/tree/master/lib/FreeRTOS/portable/Renesas

Amazon FreeRTOSはTLSにmbed TLSを使用
github.com/aws/amazon-freertos/tree/master/lib/third_party/mbedtls

[ニュース]

組み込み業界に大インパクト「Amazon FreeRTOS」の衝撃 - 大原雄介,MONOist
monoist.atmarkit.co.jp/mn/articles/1712/28/news011.html

アマゾン「AWS IoT」は何が衝撃的なのか - 大原雄介,MONOist
monoist.atmarkit.co.jp/mn/articles/1510/21/news026.html

(2018/01/01 : 記事を選び直しました。)

[追記]

もしかしたら、オープンソースライセンスのドライバライブラリが用意されていないから、ルネサスさんはアマゾンさんに相手にして貰えないのかも、、、

ちなみに、FreeRTOS kernel自体のライセンスがV10からModified GPLからMIT Licenseに変わったようです。

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

    GR-SAKURA対応の作業中ですが、今までのボードのようなRAMの使い方では第一世代GR-SAKURAのRAM 128KBには収まらないことに気付きました。今までのボードではFreeRTOSConfig.hで、128KBのヒープ(たぶん各タスクのスタックなどもここから確保していると思われます←間違えたかも)を確保していましたが、これを56KBに減らしてもAWS接続デモは動作するでしょうか?(もっともこれでも128KBいっぱいいっぱいなので、第一世代GR-SAKURAでのユーザアプリケーションの為のRAMを空ける為には、いずれRAMの使い方を見直して削減しないといけませんが、、、RAM 128KBの第一世代GR-SAKURAとRAM 256KBの第二世代GR-SAKURAとの出荷台数比はどれくらいだろうか、、、)

    FreeRTOSConfig.h : 今まで

    #define configTOTAL_HEAP_SIZE                      ( ( size_t ) ( 128U * 1024U ) )

    FreeRTOSConfig.h : 第一世代GR-SAKURAのRAM 128KBに収めようとした場合

    #define configTOTAL_HEAP_SIZE                      ( ( size_t ) ( 56U * 1024U ) )

    [追記]

    RAMの使い方を見直す時にはR_BSPモジュールで確保しているヒープ/Iスタック/Uスタック=8KB/12KB/12KBも要調査な気がします。各タスクの必要スタックサイズはCC-RX + Call Walkerで分析/確保する、ですかね。(その結果を(必要なら微調整して)GNURXへも適用する、といったところでしょうか。)

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

    GR-SAKURA対応の作業中ですが、今までのボードのようなRAMの使い方では第一世代GR-SAKURAのRAM 128KBには収まらないことに気付きました。今までのボードではFreeRTOSConfig.hで、128KBのヒープ(たぶん各タスクのスタックなどもここから確保していると思われます←間違えたかも)を確保していましたが、これを56KBに減らしてもAWS接続デモは動作するでしょうか?(もっともこれでも128KBいっぱいいっぱいなので、第一世代GR-SAKURAでのユーザアプリケーションの為のRAMを空ける為には、いずれRAMの使い方を見直して削減しないといけませんが、、、RAM 128KBの第一世代GR-SAKURAとRAM 256KBの第二世代GR-SAKURAとの出荷台数比はどれくらいだろうか、、、)

    FreeRTOSConfig.h : 今まで

    #define configTOTAL_HEAP_SIZE                      ( ( size_t ) ( 128U * 1024U ) )

    FreeRTOSConfig.h : 第一世代GR-SAKURAのRAM 128KBに収めようとした場合

    #define configTOTAL_HEAP_SIZE                      ( ( size_t ) ( 56U * 1024U ) )

    [追記]

    RAMの使い方を見直す時にはR_BSPモジュールで確保しているヒープ/Iスタック/Uスタック=8KB/12KB/12KBも要調査な気がします。各タスクの必要スタックサイズはCC-RX + Call Walkerで分析/確保する、ですかね。(その結果を(必要なら微調整して)GNURXへも適用する、といったところでしょうか。)

Children
  • NoMaYさん

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

    調査ありがとうございます。確かにRAM容量懸念がありますね。
    第1世代と第2世代の比率は岡宮さんに聞かないと分からないですが、
    結構早い時期から第2世代になってたと思うので第2世代の方が多いような気がします。

    いずれにしても小さい方に合わせるとして普段の私の設計ポリシーからすると
    OS層までで使用するのは物理容量の半分まで、となるので64KB以内に収めたいところですね。

    ヒープを削っても多分動くと思いますが要検証です。
    ひとまず128KBに収まるように適当にコンフィグ値を触っていただき、コミットしてもらってよいでしょうか。
    GR-SAKURAでの実機実験はこちらで引き受けます。

    ちなみに、現状の設定値は完全に「適当」です。
    多めに盛っているだけで最終的に無駄なところを削って最小値にしようと考えています。
    Amazon FreeRTOSのハードウェア要件にRAM 64AKB以上とあるので、
    64KBあれば最低限動く設計になってるはずですね。
    aws.amazon.com/.../

    ちなみに、無線LANモジュール側にTLS機能、TCP/IP機能をオフロードできれば(無線LANモジュール側にこれら機能があれば)必要RAMは16KBになります。
    今はRX65NでTLSとTCP/IPをマイコン側に持たせる設計にしてあるので64KB必要ですが、
    構成を組み替えることでRX113やRX231でもAmazon FreeRTOSを使って
    マイコンをAmazon Web Serviceに繋ぐことができます。
    RX65Nがひと段落したら、この構成も試す予定です。

    以上です
  • NoMaYさん

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

    全環境無事に動作確認終わりました。ありがとうございました。
    リリースビルドを作っておきました。
    github.com/.../v0.1.5

    以上です
  • NoMaYさん

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

    RX63N GR-SAKURAの環境追加ありがとうございます。
    15分だけ時間があったでのハード環境組み立ててコンパイルOKまで確認しました。
    FITコンフィグレータの設定や端子設定が問題なさそうなことも確認しました。
    これ本当にありがたいです。たすかります。

    後ほどお昼休みに実機確認も進めてみます。

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

    RX63N GR-SAKURA対応の作業では、結局、どのように対処しようか悩んでいたFIT Configuratorとスマートコンフィグレータとではソースが生成される場所が違っていた件を、e2 studio(というかEclipse/CDT)の機能の、仮想フォルダ、リンクされたフォルダ、リソースフィルタ、を組み合わせることで、形だけ(IDE上の見え方だけ(以下の画面コピーを参照))ですが今までとプロジェクト構造を合わせるようにしました。

    なお、試行錯誤しているうちに、ファイル名文字列を利用して"Please exclude unnecessary r_xxx from build"というアドバイスをユーザに伝える小細工とか、r_configフォルダ/r_pincfgフォルダのソースはユーザが内容を書き換えたりチェックしたりすることがあるのでフォルダを分けた方が良さそうだとか、気付きましたので(以下の画面コピーの青枠部分を参照)、これら2つに関しては今までのプロジェクトへ逆輸入しようかと考えています。(現在、これまでに挙げた作業のうちで、まず3コンパイラ対応のBSPのフォルダ構成の変更から着手しようと考えていますが、その時にこの逆輸入作業を一緒にやってみようと考えています。(どちらも.projectファイル/.cprojectファイルをあれこれ変更しないといけないので。))

    以下、いつものように画面コピーです。

    CC-RX/e2 studio (FIT Configuratorが使える)


    GNURX/e2 studio (FIT Configuratorは使えない)


    CC-RX/CS+ (FIT Configuratorは使えない)


    r_configフォルダ/r_pincfgフォルダのファイルシステム上の場所


    以下、次作業の予定項目です。(たぶん、やっているうちに増えていくだろう、と思ってますが、、、)

    ・前述の逆輸入の件
    ・3コンパイラ対応のBSPのフォルダ構成の変更案の試行
    ・3コンパイラ対応のBSPの取り込み作業中に気掛かりだった箇所の修正や思い浮かんだ改良案の試行
    ・demos\renesas\XXX\common\config_file\*.hの#define等の順序をAmazon FreeRTOS本家の*.hに合わせる
    ・コンパイル時のワーニングを減らす
    ・GNURXのリンク時のワーニングを取る
    ・ビルド前ステップのバッチファイルの見直し([追記] make.exeが見付かりません問題の緩和策も)
    ・AFQPのドキュメントを読んで問題無さそうならプロジェクト名の"aws_demos"の後に色々足して複数同時にインポート可能にする

  • NoMaYさん

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

    ありがとうございます。現在の作り、今後の方針など分かりました。

    こちらではRX63N GR-SAKURAでの実機確認を進め、Amazon Web Serviceに繋がることを確認しました。
    現状コードから、r_bsp_config.hのユーザスタックをゼロ、割り込みスタックを4KB(0x1000)、ヒープを256バイト(0x100)に減らしました。
    あとFreeRTOSのヒープを56KBまで減らしていただきましたが、これだとmbed TLSでヒープ確保される
    段階でヒープが足りなくなりエラーを吐いたので、68KBまで増やしました。
    (Amazon FreeRTOSのミニマム要件に64KBと書いてあったので、64KB設定を試しましたがNGでした)

    結果、現在のRAM使用量112KBです。マップファイルを眺めてますが、
    削れそうなところはもうない感じですね。実質これがAmazon FreeRTOSを機能フルで動かすのに必要な
    RAM総量かなと思います。性能フルにすると通信バッファを多段にする必要がありもう少しRAM要ります。
    とすると、やはりGR-SAKURA II(RAM256KB)が最小ハードウェアの推奨マシンとなりますね。

    もうすこしRAMについてはダイエットしてみます。

    以上です
  • NoMaYさん

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

    日々改善を進めていただき、感謝申し上げます。
    Amazon関連は若手に託して、シェルティは最近新しいマイコン、新しい無線の仕込みを開始しております。
    新しいマイコン、新しい無線ではAmazon FreeRTOS対応を引き続き前面に出して
    使うよう検討を進めております。

    Amazonに関しては以下を重点的に開発を進めていきたいと思っています。
    ・セキュリティハードウェア(TSIP)とmbed TLS連携(2018年中に技術目処を立てる予定)
    ・OTA関連(TIの環境を勉強中)
    ・Tracelyzer関連(資産購入手配の段取り中)

    NoMaYさんの活動成果は今後RXマイコンの公式のBSPおよび他FITモジュールに取り込みさせていただきます。
    GitHubにあるBSPを中心にFIT関連開発メンバーに見てもらっていますが、特に問題になるところは無さそう、
    との見解を得ています。
    引き続き議論を続けながら開発を続けさせていただけますと幸いです。

    以上です