こんにちは。NoMaYです。ライセンスはMIT Licenseでした。TLSとしてmbed TLSが使用されていました。サポートされているボードの写真を見ていたら、どれにも有線LANコネクタが無いことに気付きました。時代の流れでしょうか、、、Getting Started with Amazon FreeRTOSaws.amazon.com/freertos/getting-started/Amazon FreeRTOSaws.amazon.com/freertos/Amazon FreeRTOS ソースコードgithub.com/aws/amazon-freertos[関連リンク]FreeRTOS - freertos.orgwww.freertos.org/FreeRTOS - sourceforge.netsourceforge.net/projects/freertos/files/FreeRTOS kernel自体はCC-RXにも対応github.com/aws/amazon-freertos/tree/master/lib/FreeRTOS/portable/RenesasAmazon FreeRTOSはTLSにmbed TLSを使用github.com/aws/amazon-freertos/tree/master/lib/third_party/mbedtls[ニュース]組み込み業界に大インパクト「Amazon FreeRTOS」の衝撃 - 大原雄介,MONOistmonoist.atmarkit.co.jp/mn/articles/1712/28/news011.htmlアマゾン「AWS IoT」は何が衝撃的なのか - 大原雄介,MONOistmonoist.atmarkit.co.jp/mn/articles/1510/21/news026.html(2018/01/01 : 記事を選び直しました。)[追記]もしかしたら、オープンソースライセンスのドライバライブラリが用意されていないから、ルネサスさんはアマゾンさんに相手にして貰えないのかも、、、ちなみに、FreeRTOS kernel自体のライセンスがV10からModified GPLからMIT Licenseに変わったようです。
わわいさん、こんにちは。NoMaYです。あっ、確かにFreeRTOS kernelのソースのCopyright (C)がAmazon.com, Incになってますね。そこまでは気付かなかったです。ところで、ソースをDLしようとしてクレジットカード番号を要求されたというURLはどこでしょうか?(ひょっとして、私、Amazon FreeRTOSのソースについて勘違いしているのかな、、、)github.com/aws/amazon-freertos/blob/master/lib/FreeRTOS/tasks.c
* FreeRTOS Kernel V10.0.0 * Copyright (C) 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.
sourceforge.net/p/freertos/code/HEAD/tree/trunk/FreeRTOS/Source/tasks.c
こんにちは。NoMaYです。ウェブで調べ物をしていて、Qiitaというサイトにeggmanさんという人が『FreeRTOS V9.0.0のAPI一覧』と『Amazon FreeRTOSのAPI一覧』という2つの投稿をされていることに気付きました。「FreeRTOS」と「Amazon FreeRTOS」で何が違うのか知るのに役立ちそうでしたので、リンクを投稿してみました。FreeRTOS V9.0.0のAPI一覧 - eggmanqiita.com/eggman/items/8af5d3719977f71d3bbfAmazon FreeRTOSのAPI一覧 - eggmanqiita.com/eggman/items/687f318cf5d391c3d47a[関連リンク]ちなみに、ルネサスさんでFreeRTOSを検索すると以下のものが見つかりました。(欧州と米国は同じ検索結果のようでした。他の地域は検索しませんでした。)ドキュメント検索: FreeRTOS日本(Japan)www.renesas.com/ja-jp/search/keyword-search.html#genre=document&q=FreeRTOS
RX62Nグループ OSアダプタレイヤー: RI-600 とFreeRTOS (TM) の点滅デモンストレーションMar.22.13 Rev.1.02 6.53 Mbytes R01AN0765JS0102 アプリケーションノート RX62Nグループ RI600とFreeRTOS (TM) 用のユーザーマニュアルおよびAPI 仕様Mar.05.12 Rev.1.00 4.09 Mbytes R01AN0766JS0100 アプリケーションノート
欧州(Europe/Middle East/Africa)www.renesas.com/en-eu/search/keyword-search.html#genre=document&q=FreeRTOS
RZ/A1H Group Renesas Starter Kit+ FreeRTOS Sample Code for e2 studioOct.14.16 Rev.1.00 574.69 Kbytes R01AN3087EG0100 Application Notes RX62N Group RX62N Multimedia Demonstration on RI600 & FreeRTOS (TM)Sep.05.12 Rev.1.02 1.48 Mbytes R01AN0764ES0102 Application Notes RX62N Group OS Adaptor Layer: RI-600 and FreeRTOS (TM) Blinky DemonstrationSep.05.12 Rev.1.02 2.58 Mbytes R01AN0765ES0102 Application Notes RX62N Group OS Adaptor Layer: User Manual and API Specification for RI600 & FreeRTOS (TM)Oct.11.11 Rev.1.00 4.04 Mbytes R01AN0766ES0100 Application Notes
米国(America)www.renesas.com/en-us/search/keyword-search.html#genre=document&q=FreeRTOS
サンプルプログラム検索: FreeRTOS日本(Japan)www.renesas.com/ja-jp/search/keyword-search.html#genre=sampleprogram&q=FreeRTOS
RX231 Group Serial Transfer Demo using RX real-time OS PackageMar.31.17 Source, Project( Firmware Integration Technology(FIT) / FreeRTOS )( e2 studio project / CC-RX ) RX64M Group Network echo server application using RX real-time OS PackageSep.30.16 Source, Project( e2 studio project / CC-RX ) RX62Nグループ OSアダプタレイヤー: RI-600 とFreeRTOS (TM) の点滅デモンストレーションMar.22.13 C source
欧州(Europe/Middle East/Africa)www.renesas.com/en-eu/search/keyword-search.html#genre=sampleprogram&q=FreeRTOS
RX231 Group Serial Transfer Demo using RX real-time OS PackageMar.31.17 Source, Project( Firmware Integration Technology(FIT) / FreeRTOS )( e2 studio project / CC-RX ) RZ/A1H Group Renesas Starter Kit+ FreeRTOS Sample Code for e2 studioOct.14.16 Source, Project( e2 / GNUARM-NONE ) RX64M Group Network echo server application using RX real-time OS PackageSep.30.16 Source, Project( e2 studio project / CC-RX ) RX62N Group RX62N Multimedia Demonstration on RI600 & FreeRTOS™Sep.05.12 C source RX62N Group OS Adaptor Layer: RI-600 and FreeRTOS™ Blinky DemonstrationSep.05.12 C source
米国(America)www.renesas.com/en-us/search/keyword-search.html#genre=sampleprogram&q=FreeRTOS
[追記]この際ですので、FreeRTOSのサイトでルネサスさんを検索してみました。FreeRTOSサイト内検索: Renesascse.google.com/cse?cx=partner-pub-1432383574659805%3Az8fglgeedjr&q=Renesas
こんにちは。NoMaYです。FreeRTOSのサイトを見ていて、Amazon FreeRTOSでサポートされているボードが以下の半導体メーカのものであった理由に気付きました。そもそものFreeRTOSの「パートナー」さんだったからですね、、、Microchip Technology IncorporatedCuriosity PIC32MZ EF Development Board (Coming Soon)NXP SemiconductorsLPC54018 IoT ModuleSTMicroelectronicsSTM32L4 Discovery Kit IoT NodeTexas InstrumentsSimpleLink™ Wi-Fi® CC3220SF Wireless Microcontroller LaunchPad™ Development Kitwww.freertos.org/FreeRTOS-V10.html
こんにちは。NoMaYです。SEGGERによるcross-platform Embedded Studioとthe market leading J-LinkでのAmazon FreeRTOSデバッグ環境だそうです。このスレッドの最初の投稿に書いたAmazon FreeRTOSのGitHubのソースに対して、以下のウェブページのSEGGERのパッケージのソースでは以下のフォルダが追加されていました。(デモプログラムのソースの修正も若干ありました。) SEGGERはFreeRTOSの「パートナー」では無かったので自前でやった、というところでしょうか、、、amazon-freertos-es-1.0.0\amazon-freertos-1.0.0\demos\nxp\lpc54018_iot_module\es\amazon-freertos-es-1.0.0\amazon-freertos-1.0.0\demos\nxp\lpc54018_iot_module\common\application_code\segger\amazon-freertos-es-1.0.0\amazon-freertos-1.0.0\lib\third_party\mcu_vendor\nxp\LPC54018\es\amazon-freertos-es-1.0.0\amazon-freertos-1.0.0\demos\st\stm32l475_discovery\es\amazon-freertos-es-1.0.0\amazon-freertos-1.0.0\demos\st\stm32l475_discovery\common\application_code\segger\amazon-freertos-es-1.0.0\amazon-freertos-1.0.0\lib\third_party\mcu_vendor\st\stm32l475_discovery\es\SEGGER Support for Amazon Web Services and Amazon FreeRTOSwww.segger.com/aws/ソースの比較結果ちなみに、Amazon FreeRTOSのGitHubのソース(およびSEGGERのパッケージのソース)には、以下のフォルダがありましたので、自前でボードを追加する時は同様にやって下さい、ということのようです、、、amazon-freertos-1.0.0\demos\vendor\amazon-freertos-1.0.0\lib\third_party\mcu_vendor\vendor\amazon-freertos-1.0.0\lib\wifi\portable\vendor\ [2017/12/12 追記]amazon-freertos-1.0.0\lib\secure_sockets\portable\vendor\ [2017/12/19 追記]amazon-freertos-1.0.0\lib\pkcs11\portable\vendor\ (未追加?) [2017/12/19 追記]なお、以下のフォルダにはEclipseでお馴染みの.projectファイルと.cprojectファイルがありました。amazon-freertos-1.0.0\demos\st\stm32l475_discovery\ac6\amazon-freertos-1.0.0\demos\ti\cc3220_launchpad\ccs\
こんにちは。NoMaYです。1つ前の投稿の最後でAmazon FreeRTOSのGitHubのソースのDemoフォルダの中を少し見てみたのですが、このスレッドの最初の投稿に書いたsourceforge.netのFreeRTOS kernelのソースのDemoフォルダの中も少し見てみました。なお、FreeRTOS kernelのルネサスマイコンでのDemoプログラムは、上の画面コピーのものだけでは無く、全部で以下のものがあるようです。www.freertos.org/a00090.html#RENESAS
こんにちは。NoMaYです。Amazon FreeRTOSのDemoプロジェクトがEclipseの仮想フォルダやリンクされたフォルダという機能を使ったプロジェクトのようでしたので、以下の手順でDemoプロジェクトがどんな感じのものであるか分かるようなe2 studio (v6.1.0)のプロジェクトを無理矢理作ってみました。(ちなみに、まだ全くコンパイル出来ません。([追記] 2017/12/20 「全くコンパイル出来なかった」と言うよりは「全くコンパイルが行われなかった」と言うべきだった気がします。) 後日、プロジェクトの設定を詰めてみようかとは思っています。もっとも、MCU依存部やボード依存部を作らないとリンク出来ませんが、、、)aws_demos_renesas_rx_mcu_experiment_20171210.zip内容:.project.cprojectaws_demos.mtpjaws_demos.rcpcaws_demos.rcpe(1) 以下のフォルダを(下位階層も含めて)追加する作成するフォルダ: (下位階層については下の方の画面コピーを参照して下さい)amazon-freertos-1.0.0\demos\renesas\amazon-freertos-1.0.0\lib\third_party\mcu_vendor\renesas\(2) 以下のファイルを(1)で追加した以下のフォルダにコピーするコピー元のファイル:amazon-freertos-1.0.0\demos\st\stm32l475_discovery\ac6\.projectFreeRTOSv10.0.0\FreeRTOS\Demo\RX200_RX231-RSK_Renesas_e2studio\.cprojectFreeRTOSv10.0.0\FreeRTOS\Demo\RX200_RX231-RSK_Renesas_e2studio\.infoコピー先のフォルダ:amazon-freertos-1.0.0\demos\renesas\rx231-rsk\e2studio6\(3) コピーした.projectファイルをエディタで変更する変更前: (該当箇所のみ記載します) <natures> <nature>org.eclipse.cdt.core.cnature</nature> <nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature> <nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature> <nature>fr.ac6.mcu.ide.core.MCUProjectNature</nature> </natures>変更後: (該当箇所のみ記載します) <natures> <nature>org.eclipse.cdt.core.cnature</nature> <nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature> <nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature> <nature>com.renesas.cdt.core.kpitcnature</nature> <nature>com.renesas.cdt.core.kpitccnature</nature> </natures>(4) e2 studioを起動してワークスペースフォルダとして以下のフォルダを指定するamazon-freertos-1.0.0\demos\renesas\(5) e2 studioが起動したら以下のプロジェクトを「既存プロジェクトをワークスペースへ」でインポートするaws_demos(親フォルダ\amazon-freertos-1.0.0\demos\renesas\rx231-rsk\e2studio6)(6) インポートしたaws_demosプロジェクトを「古い e2studio プロジェクトを更新...」で更新するこれにより自動的に削除されるファイル:amazon-freertos-1.0.0\demos\renesas\rx231-rsk\e2studio6\.info以下、画面コピーです。なお、この際だと思い、e2 studioでCS+向けルネサス共通プロジェクトファイル(rcpc)をエクスポートして、CS+ for CC V6.00.00(2017/10/05版)でインポートしてみましたが、プロジェクトの構造が変わってしまっていました。(後日、調査してみようとは思っています。こちらも、まだ全くコンパイル出来ません。([追記] 2017/12/20 こちらは「全くコンパイルが行われなかった」訳では無くて「全くコンパイル出来なかった」の方です。) もちろん、MCU依存部やボード依存部を作らないとリンク出来ませんが、、、)ちなみに、プロジェクトの設定を詰めてコンパイル出来るようになったら、以下のボードなどで使われているRX65NへMCUを変更することも出来るだろうと考えています。RX65N Envision Kit (RS Componentsでも販売開始されたようです。(私が注文したものは週末にMouserから届きました。))www.renesas.com/ja-jp/products/software-tools/boards-and-kits/renesas-promotion-boards/rx65n-envision-kit.htmlRX65N Wi-Fi Cloud Connectivity Kit (今のところ日本からは購入出来ないようです。技適の関係でしょうか?将来は?)www.renesas.com/en-us/solutions/key-technology/connectivity/wi-fi/rx65n-wi-fi-kit.html[追記]そういえば、mbed OSとは異なり、C言語ベースですね。(mbed OSはC++言語ベースでした。)
こんにちは。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 IncorporatedCuriosity PIC32MZ EF Development Board (Coming Soon)⇒WiFi 7 click carries the ATWINC1510-MR210PB IEEE 802.11 b/g/n modulewww.mikroe.com/wifi-7-click使用可能な接続方法 : SPIAmazon FreeRTOSのGitHubのソースにコードが全く含まれていない為、それ以上は調査しませんでしたNXP SemiconductorsLPC54018 IoT Module⇒Longsys GT1216 Wi-Fi (IEEE 802.11b/g/n) module based on Qualcomm QCA4004www.longsys-iot.com/portfolio/gt1x16/使用可能な接続方法 : UART, SPI, GPIOAmazon FreeRTOSのGitHubのソースでの接続方法 : SPI (たぶん)Amazon FreeRTOSのGitHubのソース : amazon-freertos-1.0.0\lib\wifi\portable\nxp\lpc54018_iot_module\aws_wifi.camazon-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.*STMicroelectronicsSTM32L4 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, SPIAmazon FreeRTOSのGitHubのソースでの接続方法 : SPI (たぶん)Amazon FreeRTOSのGitHubのソース : amazon-freertos-1.0.0\lib\wifi\portable\st\stm32l475_discovery\aws_wifi.camazon-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 InstrumentsSimpleLink™ 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.htmlZephyr (公式)docs.zephyrproject.org/api/io_interfaces.htmlT-Engine (公式)www.tron.org/ja/wp-content/themes/dp-magjam/pdf/specifications/ja/TEF040-S216-01.00.01_ja.pdfwww.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 NEWSwww.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.cdemos\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/threadCS+が生成した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\.cprojectamazon-freertos-1.0.0\demos\ti\cc3220_launchpad\ccs\.cprojectamazon-freertos-1.0.0\demos\nxp\lpc54018_iot_module\iar\aws_demos.ewpamazon-freertos-1.0.0\demos\pc\windows\visual_studio\aws_demos.vcxprojFreeRTOSv10.0.0\FreeRTOS\Demo\RX200_RX231-RSK_Renesas_e2studio\.cproject
■ 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=""${workspace_loc:/${ProjName}}""/> <listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/config_files}""/> <listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/application_code}""/> <listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/application_code/st_code}""/> <listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/application_code/common_demos/include}""/> <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}/lib/aws/FreeRTOS/portable/GCC/ARM_CM4F}""/> <listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/lib/third_party/jsmn}""/> <listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/lib/third_party/pkcs11}""/> <listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/lib/third_party/mbedtls/include}""/> <listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/lib/third_party/mcu_vendor/st/stm32l475_discovery/STM32L4xx_HAL_Driver/Inc}""/> <listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/lib/third_party/mcu_vendor/st/stm32l475_discovery/STM32L4xx_HAL_Driver/Inc/Legacy}""/> <listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/lib/third_party/mcu_vendor/st/stm32l475_discovery/CMSIS/Include}""/> <listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/lib/third_party/mcu_vendor/st/stm32l475_discovery/CMSIS/Device/ST/STM32L4xx/Include}""/> <listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/lib/third_party/mcu_vendor/st/stm32l475_discovery/BSP/B-L475E-IOT01}""/> <listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/lib/third_party/mcu_vendor/st/stm32l475_discovery/BSP/Components/Common}""/> <listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/lib/third_party/mcu_vendor/st/stm32l475_discovery/BSP/Components/hts221}""/> <listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/lib/third_party/mcu_vendor/st/stm32l475_discovery/BSP/Components/lis3mdl}""/> <listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/lib/third_party/mcu_vendor/st/stm32l475_discovery/BSP/Components/lps22hb}""/> <listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/lib/third_party/mcu_vendor/st/stm32l475_discovery/BSP/Components/lsm6dsl}""/> <listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/lib/third_party/mcu_vendor/st/stm32l475_discovery/BSP/Components/vl53l0x}""/> <listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/lib/third_party/mcu_vendor/st/stm32l475_discovery/BSP/Components/es_wifi}""/> </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=""${TCINSTALL}/include""/> <listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/src/Full_Demo}""/> <listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/src/Full_Demo/Standard_Demo_Tasks/include}""/> <listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/src/Renesas_Code}""/> <listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/src/FreeRTOS_Source/portable/Renesas/RX600v2}""/> <listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/src/FreeRTOS_Source/include}""/> <listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/src}""/> </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\.cprojectamazon-freertos-1.0.0\demos\ti\cc3220_launchpad\ccs\.cprojectamazon-freertos-1.0.0\demos\nxp\lpc54018_iot_module\iar\aws_demos.ewpamazon-freertos-1.0.0\demos\pc\windows\visual_studio\aws_demos.vcxprojFreeRTOSv10.0.0\FreeRTOS\Demo\RX200_RX231-RSK_Renesas_e2studio\.cproject
■ 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) 試しにコード生成機能でコード生成させてみた試しです。