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

    今回、Amazon FreeRTOSのソースのライブラリ(カーネル以外という意味)のMCU依存やボード依存となるソースを中身が空の関数のテンプレート(Amazon FreeRTOSのソースツリーに含まれる○○○/portable/vendor/board/○○○.c)のソースにして、リンクまでは辿り着くようにしました。リンクを通すところまでやりたかったのですが、CC-RXの無償評価版のサイズ制限をオーバーしてしまい、それは出来ませんでした。(今後、GNURXでのプロジェクトにも手を出すことになりそうです。) ここまでを以下のzipファイルに固めました。今回、Amazon FreeRTOS v1.2.0のソースと、シェルティさんの2018/02/24 17:43の投稿のソースと、以下のzipファイルのソース、の3つをマージしてビルドすることになります。

    aws_demos_renesas_rx_mcu_experiment_20180228.zip

    行った作業の概要は以下の通りです。

    (1) Amazon FreeRTOS v1.2.0へ追従する
    (2) シェルティさんの2018/02/24 17:43の投稿のソースをプロジェクトに取り込む(当方のzipファイルはソースを含まず)
    (3) リンクまで辿り着くようにする
    (4) rx65n-rskのプロジェクトを追加する(今まではrx65n-envision-kitのプロジェクトのみだった)
    (5) CS+のプロジェクトに変換する

    作業の詳細は後で投稿しますが、ソースツリーの構築方法について書きます。以下の手順でソースツリーを構築して下さい。(少々面倒なので、週末にでもGitHubへ登録してみようと思っています。とはいえ、ルネサスさんのFITモジュールのライセンスの都合上、スマートコンフィグレータで生成されるソースと生成されるライブラリは登録しないと思います(scfgファイルを登録するので当面は同等のソースが生成出来るから)。それでも、問題はBSPとCMTとT4のFreeRTOS対応の部分をどうするかで、これは来週になってから思案してみようと思っています。)

    (A) ソースツリーの構築方法

    (A-1) Amazon FreeRTOS v1.2.0のzipファイルをダウンロードして解凍する
    (A-2) 添付したzipファイルをダウンロードして解凍する
    (A-3) フォルダの上位階層の位置を合わせて(A-1)に(A-2)をマージする(以下のファイルは上書きされます)
     demos\common\include\aws_application_version.h
     lib\FreeRTOS-Plus-TCP\include\NetworkInterface.h
     lib\FreeRTOS-Plus-TCP\source\portable\Compiler\Renesas\pack_struct_end.h
     lib\FreeRTOS-Plus-TCP\source\portable\Compiler\Renesas\pack_struct_start.h
     lib\third_party\tinycbor\compilersupport_p.h
    (A-4) シェルティさんの2018/02/24 17:43の投稿のzipファイルをダウンロードして解凍する
    (A-5) シェルティさんのソースを以下のようにマージする
     rx65n_envision_kit_aws\src\*.* (time.hとamazon-freertos-master\は除く) → demos\renesas\rx65n-envision-kit\ccrx-e2studio6\src\
     rx65n_envision_kit_aws\src\*.* (time.hとamazon-freertos-master\は除く) → demos\renesas\rx65n-envision-kit\ccrx-csplus\src\
     rx65n_rsk_asw\src\*.* (amazon-freertos-master\は除く) → demos\renesas\rx65n-rsk\ccrx-e2studio6\src\
     rx65n_rsk_asw\src\*.* (amazon-freertos-master\は除く) → demos\renesas\rx65n-rsk\ccrx-csplus\src\

    今回、main()を含むソースが2つあります。デフォルトではAmazon FreeRTOSのソースが有効になっていますが、理屈の上ではシェルティさんのソースを有効にすればシェルティさんがされた確認と同じことが出来る筈です。

    Amazon FreeRTOSのmain()のソース(ライブラリのMCU依存やボード依存となるソースが未実装なので動作しません)

    demos\renesas\rx65n-envision-kit\common\application_code\main.c
    demos\renesas\rx65n-rsk-kit\common\application_code\main.c

    シェルティさんのmain()のソース(シェルティさんがされた確認と同じことが出来る筈です)

    demos\renesas\rx65n-envision-kit\ccrx-e2studio6\src\rx65n_envision_kit_aws.c
    demos\renesas\rx65n-rsk\ccrx-e2studio6\src\rx65n_rsk_aws.c.c

    demos\renesas\rx65n-envision-kit\ccrx-csplus\src\rx65n_envision_kit_aws.c
    demos\renesas\rx65n-rsk\ccrx-csplus\src\rx65n_rsk_aws.c.c

    今回出るワーニングは以下の通りです。(当方特有の事情でCC-RX V2.03でビルドした時のものです。)

    ..\..\..\common\mqtt\aws_subscribe_publish_loop.c(339):W0520550:Variable "xTickCount" was set but never used
    ..\common\application_code\main.c(528):W0520177:Variable "xTasksAlreadyCreated" was declared but never referenced
    ..\common\application_code\main.c(72):W0520177:Variable "ucIPAddress" was declared but never referenced
    ..\common\application_code\main.c(79):W0520177:Variable "ucNetMask" was declared but never referenced
    ..\common\application_code\main.c(86):W0520177:Variable "ucGatewayAddress" was declared but never referenced
    ..\common\application_code\main.c(93):W0520177:Variable "ucDNSServerAddress" was declared but never referenced
    ..\common\application_code\main.c(215):W0520177:Function "prvWifiConnect" was declared but never referenced
    ..\common\application_code\main.c(400):W0520550:Variable "gpt_dhcp" was set but never used
    ..\..\..\..\lib\FreeRTOS-Plus-TCP\source\FreeRTOS_IP.c(1746):W0520550:Variable "pcType" was set but never used
    ..\..\..\..\lib\FreeRTOS-Plus-TCP\source\FreeRTOS_TCP_IP.c(805):W0520550:Variable "uxFrontSpace" was set but never used
    ..\..\..\..\lib\FreeRTOS-Plus-TCP\source\FreeRTOS_TCP_IP.c(1434):W0520177:Variable "xPreviousState" was declared but never referenced
    ..\..\..\..\lib\FreeRTOS-Plus-TCP\source\FreeRTOS_TCP_IP.c(1122):W0520177:Function "prvTCPFlagMeaning" was declared but never referenced
    ..\..\..\..\lib\FreeRTOS-Plus-TCP\source\FreeRTOS_TCP_WIN.c(1489):W0520177:Variable "ulFirstSeq" was declared but never referenced
    ..\..\..\..\lib\FreeRTOS-Plus-TCP\source\portable\NetworkInterface\RX\NetworkInterface.c(99):W0520223:Function "lan_open" declared implicitly
    ..\..\..\..\lib\FreeRTOS-Plus-TCP\source\portable\NetworkInterface\RX\NetworkInterface.c(107):W0520167:Argument of type "void (*)(void)" is incompatible with parameter of type "TaskFunction_t"
    ..\..\..\..\lib\FreeRTOS-Plus-TCP\source\portable\NetworkInterface\RX\NetworkInterface.c(108):W0520042:Operand types are incompatible ("BaseType_t" and "BaseType_t (*)(TaskFunction_t, const char *const, const uint16_t, void *const, UBaseType_t, TaskHandle_t *const)")
    ..\..\..\..\lib\FreeRTOS-Plus-TCP\source\portable\NetworkInterface\RX\NetworkInterface.c(115):W0520167:Argument of type "void (*)(void)" is incompatible with parameter of type "TimerCallbackFunction_t"
    ..\..\..\..\lib\FreeRTOS-Plus-TCP\source\portable\NetworkInterface\RX\NetworkInterface.c(97):W0520177:Variable "channel" was declared but never referenced
    ..\..\..\..\lib\FreeRTOS-Plus-TCP\source\portable\NetworkInterface\RX\NetworkInterface.c(122):W0520147:Declaration is incompatible with "BaseType_t xNetworkInterfaceOutput(NetworkBufferDescriptor_t *const, BaseType_t)" (declared at line 35 of "..\..\..\..\lib\FreeRTOS-Plus-TCP\include\NetworkInterface.h")
    ..\..\..\..\lib\FreeRTOS-Plus-TCP\source\portable\NetworkInterface\RX\NetworkInterface.c(129):W0520223:Function "lan_write" declared implicitly
    ..\..\..\..\lib\FreeRTOS-Plus-TCP\source\portable\NetworkInterface\RX\NetworkInterface.c(150):W0520223:Function "get_random_number" declared implicitly
    ..\..\..\..\lib\FreeRTOS-Plus-TCP\source\portable\NetworkInterface\RX\NetworkInterface.c(194):W0520223:Function "lan_read" declared implicitly
    ..\..\..\..\lib\FreeRTOS-Plus-TCP\source\portable\NetworkInterface\RX\NetworkInterface.c(217):W0520223:Function "rcv_buff_release" declared implicitly
    ..\..\..\..\lib\FreeRTOS-Plus-TCP\source\portable\NetworkInterface\RX\NetworkInterface.c(185):W0520550:Variable "pktSuccess" was set but never used
    ..\..\..\..\lib\FreeRTOS-Plus-TCP\source\portable\NetworkInterface\RX\NetworkInterface.c(185):W0520550:Variable "pktLost" was set but never used
    ..\..\..\..\lib\third_party\tinycbor\cborpretty.c(160):W0520546:Transfer of control bypasses initialization of:
                Variable "b" (declared at line 196)
    ..\..\..\..\lib\third_party\tinycbor\cborpretty.c(348):W0520188:Enumerated type mixed with another type
    src\lcd_conf.c(362):W0520118:A void function may not return a value
    src\lcd_conf.c(373):W0520120:Return value type does not match the function type
    src\lcd_conf.c(173):W0520177:Variable "_aBufferPTR" was declared but never referenced

    なお、無償評価版のサイズ制限をオーバーして以下のエラーになります。

    F0563430:The total section size exceeded the limit

     

