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に変わったようです。

  • わわいです
    githubからダウンしてきたソースには Demoフォルダの下に各種CPUのHEWのプロジェクトファイルがあります
    RX630のヤツをHEWで開いてビルドボタンであっさりビルドは通りました。動かしはしていませんw

    まあ、E2Lite で動かせようとすると、どのみちe2Studio でビルドするようにせんといかんですが。

    #AmazonのほーにはWindows用デモ、とか提携メーカボード用のソースとかが上がってますね
  • こんにちは。NoMaYです。

    Amazon FreeRTOSでサポートされているボードのWi-Fiモジュールについて調べてみました。(シェルティさんはSTM32L4 Discovery Kit IoT Nodeを注文された、(わわいさんはLPC54018 IoT Moduleに少し興味を持たれた?) ようです。) STM32L4 Discovery Kit IoT NodeのWi-FiモジュールのInventek ISM43362-M3G-L44はDigi-Keyで購入出来るようです。さらに、Amazon FreeRTOSのGitHubのソースを調べると、LPC54018 IoT ModuleのWi-FiモジュールのLongsys GT1216よりも制御プログラムのソース規模が非常に小さかったです。(もっとも、逆に、Longsys GT1216の制御プログラムのソース規模が非常に大きく見えた理由は、それに搭載されているQualcomm QCA4004のSDKが丸ごと何でもかんでも入っていたからだった、というだけのこともあるかも知れませんが。)

    Microchip Technology Incorporated
    Curiosity PIC32MZ EF Development Board (Coming Soon)
    ⇒WiFi 7 click carries the ATWINC1510-MR210PB IEEE 802.11 b/g/n module
    www.mikroe.com/wifi-7-click
    使用可能な接続方法 : SPI
    Amazon FreeRTOSのGitHubのソースにコードが全く含まれていない為、それ以上は調査しませんでした

    NXP Semiconductors
    LPC54018 IoT Module
    ⇒Longsys GT1216 Wi-Fi (IEEE 802.11b/g/n) module based on Qualcomm QCA4004
    www.longsys-iot.com/portfolio/gt1x16/
    使用可能な接続方法 : UART, SPI, GPIO
    Amazon FreeRTOSのGitHubのソースでの接続方法 : SPI (たぶん)
    Amazon FreeRTOSのGitHubのソース :
    amazon-freertos-1.0.0\lib\wifi\portable\nxp\lpc54018_iot_module\aws_wifi.c
    amazon-freertos-1.0.0\lib\third_party\mcu_vendor\nxp\LPC54018\middleware\wifi_qca\
    amazon-freertos-1.0.0\demos\nxp\lpc54018_iot_module\common\application_code\nxp_code\pin_mux.*

    STMicroelectronics
    STM32L4 Discovery Kit IoT Node
    ⇒Wi-Fi® module Inventek ISM43362-M3G-L44 (802.11 b/g/n compliant)
    www.inventeksys.com/products-page/wifi-modules/ism4336-m3g-l44-e-embedded-serial-to-wifi-module/
    使用可能な接続方法 : UART, SPI
    Amazon FreeRTOSのGitHubのソースでの接続方法 : SPI (たぶん)
    Amazon FreeRTOSのGitHubのソース :
    amazon-freertos-1.0.0\lib\wifi\portable\st\stm32l475_discovery\aws_wifi.c
    amazon-freertos-1.0.0\lib\third_party\mcu_vendor\st\stm32l475_discovery\BSP\Components\es_wifi\
    amazon-freertos-1.0.0\demos\st\stm32l475_discovery\common\application_code\st_code\es_wifi_*.*

    Texas Instruments
    SimpleLink™ Wi-Fi® CC3220SF Wireless Microcontroller LaunchPad™ Development Kit
    ⇒マイコン内蔵Wi-Fiモジュール
    それ以上は調査しませんでした

    [追記]

    ソースを見ていて思ったのですが、よくよく考えてみると、基本的なI/Oインターフェース(デジタル/アナログ/シリアル/ファイルシステム/等)のAPIが何も規定されていないのは、mbed OS、Zephyr、T-Engine、Arduino(一般的にはOSとして扱われませんが)、等とは異質な存在であるような気がしました。

    [余談]

    GR-CITRUS(RX631)ボード+WA-MIKAN(ESP8266)ボードでAmazon FreeRTOSが動いたりなんかすると、ちょっと面白いのかも知れない、と思ったりとか思わなかったりとか、、、

  •  こんにちは。NoMaYです。

    前の投稿の終わりに書き足した、mbed OS、Zephyr、T-Engine、Arduino(一般的にはOSとして扱われませんが)、等の基本的なI/Oインターフェース(デジタル/アナログ/シリアル/ファイルシステム/等)のAPI、というのは以下のAPI等のことです。このようなAPIはAmazon FreeRTOSでは規定されておらず、各半導体メーカのAPIを使って下さい、ということなのだと思います。ルネサスさんのRXであれば、コード生成機能、FIT、或いはPDG2/RPDL、といったもののAPIをそのまま使い続ければ良い、ということになるのだと思います。

    mbed OS (公式)
    os.mbed.com/docs/v5.6/reference/drivers.html

    Zephyr (公式)
    docs.zephyrproject.org/api/io_interfaces.html

    T-Engine (公式)
    www.tron.org/ja/wp-content/themes/dp-magjam/pdf/specifications/ja/TEF040-S216-01.00.01_ja.pdf
    www.tron.org/ja/specifications/

    Arduino (個人ウェブサイト)
    garretlab.web.fc2.com/arduino_reference/language/index.html

    ちなみに、T-Engineのカーネルの部分(μT-Kernel 2.0)は、どうやらIEEEで世界標準規格になるらしいです。

    IEEE Standards Association (IEEE-SA) and TRON Forum Sign Agreement to Advance IoT Development and Interoperability - TRON Forum NEWS
    www.tron.org/blog/2017/12/ieee-standards-association-ieee-sa-and-tron-forum-sign-agreement-to-advance-iot-development-and-interoperability/

    T-Kernel最新情報 μT-Kernel 2.0がIEEE標準に! TRONWARE VOL.167発売 (注意: 過去の号です) - トロンフォーラム ニュース
    www.tron.org/ja/2017/10/post-3324/

    IoT対応「トロン」OS、IEEEの世界標準に トロンフォーラムが著作権譲渡 - 日刊工業新聞 電子版
    www.nikkan.co.jp/articles/view/00453976

    あと、ウェブで調べ物をしていて、Amazon FreeRTOSのスライドが公開されていることに気付きました。Amazonの公式のもののようでしたので、リンクを貼りました。

    NEW LAUNCH! Amazon FreeRTOS: IoT Operating System for Microcontrollers - IOT212 - re:Invent 2017
    www.slideshare.net/AmazonWebServices/new-launch-amazon-freertos-iot-operating-system-for-microcontrollers-iot212-reinvent-2017
     

  • こんにちは。NoMaYです。

    以前に、Amazon FreeRTOSのDemoプロジェクトがEclipseの仮想フォルダやリンクされたフォルダという機能を使ったプロジェクトのようでしたので、それがどんな感じのものであるか分かるようにe2 studio (v6.1.0)のプロジェクトを無理矢理作ってみました。ですが、感じは分かったものの、全くコンパイル出来ませんでした。そこでプロジェクト設定を詰めてみたところ、それなりにCC-RXでコンパイルが進むようになりましたので、以下のzipファイルに固めてみました。(どのように詰めたのかを後ほど投稿します。またCS+のプロジェクト設定も同様に詰めて後日投稿しようとは思っています。)

    aws_demos_renesas_rx_mcu_experiment_20171218.zip



    なお、まだコンパイル出来ないソースはありますし、そもそもMCU依存部やボード依存部を作らないとリンク出来ません。更に、e2 studioでは毎度お馴染みのトラブルですが、メイク機能が誤動作して毎回全ビルドになってしまいます。かふぇルネへの過去の投稿を読み直してみようと思っています。

    添付したzipファイルでは、Amazon FreeRTOS 1.0.0のフォルダに統合しやすいように、以下のフォルダ構成にしてみました。



    他から持って来たソースは以下の通りです。なお、STM32L4 Discovery Kit IoT NodeのSTMicroelectronics社のソースには、STMicroelectronics社のMCUやMPUでしか使ってはいけません、という条項が付いていましたので、それらのものを持って来るのは避けるようにしました。

    demos\renesas\rx231-rsk\common\config_files\*.* ← amazon-freertos-1.0.0\demos\st\stm32l475_discovery\common\config_files\*.*
    (持って来たのはSTM32L4 Discovery Kit IoT NodeですがCopyright (C) 2017 Amazon.com, Inc.のものです。)
    demos\renesas\rx231-rsk\common\config_files\FreeRTOSConfig.h ← FreeRTOSv10.0.0\FreeRTOS\Demo\RX200_RX231-RSK_Renesas_e2studio\src\FreeRTOSConfig.h
    (FreeRTOSConfig.hでは、足りない定義をSTM32L4 Discovery Kit IoT NodeのCopyright (C) 2017 Amazon.com, Inc.のものから持って来たり、GCC特有の記述をCC-RXでコンパイル出来るような細工をひとまず追加したり、といったこともしました。)


    demos\renesas\rx231-rsk\common\application_code\main.c ← amazon-freertos-1.0.0\demos\vendor\board\common\application_code\main.c
    demos\renesas\rx231-rsk\common\application_code\iodefine.h ← r_bsp\mcu\rx231\register_access\iodefine.h
    (FreeRTOS kernelのソースがiodefine.hをインクルードしているので、ひとまずコピペすることにしました)
    demos\renesas\rx231-rsk\common\application_code\time.h ← 今回作成(中身の無いダミーファイルです)
    (mbedTLSのソースがtime.hをインクルードしているのですが、CC-RXには無く、試してみると中身は無しでも構わないようでしたので、ひとまず中身の無いダミーファイルを作成しました)


    以下のフォルダは空にしました。なぜなら、e2 studioの場合、ルネサスさんのRXで、コード生成機能、FIT、或いはPDG2、といったものを使った時は、プロジェクトフォルダの下にコードが生成されますので、そこにそのまま置いておく方が楽そうな気がしたからです。

    demos\renesas\rx231-rsk\common\application_code\renesas_code\
    (Amazon FreeRTOSのソースでは半導体メーカのBSPの初期化コードを置くことを想定している気がします)


    lib\third_party\mcu_vendor\renesas\rx231-rsk\
    (Amazon FreeRTOSのソースでは半導体メーカのBSPを置くことを想定している気がします)


    添付したzipファイルのプロジェクトでは、FITやコード生成機能のソースを生成出来るようにしてみました。とはいえ、Amazon FreeRTOSと繋ぐコードが無いですので、生成出来るようになっているというだけです。(手元でビルドした時には試しに幾つか生成させてビルドしてみましたが、単にそれだけですので、添付したzipファイルではファイルを削除してフォルダのみ残しました。ところが、後になって気付いたのですが、フォルダが残っているとFITでコード生成させる時に誤動作するようですので、その場合は、フォルダを削除してからコード生成させないといけないようです。)




    手元でビルドした時のビルドログは以下の通りです。(先に添付したzipファイルのプロジェクトではCC-RX V2.07を使う設定になっていますが、当方特有の事情でCC-RX V2.03でビルドした時のものです。)

    aws_demos_renesas_rx_mcu_experiment_build_log_20171218.zip

    [関連リンク]

    生成されたコードを公開((再)配布)してもよいコード生成支援ツールの種類のまとめ
    japan.renesasrulz.com/cafe_rene/f/forum21/4302/thread

    CS+が生成したcstart.asm/stkinit.asm/hdwinit.asm/iodefine.hは公開(再配布)可能ですか?
    japan.renesasrulz.com/cafe_rene/f/forum21/4014/cs-cstart-asm-stkinit-asm-hdwinit-asm-iodefine-h
     

  • こんにちは。NoMaYです。

    Amazon FreeRTOSのDemoプロジェクトで、e2 studio (v6.1.0)のプロジェクトとして無理矢理作ってみましたが、以下のようにプロジェクト設定を詰めたところ、それなりにCC-RXでコンパイルが進むようになりました。(なお、今改めて考えると、(1)~(5)がミソだったのですが、(6)~(9)はオマケでした。)

    (1) フォルダの設定が[ビルドから除外]になっていたのを解除する
    (2) リンクされたフォルダのパス(およびフォルダの名前)を変更する
    (3) フォルダの除外設定を行う
    (4) コンパイル時のインクルードパスを設定する(変更する)
    (5) コンパイル時のマクロ定義を設定する(そのまま)
    (6) コンパイルエラーがあってもビルドを継続する設定にする
    (7) プログラム名を設定する
    (8) 試しにFITでコード生成させてみた
    (9) 試しにコード生成機能でコード生成させてみた



    (1) フォルダの設定が[ビルドから除外]になっていたのを解除する

    これが原因で全くコンパイル出来ませんでした。(今改めて考えると、「全くコンパイル出来なかった」と言うよりは「全くコンパイルが行われなかった」と言うべきだった気がします。)

    解除前:


    解除後:


    手順:




    (2) リンクされたフォルダのパス(およびフォルダの名前)を変更する

    Amazon FreeRTOSのDemoプロジェクトはEclipseのリンクされたフォルダという機能を使っていますが、そのリンクされたリソースのロケーションをプロジェクトのプロパティで変更しました。ひとまず青枠で囲ったもののみを変更しました。ややこしいのは、Eclipseの仕様として、リンクされたリソースのリソース名をプロジェクトのプロパティでは変更出来ないようなのです。ですので、それはプロジェクトエクスプローラ上で変更しました。赤枠で囲った部分のことです。

    変更前:


    変更後:


    変更箇所:







    (3) フォルダの除外設定を行う

    Amazon FreeRTOSのDemoプロジェクトに含まれるFreeRTOS kernalの部分は、Eclipseのリソースフィルターという機能を使ってコンパイルするソースを選ぶようになっていました。そこで、フォルダのプロパティでリソースフィルターの設定を変更して、コンパイルするソースを切り替えました。

    変更前:


    変更後:


    手順1:



    手順2:



    手順3:



    リソースフィルタを編集するダイアログの画面:




    (4) コンパイル時のインクルードパスを設定する(変更する)

    Amazon FreeRTOSのDemoプロジェクトのインクルードパスの設定を(たとえ無理矢理にしろ)e2 studio上から確認する方法を思い付きませんでした。ですので、Demoプロジェクトに含まれるそれぞれの統合開発環境の環境設定ファイルをエディタで開いて確認しました。また、FreeRTOS kernelのDemoプロジェクトのRX231のインクルードパスの設定も確認しました。さらに、ルネサスさんのRXのコード生成機能やFITのことも考え、以下のインクルードパスを設定することにしました。また、今後のことも考え、e2 studioにインクルードパスのデータをインポートするxmlファイルもエクスポートしてみました。

    ${TCINSTALL}/include
    /${ProjName}/
    /${ProjName}/config_files
    /${ProjName}/application_code
    /${ProjName}/application_code/renesas_code
    /${ProjName}/application_code/common_demos/include
    /${ProjName}/lib/aws/include
    /${ProjName}/lib/aws/include/private
    /${ProjName}/lib/aws/FreeRTOS/portable/Renesas/RX600v2
    /${ProjName}/lib/third_party/jsmn
    /${ProjName}/lib/third_party/pkcs11
    /${ProjName}/lib/third_party/mbedtls/include
    /${ProjName}/src
    /${ProjName}/src/cg_src
    /${ProjName}/r_bsp
    /${ProjName}/r_config


    インポートデータ:
    AmazonFreeRTOS_RenesasRX_e2studio6_IncludePaths.xml

    参考にした情報:
    amazon-freertos-1.0.0\demos\st\stm32l475_discovery\ac6\.cproject
    amazon-freertos-1.0.0\demos\ti\cc3220_launchpad\ccs\.cproject
    amazon-freertos-1.0.0\demos\nxp\lpc54018_iot_module\iar\aws_demos.ewp
    amazon-freertos-1.0.0\demos\pc\windows\visual_studio\aws_demos.vcxproj
    FreeRTOSv10.0.0\FreeRTOS\Demo\RX200_RX231-RSK_Renesas_e2studio\.cproject

    0876.AmazonFreeRTOS_IncludePaths.txt
    ■ amazon-freertos-1.0.0\demos\st\stm32l475_discovery\ac6\.cproject
    
    								<option id="gnu.c.compiler.option.include.paths.1847441575" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath">
    									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}}&quot;"/>
    									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/config_files}&quot;"/>
    									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/application_code}&quot;"/>
    									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/application_code/st_code}&quot;"/>
    									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/application_code/common_demos/include}&quot;"/>
    									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/lib/aws/include}&quot;"/>
    									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/lib/aws/include/private}&quot;"/>
    									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/lib/aws/FreeRTOS/portable/GCC/ARM_CM4F}&quot;"/>
    									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/lib/third_party/jsmn}&quot;"/>
    									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/lib/third_party/pkcs11}&quot;"/>
    									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/lib/third_party/mbedtls/include}&quot;"/>
    									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/lib/third_party/mcu_vendor/st/stm32l475_discovery/STM32L4xx_HAL_Driver/Inc}&quot;"/>
    									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/lib/third_party/mcu_vendor/st/stm32l475_discovery/STM32L4xx_HAL_Driver/Inc/Legacy}&quot;"/>
    									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/lib/third_party/mcu_vendor/st/stm32l475_discovery/CMSIS/Include}&quot;"/>
    									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/lib/third_party/mcu_vendor/st/stm32l475_discovery/CMSIS/Device/ST/STM32L4xx/Include}&quot;"/>
    									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/lib/third_party/mcu_vendor/st/stm32l475_discovery/BSP/B-L475E-IOT01}&quot;"/>
    									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/lib/third_party/mcu_vendor/st/stm32l475_discovery/BSP/Components/Common}&quot;"/>
    									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/lib/third_party/mcu_vendor/st/stm32l475_discovery/BSP/Components/hts221}&quot;"/>
    									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/lib/third_party/mcu_vendor/st/stm32l475_discovery/BSP/Components/lis3mdl}&quot;"/>
    									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/lib/third_party/mcu_vendor/st/stm32l475_discovery/BSP/Components/lps22hb}&quot;"/>
    									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/lib/third_party/mcu_vendor/st/stm32l475_discovery/BSP/Components/lsm6dsl}&quot;"/>
    									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/lib/third_party/mcu_vendor/st/stm32l475_discovery/BSP/Components/vl53l0x}&quot;"/>
    									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/lib/third_party/mcu_vendor/st/stm32l475_discovery/BSP/Components/es_wifi}&quot;"/>
    								</option>
    
    ■ amazon-freertos-1.0.0\demos\ti\cc3220_launchpad\ccs\.cproject
    
    								<option id="com.ti.ccstudio.buildDefinitions.TMS470_16.9.compilerID.INCLUDE_PATH.1680333660" name="Add dir to #include search path (--include_path, -I)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_16.9.compilerID.INCLUDE_PATH" valueType="includePath">
    									<listOptionValue builtIn="false" value="${TREADSTONE_ROOT}/lib/third_party/mcu_vendor/ti/SimpleLink_CC32xx/v1_40_01_00/source"/>
    									<listOptionValue builtIn="false" value="${TREADSTONE_ROOT}/lib/third_party/mcu_vendor/ti/SimpleLink_CC32xx/v1_40_01_00/source/ti/drivers/net/wifi"/>
    									<listOptionValue builtIn="false" value="${TREADSTONE_ROOT}/lib/third_party/mcu_vendor/ti/SimpleLink_CC32xx/v1_40_01_00/kernel/freertos/posix"/>
    									<listOptionValue builtIn="false" value="${TREADSTONE_ROOT}/lib/third_party/mcu_vendor/ti/SimpleLink_CC32xx/v1_40_01_00/kernel/freertos/posix/sys"/>
    									<listOptionValue builtIn="false" value="${CG_TOOL_ROOT}/include"/>
    									<listOptionValue builtIn="false" value="${PROJECT_ROOT}"/>
    									<listOptionValue builtIn="false" value="${workspace_loc:/${ProjName}/config_files}"/>
    									<listOptionValue builtIn="false" value="${workspace_loc:/${ProjName}/lib/aws/include}"/>
    									<listOptionValue builtIn="false" value="${workspace_loc:/${ProjName}/lib/aws/include/private}"/>
    									<listOptionValue builtIn="false" value="${workspace_loc:/${ProjName}/application_code/ti_code}"/>
    									<listOptionValue builtIn="false" value="${workspace_loc:/${ProjName}/application_code/common_demos/include}"/>
    									<listOptionValue builtIn="false" value="${workspace_loc:/${ProjName}/lib/aws/FreeRTOS/portable/CCS/ARM_CM3}"/>
    									<listOptionValue builtIn="false" value="${workspace_loc:/${ProjName}/lib/third_party/jsmn}"/>
    									<listOptionValue builtIn="false" value="${TREADSTONE_ROOT}/lib/third_party/pkcs11"/>
    								</option>
    
    ■ amazon-freertos-1.0.0\demos\nxp\lpc54018_iot_module\iar\aws_demos.ewp
    
                    <option>
                        <name>CCIncludePath2</name>
                        <state>$PROJ_DIR$</state>
                        <state>$PROJ_DIR$/../common/application_code/nxp_code</state>
                        <state>$PROJ_DIR$/../../../../lib/third_party/mcu_vendor/nxp/LPC54018</state>
                        <state>$PROJ_DIR$/../../../../lib/third_party/mcu_vendor/nxp/LPC54018/drivers</state>
                        <state>$PROJ_DIR$/../../../../lib/third_party/mcu_vendor/nxp/LPC54018/drivers/common</state>
                        <state>$PROJ_DIR$/../../../../lib/third_party/mcu_vendor/nxp/LPC54018/utilities</state>
                        <state>$PROJ_DIR$/../../../../lib/third_party/mcu_vendor/nxp/LPC54018/utilities/debug_console</state>
                        <state>$PROJ_DIR$\..\..\..\..\lib\third_party\mbedtls\include</state>
                        <state>$PROJ_DIR$\..\..\..\..\lib\include</state>
                        <state>$PROJ_DIR$\..\..\..\..\lib\include\private</state>
                        <state>$PROJ_DIR$\..\common\config_files</state>
                        <state>$PROJ_DIR$\..\..\..\..\lib\FreeRTOS\portable\IAR\ARM_CM4F</state>
                        <state>$PROJ_DIR$\..\..\..\common\include</state>
                        <state>$PROJ_DIR$\..\..\..\..\lib\third_party\jsmn</state>
                        <state>$PROJ_DIR$\..\..\..\..\lib\third_party\pkcs11</state>
                        <state>$PROJ_DIR$\..\..\..\..\lib\third_party\mcu_vendor\nxp\LPC54018\utilities\log</state>
                        <state>$PROJ_DIR$\..\..\..\..\lib\third_party\mcu_vendor\nxp\LPC54018\utilities\io</state>
                        <state>$PROJ_DIR$\..\..\..\..\lib\third_party\mcu_vendor\nxp\LPC54018\utilities\str</state>
                        <state>$PROJ_DIR$\..\..\..\..\lib\third_party\mcu_vendor\nxp\LPC54018\middleware/wifi_qca/port/boards/clickbrd_tread/freertos/gt202</state>
                        <state>$PROJ_DIR$\..\..\..\..\lib\third_party\mcu_vendor\nxp\LPC54018\middleware/wifi_qca/port/boards/clickbrd_tread/freertos</state>
                        <state>$PROJ_DIR$\..\..\..\..\lib\third_party\mcu_vendor\nxp\LPC54018\middleware/wifi_qca/port/env/freertos</state>
                        <state>$PROJ_DIR$\..\..\..\..\lib\third_party\mcu_vendor\nxp\LPC54018\middleware/wifi_qca</state>
                        <state>$PROJ_DIR$\..\..\..\..\lib\third_party\mcu_vendor\nxp\LPC54018\middleware/wifi_qca/include</state>
                        <state>$PROJ_DIR$\..\..\..\..\lib\third_party\mcu_vendor\nxp\LPC54018\middleware/wifi_qca/include/AR6002</state>
                        <state>$PROJ_DIR$\..\..\..\..\lib\third_party\mcu_vendor\nxp\LPC54018\middleware/wifi_qca/include/AR6002/hw2.0/hw</state>
                        <state>$PROJ_DIR$\..\..\..\..\lib\third_party\mcu_vendor\nxp\LPC54018\middleware/wifi_qca/include/AR6002/hw4.0/hw</state>
                        <state>$PROJ_DIR$\..\..\..\..\lib\third_party\mcu_vendor\nxp\LPC54018\middleware/wifi_qca/custom_src/stack_custom</state>
                        <state>$PROJ_DIR$\..\..\..\..\lib\third_party\mcu_vendor\nxp\LPC54018\middleware/wifi_qca/custom_src/include</state>
                        <state>$PROJ_DIR$\..\..\..\..\lib\third_party\mcu_vendor\nxp\LPC54018\middleware/wifi_qca/common_src/include</state>
                        <state>$PROJ_DIR$\..\..\..\..\lib\third_party\mcu_vendor\nxp\LPC54018\middleware/wifi_qca/common_src/stack_common</state>
                        <state>$PROJ_DIR$\..\..\..\..\lib\third_party\mcu_vendor\nxp\LPC54018\middleware/wifi_qca/common_src/hcd</state>
                        <state>$PROJ_DIR$\..\..\..\..\lib\third_party\mcu_vendor\nxp\LPC54018\middleware/wifi_qca/common_src/wmi</state>
                        <state>$PROJ_DIR$\..\..\..\..\lib\third_party\mcu_vendor\nxp\LPC54018\middleware/wifi_qca/port</state>
                        <state>$PROJ_DIR$\..\..\..\..\lib\third_party\mcu_vendor\nxp\LPC54018\middleware/wifi_qca/port/drivers/flexcomm_freertos</state>
                        <state>$PROJ_DIR$\..\..\..\..\lib\third_party\mcu_vendor\nxp\LPC54018\middleware/usb/device</state>
                        <state>$PROJ_DIR$\..\..\..\..\lib\third_party\mcu_vendor\nxp\LPC54018\middleware/usb/include</state>
                        <state>$PROJ_DIR$\..\..\..\..\lib\third_party\mcu_vendor\nxp\LPC54018\middleware/usb/osa</state>
                    </option>
    
    ■ amazon-freertos-1.0.0\demos\pc\windows\visual_studio\aws_demos.vcxproj
    
          <AdditionalIncludeDirectories>..\common\win_pcap;..\common\config_files;..\common\application_code\include;..\..\..\..\demos\common\include;..\..\..\..\lib\include;..\..\..\..\lib\include\private;..\..\..\..\lib\FreeRTOS\include;..\..\..\..\lib\FreeRTOS\portable\MSVC-MingW;..\..\..\..\lib\FreeRTOS-Plus-TCP\include;..\..\..\..\lib\FreeRTOS-Plus-TCP\Source\portable\BufferManagement;..\..\..\..\lib\FreeRTOS-Plus-TCP\Source\portable\Compiler\MSVC;..\..\..\..\lib\third_party\mbedtls\include;..\..\..\..\lib\third_party\tracealyzer_recorder\Include;..\..\..\..\lib\third_party\jsmn;..\..\..\..\lib\third_party\pkcs11;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    
         このままでは見辛いので改行を入れました
    
          <AdditionalIncludeDirectories>
              ..\common\win_pcap;
              ..\common\config_files;
              ..\common\application_code\include;
              ..\..\..\..\demos\common\include;
              ..\..\..\..\lib\include;
              ..\..\..\..\lib\include\private;
              ..\..\..\..\lib\FreeRTOS\include;
              ..\..\..\..\lib\FreeRTOS\portable\MSVC-MingW;
              ..\..\..\..\lib\FreeRTOS-Plus-TCP\include;
              ..\..\..\..\lib\FreeRTOS-Plus-TCP\Source\portable\BufferManagement;
              ..\..\..\..\lib\FreeRTOS-Plus-TCP\Source\portable\Compiler\MSVC;
              ..\..\..\..\lib\third_party\mbedtls\include;
              ..\..\..\..\lib\third_party\tracealyzer_recorder\Include;
              ..\..\..\..\lib\third_party\jsmn;
              ..\..\..\..\lib\third_party\pkcs11;
              %(AdditionalIncludeDirectories)
          </AdditionalIncludeDirectories>
    
    ■ FreeRTOSv10.0.0\FreeRTOS\Demo\RX200_RX231-RSK_Renesas_e2studio\.cproject
    
    								<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.renesas.cdt.renesas.Compiler.option.incFileDirectories.1913911194" name="Include file directories" superClass="com.renesas.cdt.renesas.Compiler.option.incFileDirectories" valueType="includePath">
    									<listOptionValue builtIn="false" value="&quot;${TCINSTALL}/include&quot;"/>
    									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/src/Full_Demo}&quot;"/>
    									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/src/Full_Demo/Standard_Demo_Tasks/include}&quot;"/>
    									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/src/Renesas_Code}&quot;"/>
    									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/src/FreeRTOS_Source/portable/Renesas/RX600v2}&quot;"/>
    									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/src/FreeRTOS_Source/include}&quot;"/>
    									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/src}&quot;"/>
    								</option>
    




    (5) コンパイル時のマクロ定義を設定する(そのまま)

    こちらも(4)のインクルードパスと同じく、Amazon FreeRTOSのDemoプロジェクトのマクロ定義の設定を(たとえ無理矢理にしろ)e2 studio上から確認する方法を思い付きませんでした。ですので同じく、Demoプロジェクトに含まれるそれぞれの統合開発環境の環境設定ファイルをエディタで開いて確認しました。また、FreeRTOS kernelのDemoプロジェクトのRX231のマクロ定義の設定も確認しました。なお、ルネサスさんのRXのコード生成機能やFITでは特にコンパイル時のマクロ定義は使われていなかったと思います。そして、以下のマクロ定義を設定することにしました。(というか、無理矢理作ったプロジェクトで既にそうなっています。) また、今後増えるかも知れないと考え、e2 studioにマクロ定義のパスのデータをインポートするxmlファイルもエクスポートしてみました。(ちょっと無理矢理な動機付けですが、(4)のインクルードパスに対してやったのと同じことをやっておきたかった、ということなのです。)

    __RX


    インポートデータ:
    AmazonFreeRTOS_RenesasRX_e2studio6_Macros.xml

    参考にした情報:
    amazon-freertos-1.0.0\demos\st\stm32l475_discovery\ac6\.cproject
    amazon-freertos-1.0.0\demos\ti\cc3220_launchpad\ccs\.cproject
    amazon-freertos-1.0.0\demos\nxp\lpc54018_iot_module\iar\aws_demos.ewp
    amazon-freertos-1.0.0\demos\pc\windows\visual_studio\aws_demos.vcxproj
    FreeRTOSv10.0.0\FreeRTOS\Demo\RX200_RX231-RSK_Renesas_e2studio\.cproject

    6201.AmazonFreeRTOS_Macros.txt
    ■ amazon-freertos-1.0.0\demos\st\stm32l475_discovery\ac6\.cproject
    
    								<option id="gnu.c.compiler.option.preprocessor.def.symbols.1779062689" name="Defined symbols (-D)" superClass="gnu.c.compiler.option.preprocessor.def.symbols" useByScannerDiscovery="false" valueType="definedSymbols">
    									<listOptionValue builtIn="false" value="USE_HAL_DRIVER"/>
    									<listOptionValue builtIn="false" value="STM32L475xx"/>
    									<listOptionValue builtIn="false" value="MQTTCLIENT_PLATFORM_HEADER=MQTTCMSIS.h"/>
    									<listOptionValue builtIn="false" value="ENABLE_IOT_INFO"/>
    									<listOptionValue builtIn="false" value="ENABLE_IOT_ERROR"/>
    									<listOptionValue builtIn="false" value="SENSOR"/>
    									<listOptionValue builtIn="false" value="RFU"/>
    								</option>
    
    ■ amazon-freertos-1.0.0\demos\ti\cc3220_launchpad\ccs\.cproject
    
    								<option id="com.ti.ccstudio.buildDefinitions.TMS470_16.9.compilerID.DEFINE.1149275802" name="Pre-define NAME (--define, -D)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_16.9.compilerID.DEFINE" valueType="definedSymbols">
    									<listOptionValue builtIn="false" value="CC3220sf"/>
    								</option>
    
    ■ amazon-freertos-1.0.0\demos\nxp\lpc54018_iot_module\iar\aws_demos.ewp
    
                    <option>
                        <name>CCDefines</name>
                        <state>DEBUG</state>
                        <state>CPU_LPC54018</state>
                        <state>CPU_LPC54018JET180=1</state>
                        <state>BOARD_USE_VIRTUALCOM</state>
                        <state>USB_STACK_FREERTOS</state>
                        <state>USB_DEVICE_CONFIG_LPCIP3511HS=1</state>
                        <state>USB_STACK_USE_DEDICATED_RAM=1</state>
                        <state>USE_RTOS=1</state>
                        <state>MBEDTLS_CONFIG_FILE="aws_mbedtls_config.h"</state>
                        <state>FSL_RTOS_FREE_RTOS</state>
                        <state>A_LITTLE_ENDIAN</state>
                    </option>
    
    ■ amazon-freertos-1.0.0\demos\pc\windows\visual_studio\aws_demos.vcxproj
    
          <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_WIN32_WINNT=0x0500;WINVER=0x400;_CRT_SECURE_NO_WARNINGS;__PRETTY_FUNCTION__=__FUNCTION__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
    
         このままでは見辛いので改行を入れました
    
          <PreprocessorDefinitions>
              WIN32;
              _DEBUG;
              _CONSOLE;
              _WIN32_WINNT=0x0500;
              WINVER=0x400;
              _CRT_SECURE_NO_WARNINGS;
              __PRETTY_FUNCTION__=__FUNCTION__;
              %(PreprocessorDefinitions)
          </PreprocessorDefinitions>
    
    ■ FreeRTOSv10.0.0\FreeRTOS\Demo\RX200_RX231-RSK_Renesas_e2studio\.cproject
    
    								<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.renesas.cdt.renesas.Compiler.option.defines.1356205858" name="Defines" superClass="com.renesas.cdt.renesas.Compiler.option.defines" valueType="definedSymbols">
    									<listOptionValue builtIn="false" value="__RX"/>
    								</option>
    




    (6) コンパイルエラーがあってもビルドを継続する設定にする

    コンパイル出来るようにする作業の時は、コンパイルエラーで即停止するより、この方が効率が良いと思うからです。

    [最初のビルド・エラーで停止]のチェックを外す




    (7) プログラム名を設定する

    今改めて考えると、そもそもMCU依存部やボード依存部を作らないとリンク出来ませんので、現時点で設定しておく必要は無かったと思います、、、

    aws_demo




    (8) 試しにFITでコード生成させてみた

    試しです。









    (9) 試しにコード生成機能でコード生成させてみた

    試しです。







  • こんにちは。NoMaYです。

    Amazon FreeRTOSのDemoプロジェクトで、e2 studio (v6.1.0)のプロジェクトとして無理矢理作ってみましたが、それなりにCC-RXでコンパイルが進むようになったので、それをCS+ for CC (V6.00.00(2017/10/05版))のプロジェクトに変換してみました。Amazon FreeRTOSのDemoプロジェクトはEclipseの仮想フォルダやリンクされたフォルダという機能を使ったプロジェクトなのですが、これらの機能はソースパスの指定だけでなくインクルードパスの指定にも使われています。残念ながら、e2 studio→CS+のプロジェクト変換では、ソースパスはリアルのパスへ変換されるのに対し、インクルードパスはリアルのパスへは変換されず、コンパイルエラーが大量に発生しました。そこで、CS+上で手作業でインクルードパスを修正したところ、e2 studioと同様にCS+でも、それなりにCC-RXでコンパイルが進むようになりました。

    e2 studioのプロジェクトでは、今のところ、インクルードパスは以下の設定になっています。

    ${TCINSTALL}/include
    /${ProjName}/
    /${ProjName}/config_files
    /${ProjName}/application_code
    /${ProjName}/application_code/renesas_code
    /${ProjName}/application_code/common_demos/include
    /${ProjName}/lib/aws/include
    /${ProjName}/lib/aws/include/private
    /${ProjName}/lib/aws/FreeRTOS/portable/Renesas/RX600v2
    /${ProjName}/lib/third_party/jsmn
    /${ProjName}/lib/third_party/pkcs11
    /${ProjName}/lib/third_party/mbedtls/include
    /${ProjName}/src
    /${ProjName}/src/cg_src
    /${ProjName}/r_bsp
    /${ProjName}/r_config
    /${ProjName}/r_rspi_rx
    /${ProjName}/r_rspi_rx/src
    /${ProjName}/r_pincfg

    CS+のプロジェクトでは、上のインクルードパスの設定が素朴に以下の設定に変換されていました。

    ..\%ProjectName%
    ..\%ProjectName%\config_files
    ..\%ProjectName%\application_code
    ..\%ProjectName%\application_code\renesas_code
    ..\%ProjectName%\application_code\common_demos\include
    ..\%ProjectName%\lib\aws\include
    ..\%ProjectName%\lib\aws\include\private
    ..\%ProjectName%\lib\aws\FreeRTOS\portable\Renesas\RX600v2
    ..\%ProjectName%\lib\third_party\jsmn
    ..\%ProjectName%\lib\third_party\pkcs11
    ..\%ProjectName%\lib\third_party\mbedtls\include
    ..\%ProjectName%\src
    ..\%ProjectName%\src\cg_src
    ..\%ProjectName%\r_bsp
    ..\%ProjectName%\r_config
    ..\%ProjectName%\r_rspi_rx
    ..\%ProjectName%\r_rspi_rx\src
    ..\%ProjectName%\r_pincfg

    以下はe2 studioのビルドログから抜き出したものですが、mbed TLSのソースの1つがコンパイルされる時のCC-RXのコマンドの全体とその中のインクルードパスの部分(を個々に改行して見易くしたもの)です。上の素朴に変換されたパスと以下のリアルのパスを見比べると、一致していないことが分かります。(ちなみに、今回は%ProjectName%がaws_demosですので、ぶっちゃけ、まるで見当外れのパスになっていますが、、、)

    'Scanning and building file: C:/Renesas/AmazonFreeRTOS/amazon-freertos-1.0.0/lib/third_party/mbedtls/library/aes.c'
    'Invoking: Scanner and Compiler'
    ccrx -MM -MP -output=dep="lib/third_party/mbedtls/source/aes.d"  -MT="lib/third_party/mbedtls/source/aes.obj"  -MT="lib/third_party/mbedtls/source/aes.d" -isa=rxv2 -fpu -include="C:\Renesas\CS+\CC\CC-RX\V2.03.00\include","C:\Renesas\AmazonFreeRTOS\amazon-freertos-1.0.0\demos\renesas\rx231-rsk\e2studio6","C:\Renesas\AmazonFreeRTOS\amazon-freertos-1.0.0\demos\renesas\rx231-rsk\common\config_files","C:\Renesas\AmazonFreeRTOS\amazon-freertos-1.0.0\demos\renesas\rx231-rsk\common\application_code","C:\Renesas\AmazonFreeRTOS\amazon-freertos-1.0.0\demos\renesas\rx231-rsk\common\application_code\renesas_code","C:\Renesas\AmazonFreeRTOS\amazon-freertos-1.0.0\demos\common\include","C:\Renesas\AmazonFreeRTOS\amazon-freertos-1.0.0\lib\include","C:\Renesas\AmazonFreeRTOS\amazon-freertos-1.0.0\lib\include\private","C:\Renesas\AmazonFreeRTOS\amazon-freertos-1.0.0\lib\FreeRTOS\portable\Renesas\RX600v2","C:\Renesas\AmazonFreeRTOS\amazon-freertos-1.0.0\lib\third_party\jsmn","C:\Renesas\AmazonFreeRTOS\amazon-freertos-1.0.0\lib\third_party\pkcs11","C:\Renesas\AmazonFreeRTOS\amazon-freertos-1.0.0\lib\third_party\mbedtls\include","C:\Renesas\AmazonFreeRTOS\amazon-freertos-1.0.0\demos\renesas\rx231-rsk\e2studio6\src","C:\Renesas\AmazonFreeRTOS\amazon-freertos-1.0.0\demos\renesas\rx231-rsk\e2studio6\src\cg_src","C:\Renesas\AmazonFreeRTOS\amazon-freertos-1.0.0\demos\renesas\rx231-rsk\e2studio6\r_bsp","C:\Renesas\AmazonFreeRTOS\amazon-freertos-1.0.0\demos\renesas\rx231-rsk\e2studio6\r_config","C:\Renesas\AmazonFreeRTOS\amazon-freertos-1.0.0\demos\renesas\rx231-rsk\e2studio6\r_rspi_rx","C:\Renesas\AmazonFreeRTOS\amazon-freertos-1.0.0\demos\renesas\rx231-rsk\e2studio6\r_rspi_rx\src","C:\Renesas\AmazonFreeRTOS\amazon-freertos-1.0.0\demos\renesas\rx231-rsk\e2studio6\r_pincfg" -define=__RX -lang=c99 -nomessage -debug -optimize=0 -speed -nologo -nologo  "C:/Renesas/AmazonFreeRTOS/amazon-freertos-1.0.0/lib/third_party/mbedtls/library/aes.c"
    ccrx -isa=rxv2 -fpu -include="C:\Renesas\CS+\CC\CC-RX\V2.03.00\include","C:\Renesas\AmazonFreeRTOS\amazon-freertos-1.0.0\demos\renesas\rx231-rsk\e2studio6","C:\Renesas\AmazonFreeRTOS\amazon-freertos-1.0.0\demos\renesas\rx231-rsk\common\config_files","C:\Renesas\AmazonFreeRTOS\amazon-freertos-1.0.0\demos\renesas\rx231-rsk\common\application_code","C:\Renesas\AmazonFreeRTOS\amazon-freertos-1.0.0\demos\renesas\rx231-rsk\common\application_code\renesas_code","C:\Renesas\AmazonFreeRTOS\amazon-freertos-1.0.0\demos\common\include","C:\Renesas\AmazonFreeRTOS\amazon-freertos-1.0.0\lib\include","C:\Renesas\AmazonFreeRTOS\amazon-freertos-1.0.0\lib\include\private","C:\Renesas\AmazonFreeRTOS\amazon-freertos-1.0.0\lib\FreeRTOS\portable\Renesas\RX600v2","C:\Renesas\AmazonFreeRTOS\amazon-freertos-1.0.0\lib\third_party\jsmn","C:\Renesas\AmazonFreeRTOS\amazon-freertos-1.0.0\lib\third_party\pkcs11","C:\Renesas\AmazonFreeRTOS\amazon-freertos-1.0.0\lib\third_party\mbedtls\include","C:\Renesas\AmazonFreeRTOS\amazon-freertos-1.0.0\demos\renesas\rx231-rsk\e2studio6\src","C:\Renesas\AmazonFreeRTOS\amazon-freertos-1.0.0\demos\renesas\rx231-rsk\e2studio6\src\cg_src","C:\Renesas\AmazonFreeRTOS\amazon-freertos-1.0.0\demos\renesas\rx231-rsk\e2studio6\r_bsp","C:\Renesas\AmazonFreeRTOS\amazon-freertos-1.0.0\demos\renesas\rx231-rsk\e2studio6\r_config","C:\Renesas\AmazonFreeRTOS\amazon-freertos-1.0.0\demos\renesas\rx231-rsk\e2studio6\r_rspi_rx","C:\Renesas\AmazonFreeRTOS\amazon-freertos-1.0.0\demos\renesas\rx231-rsk\e2studio6\r_rspi_rx\src","C:\Renesas\AmazonFreeRTOS\amazon-freertos-1.0.0\demos\renesas\rx231-rsk\e2studio6\r_pincfg" -define=__RX -lang=c99 -nomessage -output=obj -obj_path="lib/third_party/mbedtls/source" -debug -optimize=0 -speed -nologo -nologo "C:/Renesas/AmazonFreeRTOS/amazon-freertos-1.0.0/lib/third_party/mbedtls/library/aes.c"
    'Finished Scanning and building: C:/Renesas/AmazonFreeRTOS/amazon-freertos-1.0.0/lib/third_party/mbedtls/library/aes.c'

     

    -include=
    "C:\Renesas\CS+\CC\CC-RX\V2.03.00\include",
    "C:\Renesas\AmazonFreeRTOS\amazon-freertos-1.0.0\demos\renesas\rx231-rsk\e2studio6", ← mtpjファイルがあるのはココ
    "C:\Renesas\AmazonFreeRTOS\amazon-freertos-1.0.0\demos\renesas\rx231-rsk\common\config_files",
    "C:\Renesas\AmazonFreeRTOS\amazon-freertos-1.0.0\demos\renesas\rx231-rsk\common\application_code",
    "C:\Renesas\AmazonFreeRTOS\amazon-freertos-1.0.0\demos\renesas\rx231-rsk\common\application_code\renesas_code",
    "C:\Renesas\AmazonFreeRTOS\amazon-freertos-1.0.0\demos\common\include",
    "C:\Renesas\AmazonFreeRTOS\amazon-freertos-1.0.0\lib\include",
    "C:\Renesas\AmazonFreeRTOS\amazon-freertos-1.0.0\lib\include\private",
    "C:\Renesas\AmazonFreeRTOS\amazon-freertos-1.0.0\lib\FreeRTOS\portable\Renesas\RX600v2",
    "C:\Renesas\AmazonFreeRTOS\amazon-freertos-1.0.0\lib\third_party\jsmn",
    "C:\Renesas\AmazonFreeRTOS\amazon-freertos-1.0.0\lib\third_party\pkcs11",
    "C:\Renesas\AmazonFreeRTOS\amazon-freertos-1.0.0\lib\third_party\mbedtls\include",
    "C:\Renesas\AmazonFreeRTOS\amazon-freertos-1.0.0\demos\renesas\rx231-rsk\e2studio6\src",
    "C:\Renesas\AmazonFreeRTOS\amazon-freertos-1.0.0\demos\renesas\rx231-rsk\e2studio6\src\cg_src",
    "C:\Renesas\AmazonFreeRTOS\amazon-freertos-1.0.0\demos\renesas\rx231-rsk\e2studio6\r_bsp",
    "C:\Renesas\AmazonFreeRTOS\amazon-freertos-1.0.0\demos\renesas\rx231-rsk\e2studio6\r_config",
    "C:\Renesas\AmazonFreeRTOS\amazon-freertos-1.0.0\demos\renesas\rx231-rsk\e2studio6\r_rspi_rx",
    "C:\Renesas\AmazonFreeRTOS\amazon-freertos-1.0.0\demos\renesas\rx231-rsk\e2studio6\r_rspi_rx\src",
    "C:\Renesas\AmazonFreeRTOS\amazon-freertos-1.0.0\demos\renesas\rx231-rsk\e2studio6\r_pincfg"

    そこで、以下の通りにインクルードパスを修正しました。(.\は明示的に書く必要はありませんが修正箇所を分かり易くする為に付けました。)

    .
    ..\common\config_files
    ..\common\application_code
    ..\common\application_code\renesas_code
    ..\..\..\..\demos\common\include
    ..\..\..\..\lib\include
    ..\..\..\..\lib\include\private
    ..\..\..\..\lib\FreeRTOS\portable\Renesas\RX600v2
    ..\..\..\..\lib\third_party\jsmn
    ..\..\..\..\lib\third_party\pkcs11
    ..\..\..\..\lib\third_party\mbedtls\include
    .\src
    .\src\cg_src
    .\r_bsp
    .\r_config
    .\r_rspi_rx
    .\r_rspi_rx\src
    .\r_pincfg

    以下、画面コピーです。

    e2 studioのプロジェクトのインクルードパス


    修正前のCS+のプロジェクトのインクルードパス


    修正後のCS+のプロジェクトのインクルードパス


    ProjectNameはaws_demosですので注意


    なお、CS+でも、理由は異なりますが、メイク機能が誤動作して毎回全ビルドになってしまうトラブルが発生しましたので、以下の通りにプロジェクトの設定を変更しました。(e2 studioのプロジェクトも、トラブルを解決出来ましたので、zipファイルに固めて後ほど投稿します。ちなみに、原因は自分の作業ミスでした。)

    [インクルード・ファイルが存在しないソースの扱い] を [再コンパイル/アセンブルしない] に変更


  • こんにちは。NoMaYです。

    Amazon FreeRTOSのDemoプロジェクトで、無理矢理作ってみたとは言え、それなりにCC-RXでコンパイルが進むようになったe2 studio v6とCS+ for CCのプロジェクトを以下のzipファイルに固めてみました。なお、以下のzipファイルでは、以前の投稿のaws_demos_renesas_rx_mcu_experiment_20171218.zipで発生していたメイク機能が誤動作して毎回全ビルドになってしまうトラブルを解決したe2 studio v6のプロジェクトに修正して、その時の「他から持って来たソース」と一緒に固めています。(また、その時から追加のソースは無いです。)

    aws_demos_renesas_rx_mcu_experiment_20171224.zip

    CS+のプロジェクトファイルは以下のフォルダに置きました。



    なお、先ほどの以前の投稿のaws_demos_renesas_rx_mcu_experiment_20171218.zipと同じく、このzipファイルでもFITやコード生成機能で生成されたソースを削除してフォルダのみ残しました。その為、CS+のプロジェクトでは、それらのフォルダのソースについては以下のようにビルドから除外しました。(e2 studioではソースが無ければ単に無いというだけですが、CS+ではソースが無いとエラーが発生するので以下のようにしました。)



    手元でビルドした時のビルドログは以下の通りです。(上に添付したzipファイルのプロジェクトではCC-RX V2.07を使う設定になっていますが、当方特有の事情でCC-RX V2.03でビルドした時のものです。ちょっと紛らわしいですが、この時にはFITやコード生成機能で生成されたソースともどもビルドしていました。)

    aws_demos_renesas_rx_mcu_experiment_csp_build_log_20171224.zip



    aws_demos_renesas_rx_mcu_experiment_e2studio6_build_log_20171224.zip


  • こんにちは。NoMaYです。

    GitHubのAmazon FreeRTOSのソースコードがV1.1.0になり、Microchip Curiosity PIC32MZEFのソースが追加されたり、OTA Agentのベータ版が追加されたり、といった変更が行われていました。

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

    Amazon FreeRTOS V1.1.0 変更点
    github.com/aws/amazon-freertos/blob/master/change_log.txt
    以下、その一部です。

    OTA Agent V0.9.0
        Beta release of OTA Update library for Amazon FreeRTOS. Includes support
    for the Texas Instruments CC3220SF-LAUNCHXL and Windows Simulator.

    ちなみに、Amazon FreeRTOSのソースコードに含まれる各半導体メーカのHALやBSPなどのライセンスは以下のようになっていました。(それぞれの後に続く免責の文面はリンク先のソースを参照して下さい。)

    Microchip Technology Inc.

    github.com/aws/amazon-freertos/blob/master/lib/third_party/mcu_vendor/microchip/harmony/v2.04/bsp/bsp.h

    Permission is hereby granted, free of charge, to any person obtaining a copy of 
    this software and associated documentation files (the "Software"), to deal in
    the Software without restriction, including without limitation the rights to
    use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
    of the Software, and to permit persons to whom the Software is furnished to do
    so, subject to the following conditions:
    The above copyright notice and this permission notice shall be included in all
    copies or substantial portions of the Software.

    ↑MITライセンス

    github.com/aws/amazon-freertos/blob/master/lib/third_party/mcu_vendor/microchip/harmony/v2.04/framework/driver/driver.h

    Microchip licenses to you the right to use, modify, copy and distribute
    Software only when embedded on a Microchip microcontroller or digital signal
    controller that is integrated into your product or third party product
    (pursuant to the sublicense terms in the accompanying license agreement).
    You should refer to the license agreement accompanying this Software for
    additional information regarding your rights and obligations.

    ↑独自ライセンス(ですがMicrochip社のMCUやDSCで使うのであれば使用、変更、複製、配布は出来る)

    NXP

    github.com/aws/amazon-freertos/blob/master/lib/third_party/mcu_vendor/nxp/LPC54018/project_template/board.h

     * Redistribution and use in source and binary forms, with or without modification,
     * are permitted provided that the following conditions are met:
     *
     * o Redistributions of source code must retain the above copyright notice, this list
     *   of conditions and the following disclaimer.
     *
     * o Redistributions in binary form must reproduce the above copyright notice, this
     *   list of conditions and the following disclaimer in the documentation and/or
     *   other materials provided with the distribution.
     *
     * o Neither the name of the copyright holder nor the names of its
     *   contributors may be used to endorse or promote products derived from this
     *   software without specific prior written permission.

    ↑三条項BSDライセンス

    STMicroelectronics

    github.com/aws/amazon-freertos/blob/master/lib/third_party/mcu_vendor/st/stm32l475_discovery/BSP/B-L475E-IOT01/stm32l475e_iot01.h

      * Redistribution and use in source and binary forms, with or without
      * modification, are permitted, provided that the following conditions are met:
      *
      * 1. Redistribution of source code must retain the above copyright notice,
      *    this list of conditions and the following disclaimer.
      * 2. Redistributions in binary form must reproduce the above copyright notice,
      *    this list of conditions and the following disclaimer in the documentation
      *    and/or other materials provided with the distribution.
      * 3. Neither the name of STMicroelectronics nor the names of other
      *    contributors to this software may be used to endorse or promote products
      *    derived from this software without specific written permission.
      * 4. This software, including modifications and/or derivative works of this
      *    software, must execute solely and exclusively on microcontroller or
      *    microprocessor devices manufactured by or for STMicroelectronics.
      * 5. Redistribution and use of this software other than as permitted under
      *    this license is void and will automatically terminate your rights under
      *    this license.

    ↑三条項BSDライセンスにSTMicroelectronics社のMCUやMPUでしか使ってはいけませんという条項を付けたもの

    github.com/aws/amazon-freertos/blob/master/lib/third_party/mcu_vendor/st/stm32l475_discovery/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal.h

      * Redistribution and use in source and binary forms, with or without modification,
      * are permitted provided that the following conditions are met:
      *   1. Redistributions of source code must retain the above copyright notice,
      *      this list of conditions and the following disclaimer.
      *   2. Redistributions in binary form must reproduce the above copyright notice,
      *      this list of conditions and the following disclaimer in the documentation
      *      and/or other materials provided with the distribution.
      *   3. Neither the name of STMicroelectronics nor the names of its contributors
      *      may be used to endorse or promote products derived from this software
      *      without specific prior written permission.

    ↑三条項BSDライセンス

    Texas Instruments

    github.com/aws/amazon-freertos/blob/master/lib/third_party/mcu_vendor/ti/SimpleLink_CC32xx/v1_40_01_00/source/ti/boards/CC3220SF_LAUNCHXL/Board.h

     * Redistribution and use in source and binary forms, with or without
     * modification, are permitted provided that the following conditions
     * are met:
     *
     * *  Redistributions of source code must retain the above copyright
     *    notice, this list of conditions and the following disclaimer.
     *
     * *  Redistributions in binary form must reproduce the above copyright
     *    notice, this list of conditions and the following disclaimer in the
     *    documentation and/or other materials provided with the distribution.
     *
     * *  Neither the name of Texas Instruments Incorporated nor the names of
     *    its contributors may be used to endorse or promote products derived
     *    from this software without specific prior written permission.

    ↑三条項BSDライセンス

  • こんにちは。NoMaYです。

    ウェブで調べ物をしていて、github.ioにYutaka Katoさんという人が『STM32L4 Discovery Kit IoT Node に Amazon FreeRTOS を導入する』という投稿をされていることに気付きました。「Amazon FreeRTOS」と「AWS IoT」を始めるやり方を知るのに役立ちそうでしたので、リンクを投稿してみました。

    STM32L4 Discovery Kit IoT Node に Amazon FreeRTOS を導入する - Yutaka Kato
    mikan.github.io/2017/12/13/setup-amazon-freertos-on-stm32l4-discovery-kit-iot-node/

    少し調べてみたのですが、クラウド側には、Amazon FreeRTOSのダウンロードページの他には、Amazon FreeRTOS専用のサービスが用意されている訳ではなくて、既存のAWS IoT / AWS IoT Coreというものを使うらしいです。

    AWS IoT Core
    aws.amazon.com/jp/iot-core/
    aws.amazon.com/jp/iot-core/features/
    aws.amazon.com/jp/iot-core/pricing/
    aws.amazon.com/jp/iot-core/getting-started/ ← ルネサスさんのYRDKRX63Nも載ってました(MicriumのRTOSを使う)
    aws.amazon.com/jp/iot-core/resources/

    [関連リンク]

    Micrium/Renesas AWS IoT Getting Started
    github.com/micrium/awsiot

    [余談]

    別スレッドでも引用したデータ(ちょっと古い)ですが、EE TimesというところとUBM Electronicsというところが、2015年(と2014年)にアンケート調査(だと思う)した結果の各RTOS(というかRTOSでは無いものも込みで)のシェアだそうです。(なお、Micriumの広報とEE Timesの記事の中に含まれていたものです。)

    2015 UBM Electronics study

    広報タイトル: Micrium RTOS Kernels are #1 in 2015 — UBM Survey
    調査結果: www.micrium.com/ubm2015/#foobox-1/0/ubm_os_in_use.png

    2015 EE Times study (同じデータのようです)

    記事タイトル: ARM Flexes Mbed, RTOSes Respond (EE Times 2015/11/13)
    調査結果: www.eetimes.com/document.asp?doc_id=1328259&image_number=1

    2015年のデータで言えば FreeRTOS+Micrium(uC/OS-II)+Micrium(uC/OS-III)=22%+19%+8%=49% になりますね。

    [追記]

    あと、Amazonの「AWS IoT Coreの開始方法」のスターターキットの一覧と「UBM Survey」 / 「EE Times study」の両方に名前が載っているRTOSとしてTI-RTOSもありました。これは2015年のデータで言えば3%になってました。

  • NoMaYさん

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

    非常に貴重な素材提供をいただき、ありがとうございます。

    わたしもRXマイコンでAmazon FreeRTOSを動かす活動を進め始めました。
    NoMaYさんに作っていただいた「aws_demos_renesas_rx_mcu_experiment_20171224.zip」・・・(1)で
    NoMaYさんのビルドログ「aws_demos_renesas_rx_mcu_experiment_e2studio6_build_log_20171224.zip」と同じ状態まで進みました。

    全体を見渡してみると、ネットワーク層とのつながり部分が課題と思われます。

    これに対してはどうにかネットワーク層のR/W関数を特定してそれを既存のデータリンク層の
    ドライバにつないであげればよいと思っています。
    このため、少しこちらでも、FreeRTOS-Plus-TCP単体をRXマイコンボードで動かすことを試みてみます。
    NoMaYさん側では、(1)にFreeRTOS+TCPも含むようNoMaYさん側で検討いただけないですか?

    ビルドログを見ると、TCP/IP部分の実装である「\amazon-freertos-1.0.0\lib\FreeRTOS-Plus-TCP」が
    含まれていませんね。流用元のSTの環境ではWiFiモジュール側のTCP/IP機能を使っているのでは、
    と推測します。量産製品を想定してコストカットを目指す場合は、モジュール側にTCP/IPを載せるのではなく、
    MCU側に載せます。Amazon FreeRTOSもTCP/IP層を含んでいるということは、
    最終的には「RTOSへのTCP/IP機能の取り込み」を目指しているのだと思っています。
    まず私はRX65N Envision Kitの有線Etherでの実験を試みます。RX65N Envision Kitで有線Etherを使うためには
    部品増設が必要です。私の手持ちは増設して、ルネサス標準のEtherドライバを組み込んでデータパケットの
    入出力ができる状態には出来ました。あとはFreeRTOS+TCPのR/W部分とうまく結合してあげれば課題解決と思っています。

    あと最終的には村田製作所Type 1FXでSDIO無線LANを実現しようと思っています。Type 1FXの開発キットは購入済みです。1世代前のType ZXではSDIO無線LANをFreeRTOS上で実現したことがあるので、たぶん行けると思っています。RX65N(SDHI)+Type 1FXの構成でネットワークスタックはすべてRX65N側に持たせる感じですね。RX65N Envision KitのSDスロットにこの開発キットを挿せば物理的には正しく接続されます。
    www.digikey.jp/.../6612483

    RX65N Envision KitでSDカード、SDIOデバイスを使うためには、部品増設が必要です。
    私の手持ちは増設して、ルネサス標準のSDHIドライバ、SDメモリカードドライバ、ファイルシステムを
    組み込んで、ファイルの読み書きができる状態には出来ました。
    SDIOもドライバソフト開発用の素材はそろっている状態で、あとはなんとかなるかな、という感触がある状態です。

    #量産向け本格仕様ではなく、コミュニティ向けだとNoMaYさんがおっしゃるように、
     GR-CITRUS(RX631)ボード+WA-MIKAN(ESP8266)ボードが最適と思いますのでこちらも追々対応できればと思います。

    また何か進捗がありましたら、共有させてください。
    私の次の1手は、RX65N Envision KitでFreeRTOS+TCP単体を有線Etherで動作させることです。
    (その前に散らかった自分の部屋の掃除もしなければ)

    以上です