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

    私の今の進捗です。その前に、AliOS Thingsですが、ライセンスはApache 2.0で、GitHubリポジトリは以下ですね。TCP/IPスタックはLwIP、TLSはmbed TLSのようです。また、VSCode pluginによるAliOS Studio IDEというものがあるようです。

    AliOS Things released by Alibaba is an open-source implementation of operating system (OS) for Internet of Things (IoT).
    github.com/alibaba/AliOS-Things

    Architecture Overview
    AliOS Things supports multiple architectures, including ARM, C-Sky, MIPS, rl78, rx600 and xtensa, AliOS Things also supports a large number of boards.
    From an architectural point of view, AliOS Things adapts Layered Architecture and Component Architecture. From bottom to top, AliOS Things includes:
        BSP: Board Support Package mainly developed and maintained by SoC Vendor
        HAL: Hardware Abstraction Layer, like WiFi, UART
        Kernel: Rhino RTOS Kernel, Yloop, VFS, KV Storage included
        Protocol Stack: LwIP TCPIP Stack, uMesh mesh networking stack included
        Security: TLS, TFS(Trusted Framework Service), TEE(Trusted Exexcution Environment)
        AOS API: AliOS Things exposed APIs for Application and Middleware
        Middleware: Alibaba's value-added and commonly seen IoT components included
        Examples: hands-on sample codes, and well tested applications such as linkkitapp
    All modules have been organized as Components, and each component has its own .mk file to describe its dependency with other Components, which enables applications to choose components needed easily.


    kernelのソース(この辺りかな)
    github.com/alibaba/AliOS-Things/tree/master/kernel/rhino/core

    kernelの概要
    github.com/alibaba/AliOS-Things/wiki/AliOS-Things-Technical-Overview#kernel-description

    サポートハードウェア
    github.com/alibaba/AliOS-Things/wiki/AliOS-Things-Hardware

    RL78対応
    github.com/alibaba/AliOS-Things/tree/master/platform/arch/rl78

    RX65N対応
    github.com/alibaba/AliOS-Things/tree/master/platform/arch/rx600/rx65n/e2s

    FreeRTOSからのポーティングガイド(現状は中文のみの模様)
    github.com/alibaba/AliOS-Things/wiki/AliOS-Things-FreeRTOS-Porting-Guide.zh

    Google検索: AliOS Things
    www.google.com/search?q=AliOS+Things

    以下、進捗です。(◆は新規項目です。)

    済み
    ●Amazon本家のv1.4.1→v1.4.2の差分の取り込み

    コミット済みだがデバッグ未着手
    ●スタートアップ処理でC++のコンストラクタを呼び出し可能にした(GNURXで使われていた#ifdef CPPAPP~#endifで括った)
    ◆R_BSPのsbrk()はCC-RXとGNURXで有効になっているけれどもGNURXで呼び出されることがあるかどうか確認する

    作業中
    ●コンパイル時のワーニングを減らす(FITモジュールのソースの修正もあります)
    ⇒たまたまMISRA-Cについて検索していて気付いたウェブページにあった文言「付加価値のない活動に労力を費やす」(この投稿の終わりの方の画面コピーを参照)にギクっとしているところですが、もう少し続けます。

    未着手
    ●GNURXのリンク時のワーニングを取る
    ◆GR-SAKURAのe2 studioプロジェクトでインクルードファイルに関してINDEXERエラーが出ているのを何とかしたい
    ●demos\renesas\XXX\common\config_file\*.hの#define等の順序をAmazon FreeRTOS本家の*.hに合わせる
    ●ビルド前ステップのバッチファイルの見直し(make.exeが見付かりません問題の緩和策も)

    最近気になり始めたこと(&思い出したこと) : RX71M-RSK, RX64M-RSK, RX63N-RSKの作業の前に対処したい分

    ◆ICCRX向けのiodefine.hの#pragma bitfields=reversedはreversed_disjoint_typesの方が良いのでは?
    ◆ICCRX向けのiodefine.hで#pragma pack()に切り替えたものを最後に元に戻すことを忘れているのでは?
    ●ICCRX向けのiodefine.hの__sfrはvolatileの方がうれしい人もいるような気がする
    ◆ICCRX対応の試作時の暫定コードが(FITモジュール以外のソースで)そのままになっていることを忘れないように
    ◆プロジェクト(ボード)でlib\wifi\portable\renesas\XXXX\aws_wifi.cが使われていない場合はプロジェクトから削除
    ●ボード依存のSCIのチャンネル番号の指定方法の見直し(現状はボード種別番号で切り替え)
    ●ボード依存のETHERの初期化関数名の指定方法の見直し(同上)
    ●SCIのチャンネルは1つで済む筈?(複数チャンネル有効化されているのは今では単に歴史的経緯のみ?)
    ●GR-SAKURAのIスタック/Uスタック(今回未使用)/R_BSPヒープのサイズは他ボードへ展開した方が良い?

    最近気になり始めたこと(&思い出したこと) : もう少し先で対処したい分

    ◆MOTファイルとMAPファイル(CC-RXでは出力を詳細に変更)をGitHubに登録してはどうだろうか?
    ●3コンパイラ対応のFITモジュールが正式リリースされた後のプロジェクト構造をどうする?
    ⇒将来e2 studio上でAmazon FreeRTOSとRX Driver Package込のプロジェクトを生成出来るようになるので任せる?
    ●各プロジェクトのマイコン型番をユーザのターゲットボードのマイコン型番に変更する簡単な方法は?
    ⇒e2 studio v7.1.0(後日インストール予定)でプロジェクトのマイコン型番変更が簡単になったようだが活用出来るか?
    ◆各プロジェクトのボード名をユーザのターゲットボードのボード名に変更する簡単な方法は?
    ●試作基板のGR-ROSEはR5F565NEDxLJでしたね(でも量産基板で変わるかも? それから"_DUAL"は有りか無しか?)
    ●GR-CITRUS(RX631)+WA-MIKAN(ESP8266) 対応
    ●FreeRTOS+POSIX 対応

    最近気になり始めたこと : ツールで対処して貰わないと駄目そうな分
    ◆ワーニングレベルを上げるとvoid R_CGC_Create_UserInit();のような引数void無し関数宣言/関数本体で警告が出る(CG)
    ◆ワーニングレベルを上げるとvoid R_SCI_PinSet_SCI0();のような引数void無し関数宣言/関数本体で警告が出る(FIT)

    将来の探求テーマ
    ◆Amazon FreeRTOSのスタック使用量の調査/考察/適正化
    ◆Amazon FreeRTOSのヒープ使用量の調査/考察/適正化
    ◆Amazon FreeRTOSのRAM使用量の調査/考察
    ◆Amazon FreeRTOSのROMコードサイズのRXコアと他CPUコア(Cortex-M4/MIPS microAptiv/Xtensa LX6)とでの比較
    ◆Amazon FreeRTOSでRXマイコンのMPU(メモリプロテクションユニット)を有効にするには?
    ◆Amazon FreeRTOSのソースのCC-RXによるMISRA-C 2012ルールチェック

    以下、Amazon本家のv1.4.1→v1.4.2の差分の取り込みに関して、いつものように画面コピーです。

    Amazon本家のv1.4.1→v1.4.2では素朴に比較すると1000ファイル近い差異が出るが、、、


    現状のRenesas RXのプロジェクトに直接(および間接的に)関係のある差異は50ファイルほど


    ただし今回は空白類文字の差異を無視するソースファイル比較で検出されない差異でMOTファイルが変化する差異あり


    なおソースファイル中で__DATE__が使われていて(今回に限らず)ビルド日付が異なるとMOTファイルは数バイト変わる


    [参考]

    レガシーコードをMISRA C 2012準拠にするための実践的ガイド
    Published 2018年4月27日
    parasoft.techmatrix.jp/practical-guide-to-make-your-legacy-codebase-misra-c-2012-compliant
    赤枠は私によるもの


    [余談]

    以前、このスレッドを開いた時のビューカウント値が 21212 になっていて面白かったので採取したことがありましたが、今度は、ビューカウント値が 23432 になっていたことがあったので採取した画面コピーです。

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

    私の今の進捗です。その前に、AliOS Thingsですが、ライセンスはApache 2.0で、GitHubリポジトリは以下ですね。TCP/IPスタックはLwIP、TLSはmbed TLSのようです。また、VSCode pluginによるAliOS Studio IDEというものがあるようです。

    AliOS Things released by Alibaba is an open-source implementation of operating system (OS) for Internet of Things (IoT).
    github.com/alibaba/AliOS-Things

    Architecture Overview
    AliOS Things supports multiple architectures, including ARM, C-Sky, MIPS, rl78, rx600 and xtensa, AliOS Things also supports a large number of boards.
    From an architectural point of view, AliOS Things adapts Layered Architecture and Component Architecture. From bottom to top, AliOS Things includes:
        BSP: Board Support Package mainly developed and maintained by SoC Vendor
        HAL: Hardware Abstraction Layer, like WiFi, UART
        Kernel: Rhino RTOS Kernel, Yloop, VFS, KV Storage included
        Protocol Stack: LwIP TCPIP Stack, uMesh mesh networking stack included
        Security: TLS, TFS(Trusted Framework Service), TEE(Trusted Exexcution Environment)
        AOS API: AliOS Things exposed APIs for Application and Middleware
        Middleware: Alibaba's value-added and commonly seen IoT components included
        Examples: hands-on sample codes, and well tested applications such as linkkitapp
    All modules have been organized as Components, and each component has its own .mk file to describe its dependency with other Components, which enables applications to choose components needed easily.


    kernelのソース(この辺りかな)
    github.com/alibaba/AliOS-Things/tree/master/kernel/rhino/core

    kernelの概要
    github.com/alibaba/AliOS-Things/wiki/AliOS-Things-Technical-Overview#kernel-description

    サポートハードウェア
    github.com/alibaba/AliOS-Things/wiki/AliOS-Things-Hardware

    RL78対応
    github.com/alibaba/AliOS-Things/tree/master/platform/arch/rl78

    RX65N対応
    github.com/alibaba/AliOS-Things/tree/master/platform/arch/rx600/rx65n/e2s

    FreeRTOSからのポーティングガイド(現状は中文のみの模様)
    github.com/alibaba/AliOS-Things/wiki/AliOS-Things-FreeRTOS-Porting-Guide.zh

    Google検索: AliOS Things
    www.google.com/search?q=AliOS+Things

    以下、進捗です。(◆は新規項目です。)

    済み
    ●Amazon本家のv1.4.1→v1.4.2の差分の取り込み

    コミット済みだがデバッグ未着手
    ●スタートアップ処理でC++のコンストラクタを呼び出し可能にした(GNURXで使われていた#ifdef CPPAPP~#endifで括った)
    ◆R_BSPのsbrk()はCC-RXとGNURXで有効になっているけれどもGNURXで呼び出されることがあるかどうか確認する

    作業中
    ●コンパイル時のワーニングを減らす(FITモジュールのソースの修正もあります)
    ⇒たまたまMISRA-Cについて検索していて気付いたウェブページにあった文言「付加価値のない活動に労力を費やす」(この投稿の終わりの方の画面コピーを参照)にギクっとしているところですが、もう少し続けます。

    未着手
    ●GNURXのリンク時のワーニングを取る
    ◆GR-SAKURAのe2 studioプロジェクトでインクルードファイルに関してINDEXERエラーが出ているのを何とかしたい
    ●demos\renesas\XXX\common\config_file\*.hの#define等の順序をAmazon FreeRTOS本家の*.hに合わせる
    ●ビルド前ステップのバッチファイルの見直し(make.exeが見付かりません問題の緩和策も)

    最近気になり始めたこと(&思い出したこと) : RX71M-RSK, RX64M-RSK, RX63N-RSKの作業の前に対処したい分

    ◆ICCRX向けのiodefine.hの#pragma bitfields=reversedはreversed_disjoint_typesの方が良いのでは?
    ◆ICCRX向けのiodefine.hで#pragma pack()に切り替えたものを最後に元に戻すことを忘れているのでは?
    ●ICCRX向けのiodefine.hの__sfrはvolatileの方がうれしい人もいるような気がする
    ◆ICCRX対応の試作時の暫定コードが(FITモジュール以外のソースで)そのままになっていることを忘れないように
    ◆プロジェクト(ボード)でlib\wifi\portable\renesas\XXXX\aws_wifi.cが使われていない場合はプロジェクトから削除
    ●ボード依存のSCIのチャンネル番号の指定方法の見直し(現状はボード種別番号で切り替え)
    ●ボード依存のETHERの初期化関数名の指定方法の見直し(同上)
    ●SCIのチャンネルは1つで済む筈?(複数チャンネル有効化されているのは今では単に歴史的経緯のみ?)
    ●GR-SAKURAのIスタック/Uスタック(今回未使用)/R_BSPヒープのサイズは他ボードへ展開した方が良い?

    最近気になり始めたこと(&思い出したこと) : もう少し先で対処したい分

    ◆MOTファイルとMAPファイル(CC-RXでは出力を詳細に変更)をGitHubに登録してはどうだろうか?
    ●3コンパイラ対応のFITモジュールが正式リリースされた後のプロジェクト構造をどうする?
    ⇒将来e2 studio上でAmazon FreeRTOSとRX Driver Package込のプロジェクトを生成出来るようになるので任せる?
    ●各プロジェクトのマイコン型番をユーザのターゲットボードのマイコン型番に変更する簡単な方法は?
    ⇒e2 studio v7.1.0(後日インストール予定)でプロジェクトのマイコン型番変更が簡単になったようだが活用出来るか?
    ◆各プロジェクトのボード名をユーザのターゲットボードのボード名に変更する簡単な方法は?
    ●試作基板のGR-ROSEはR5F565NEDxLJでしたね(でも量産基板で変わるかも? それから"_DUAL"は有りか無しか?)
    ●GR-CITRUS(RX631)+WA-MIKAN(ESP8266) 対応
    ●FreeRTOS+POSIX 対応

    最近気になり始めたこと : ツールで対処して貰わないと駄目そうな分
    ◆ワーニングレベルを上げるとvoid R_CGC_Create_UserInit();のような引数void無し関数宣言/関数本体で警告が出る(CG)
    ◆ワーニングレベルを上げるとvoid R_SCI_PinSet_SCI0();のような引数void無し関数宣言/関数本体で警告が出る(FIT)

    将来の探求テーマ
    ◆Amazon FreeRTOSのスタック使用量の調査/考察/適正化
    ◆Amazon FreeRTOSのヒープ使用量の調査/考察/適正化
    ◆Amazon FreeRTOSのRAM使用量の調査/考察
    ◆Amazon FreeRTOSのROMコードサイズのRXコアと他CPUコア(Cortex-M4/MIPS microAptiv/Xtensa LX6)とでの比較
    ◆Amazon FreeRTOSでRXマイコンのMPU(メモリプロテクションユニット)を有効にするには?
    ◆Amazon FreeRTOSのソースのCC-RXによるMISRA-C 2012ルールチェック

    以下、Amazon本家のv1.4.1→v1.4.2の差分の取り込みに関して、いつものように画面コピーです。

    Amazon本家のv1.4.1→v1.4.2では素朴に比較すると1000ファイル近い差異が出るが、、、


    現状のRenesas RXのプロジェクトに直接(および間接的に)関係のある差異は50ファイルほど


    ただし今回は空白類文字の差異を無視するソースファイル比較で検出されない差異でMOTファイルが変化する差異あり


    なおソースファイル中で__DATE__が使われていて(今回に限らず)ビルド日付が異なるとMOTファイルは数バイト変わる


    [参考]

    レガシーコードをMISRA C 2012準拠にするための実践的ガイド
    Published 2018年4月27日
    parasoft.techmatrix.jp/practical-guide-to-make-your-legacy-codebase-misra-c-2012-compliant
    赤枠は私によるもの


    [余談]

    以前、このスレッドを開いた時のビューカウント値が 21212 になっていて面白かったので採取したことがありましたが、今度は、ビューカウント値が 23432 になっていたことがあったので採取した画面コピーです。

Children
  • NoMaYさん

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

    AliOSの情報まとめ、ありがとうございます。
    とにかくもってクラウドサービスに接続させることに
    AlibabaもAmazonも熱心であるようですね。

    以下、こちらの進捗です。

    (1)nop()の件についてはコンパイラチームに確認中です。
    (2)Amazon FreeRTOSが動作するRX65N WIFI対応ボードは当初計画通りの内容、お値段で調整中です。
     前段としてRX65N RSK(Ether)版でAmazon FreeRTOS Qualification Programに臨んでいます。
     (RXマイコンとしては無線LANより有線LANのユーザが多いので有線LANが本命)
    (3)SilexのWIFIモジュールはSSLクライアント認証機能が使えないのでAmazon FreeRTOS内部のmbed TLSの力を
     借りたソフトウェア実装となりRAMが64KB必要です。
     この壁を超えるため、ESP32の検討を進めています。これが実現できれば、RAMは16KBで済み、
     RX130、RX231などの小型マイコンでもAmazon Web Serviceに繋ぐことができます。
     繋ぐことができればこれもまたGitHubにプロジェクトを追加するつもりです。
     (2)に同梱のWIFIモジュールはSilexのものですが、PMOD接続なので、ESP32の以下モジュールを代わりに
     差し込めば動くようにGitHub上のプロジェクトを調整するつもりです。
     store.digilentinc.com/.../
    (4)RX65N GR-ROSE用に、ESP8266のドライバを作ってAmazon FreeRTOSに繋ぐ実験に成功しました。
     近々、GitHubのGR-ROSE用のプロジェクト(WIFI対応版)を追加します
    (5)RX65N 内蔵の暗号ハードウェアTrusted Secure IPを使ってmbed TLSを加速させるための
     mbed TLS改造方法の検討を進めています
    (6)Amazon FreeRTOSのOTA機能について引き続き調査を進めています

    [余談]
    20000もカウンタ回ったのですね。このスレッドがはじまったのが2017年12月2日、そろそろ1年であります。
    非常に多くの議論ができ、実際の商売にもつながるような成果が出せました。
    何よりコミュニティベースで開発を進めることができたのは非常に良かったです。
    これからもこのスレッドでNoMaYさんと会話しながらAmazon FreeRTOSの開発を続けていきたいです。
    今後ともよろしくお願いします。

    以上です