Reply
  • こんにちは。NoMaYです。

    今回、Amazon FreeRTOSのソースのライブラリ(カーネル以外という意味)のMCU依存やボード依存となるソースを中身が空の関数のテンプレート(Amazon FreeRTOSのソースツリーに含まれる○○○/portable/vendor/board/○○○.c)のソースにして、リンクまでは辿り着くようにしました。リンクを通すところまでやりたかったのですが、CC-RXの無償評価版のサイズ制限をオーバーしてしまい、それは出来ませんでした。(今後、GNURXでのプロジェクトにも手を出すことになりそうです。) ここまでを以下のzipファイルに固めました。今回、Amazon FreeRTOS v1.2.0のソースと、シェルティさんの2018/02/24 17:43の投稿のソースと、以下のzipファイルのソース、の3つをマージしてビルドすることになります。

    aws_demos_renesas_rx_mcu_experiment_20180228.zip

    行った作業の概要は以下の通りです。

    (1) Amazon FreeRTOS v1.2.0へ追従する
    (2) シェルティさんの2018/02/24 17:43の投稿のソースをプロジェクトに取り込む(当方のzipファイルはソースを含まず)
    (3) リンクまで辿り着くようにする
    (4) rx65n-rskのプロジェクトを追加する(今まではrx65n-envision-kitのプロジェクトのみだった)
    (5) CS+のプロジェクトに変換する

    作業の詳細は後で投稿しますが、ソースツリーの構築方法について書きます。以下の手順でソースツリーを構築して下さい。(少々面倒なので、週末にでもGitHubへ登録してみようと思っています。とはいえ、ルネサスさんのFITモジュールのライセンスの都合上、スマートコンフィグレータで生成されるソースと生成されるライブラリは登録しないと思います(scfgファイルを登録するので当面は同等のソースが生成出来るから)。それでも、問題はBSPとCMTとT4のFreeRTOS対応の部分をどうするかで、これは来週になってから思案してみようと思っています。)

    (A) ソースツリーの構築方法

    (A-1) Amazon FreeRTOS v1.2.0のzipファイルをダウンロードして解凍する
    (A-2) 添付したzipファイルをダウンロードして解凍する
    (A-3) フォルダの上位階層の位置を合わせて(A-1)に(A-2)をマージする(以下のファイルは上書きされます)
     demos\common\include\aws_application_version.h
     lib\FreeRTOS-Plus-TCP\include\NetworkInterface.h
     lib\FreeRTOS-Plus-TCP\source\portable\Compiler\Renesas\pack_struct_end.h
     lib\FreeRTOS-Plus-TCP\source\portable\Compiler\Renesas\pack_struct_start.h
     lib\third_party\tinycbor\compilersupport_p.h
    (A-4) シェルティさんの2018/02/24 17:43の投稿のzipファイルをダウンロードして解凍する
    (A-5) シェルティさんのソースを以下のようにマージする
     rx65n_envision_kit_aws\src\*.* (time.hとamazon-freertos-master\は除く) → demos\renesas\rx65n-envision-kit\ccrx-e2studio6\src\
     rx65n_envision_kit_aws\src\*.* (time.hとamazon-freertos-master\は除く) → demos\renesas\rx65n-envision-kit\ccrx-csplus\src\
     rx65n_rsk_asw\src\*.* (amazon-freertos-master\は除く) → demos\renesas\rx65n-rsk\ccrx-e2studio6\src\
     rx65n_rsk_asw\src\*.* (amazon-freertos-master\は除く) → demos\renesas\rx65n-rsk\ccrx-csplus\src\

    今回、main()を含むソースが2つあります。デフォルトではAmazon FreeRTOSのソースが有効になっていますが、理屈の上ではシェルティさんのソースを有効にすればシェルティさんがされた確認と同じことが出来る筈です。

    Amazon FreeRTOSのmain()のソース(ライブラリのMCU依存やボード依存となるソースが未実装なので動作しません)

    demos\renesas\rx65n-envision-kit\common\application_code\main.c
    demos\renesas\rx65n-rsk-kit\common\application_code\main.c

    シェルティさんのmain()のソース(シェルティさんがされた確認と同じことが出来る筈です)

    demos\renesas\rx65n-envision-kit\ccrx-e2studio6\src\rx65n_envision_kit_aws.c
    demos\renesas\rx65n-rsk\ccrx-e2studio6\src\rx65n_rsk_aws.c.c

    demos\renesas\rx65n-envision-kit\ccrx-csplus\src\rx65n_envision_kit_aws.c
    demos\renesas\rx65n-rsk\ccrx-csplus\src\rx65n_rsk_aws.c.c

    今回出るワーニングは以下の通りです。(当方特有の事情でCC-RX V2.03でビルドした時のものです。)

    ..\..\..\common\mqtt\aws_subscribe_publish_loop.c(339):W0520550:Variable "xTickCount" was set but never used
    ..\common\application_code\main.c(528):W0520177:Variable "xTasksAlreadyCreated" was declared but never referenced
    ..\common\application_code\main.c(72):W0520177:Variable "ucIPAddress" was declared but never referenced
    ..\common\application_code\main.c(79):W0520177:Variable "ucNetMask" was declared but never referenced
    ..\common\application_code\main.c(86):W0520177:Variable "ucGatewayAddress" was declared but never referenced
    ..\common\application_code\main.c(93):W0520177:Variable "ucDNSServerAddress" was declared but never referenced
    ..\common\application_code\main.c(215):W0520177:Function "prvWifiConnect" was declared but never referenced
    ..\common\application_code\main.c(400):W0520550:Variable "gpt_dhcp" was set but never used
    ..\..\..\..\lib\FreeRTOS-Plus-TCP\source\FreeRTOS_IP.c(1746):W0520550:Variable "pcType" was set but never used
    ..\..\..\..\lib\FreeRTOS-Plus-TCP\source\FreeRTOS_TCP_IP.c(805):W0520550:Variable "uxFrontSpace" was set but never used
    ..\..\..\..\lib\FreeRTOS-Plus-TCP\source\FreeRTOS_TCP_IP.c(1434):W0520177:Variable "xPreviousState" was declared but never referenced
    ..\..\..\..\lib\FreeRTOS-Plus-TCP\source\FreeRTOS_TCP_IP.c(1122):W0520177:Function "prvTCPFlagMeaning" was declared but never referenced
    ..\..\..\..\lib\FreeRTOS-Plus-TCP\source\FreeRTOS_TCP_WIN.c(1489):W0520177:Variable "ulFirstSeq" was declared but never referenced
    ..\..\..\..\lib\FreeRTOS-Plus-TCP\source\portable\NetworkInterface\RX\NetworkInterface.c(99):W0520223:Function "lan_open" declared implicitly
    ..\..\..\..\lib\FreeRTOS-Plus-TCP\source\portable\NetworkInterface\RX\NetworkInterface.c(107):W0520167:Argument of type "void (*)(void)" is incompatible with parameter of type "TaskFunction_t"
    ..\..\..\..\lib\FreeRTOS-Plus-TCP\source\portable\NetworkInterface\RX\NetworkInterface.c(108):W0520042:Operand types are incompatible ("BaseType_t" and "BaseType_t (*)(TaskFunction_t, const char *const, const uint16_t, void *const, UBaseType_t, TaskHandle_t *const)")
    ..\..\..\..\lib\FreeRTOS-Plus-TCP\source\portable\NetworkInterface\RX\NetworkInterface.c(115):W0520167:Argument of type "void (*)(void)" is incompatible with parameter of type "TimerCallbackFunction_t"
    ..\..\..\..\lib\FreeRTOS-Plus-TCP\source\portable\NetworkInterface\RX\NetworkInterface.c(97):W0520177:Variable "channel" was declared but never referenced
    ..\..\..\..\lib\FreeRTOS-Plus-TCP\source\portable\NetworkInterface\RX\NetworkInterface.c(122):W0520147:Declaration is incompatible with "BaseType_t xNetworkInterfaceOutput(NetworkBufferDescriptor_t *const, BaseType_t)" (declared at line 35 of "..\..\..\..\lib\FreeRTOS-Plus-TCP\include\NetworkInterface.h")
    ..\..\..\..\lib\FreeRTOS-Plus-TCP\source\portable\NetworkInterface\RX\NetworkInterface.c(129):W0520223:Function "lan_write" declared implicitly
    ..\..\..\..\lib\FreeRTOS-Plus-TCP\source\portable\NetworkInterface\RX\NetworkInterface.c(150):W0520223:Function "get_random_number" declared implicitly
    ..\..\..\..\lib\FreeRTOS-Plus-TCP\source\portable\NetworkInterface\RX\NetworkInterface.c(194):W0520223:Function "lan_read" declared implicitly
    ..\..\..\..\lib\FreeRTOS-Plus-TCP\source\portable\NetworkInterface\RX\NetworkInterface.c(217):W0520223:Function "rcv_buff_release" declared implicitly
    ..\..\..\..\lib\FreeRTOS-Plus-TCP\source\portable\NetworkInterface\RX\NetworkInterface.c(185):W0520550:Variable "pktSuccess" was set but never used
    ..\..\..\..\lib\FreeRTOS-Plus-TCP\source\portable\NetworkInterface\RX\NetworkInterface.c(185):W0520550:Variable "pktLost" was set but never used
    ..\..\..\..\lib\third_party\tinycbor\cborpretty.c(160):W0520546:Transfer of control bypasses initialization of:
                Variable "b" (declared at line 196)
    ..\..\..\..\lib\third_party\tinycbor\cborpretty.c(348):W0520188:Enumerated type mixed with another type
    src\lcd_conf.c(362):W0520118:A void function may not return a value
    src\lcd_conf.c(373):W0520120:Return value type does not match the function type
    src\lcd_conf.c(173):W0520177:Variable "_aBufferPTR" was declared but never referenced

    なお、無償評価版のサイズ制限をオーバーして以下のエラーになります。

    F0563430:The total section size exceeded the limit

     

Children
No Data