Generic Content

かふぇるね“ はルネサス製品に対して自由に会話をするツールとなります。(回答者はルネサス社内外の方たちとなります) その為ルネサス製品やソリューションに対して正式な回答をご希望の場合はMyRenesasのTicketシステムを使用するようにお願いいたします。 

プリプロセッサー組み込みが見つかりません

こんにちは。よこです。

wifiドライバをプロジェクトにインクルードしたら、以下のエラーが発生しました。

改善方法についてご教授願えないでしょうか。

  • よこさん

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

    私がRX用のwifiドライバ設計しました。お手数おかけしております。

    どのようなプロジェクトにwifiドライバをインクルードされたか情報いただけますか?

    こちらでは以下のようにプロジェクト新規作成→wifiドライバをスマートコンフィグレータでインクルード、としてみたところ特に問題ありませんでした。

    step1) プロジェクト新規作成でFreeRTOSを選ぶ(wifiドライバがFreeRTOSかAzure RTOSに依存)

    step2) スマートコンフィグレータでwifiドライバをインポート。そのままビルドするとwifiドライバがSCIのTEI(送信完了割込み)を利用しているのでSCIの設定を見直すようエラーがでるので、スマートコンフィグレータ上でSCIのTEIをEnableにする。ビルド→OK。

    以上です

  • シェルティさん

    こんにちは。 よこです。

    幾度も支援していただき誠にありがとうございます。

    適応しようとしているプロジェクトはアプリケーションノート"RX65N における Amazon Web Services を利用した FreeRTOS OTA の実現方法"のサンプルコードです。

    目的: rx65n starter kitとwifi pmod expansion boardを使ってwifiを用いたOTAをしようと考えております。

  • よこさん

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

    情報ありがとうございます。ちょっとガイドを作ってみます。

    以下AWS認証がとれているボード・機能の組み合わせリストです。

    https://github.com/renesas/amazon-freertos/wiki/%E5%8B%95%E4%BD%9C%E7%A2%BA%E8%AA%8D%E7%8A%B6%E6%B3%81

    ご要望のRX65N Starter Kitとwifi pmod expansion board (https://www.renesas.com/jp/ja/products/microcontrollers-microprocessors/ra-cortex-m-mcus/wi-fi-pmod-expansion-board-80211bgn-24g-wi-fi-pmod-expansion-board) の組み合わせは認証取れていませんが、実際はピン設定を少しスマートコンフィグレータで調整すればどのボードでも動きます。OTAの有無も然りですね。現在開発中ですがRYZ014A (https://www.renesas.com/jp/ja/products/interface-connectivity/wireless-communications/cellular-iot-modules/ryz014a-lte-cat-m1-cellular-iot-module) というセルラーモジュールでもRX65NにAmazon FreeRTOS搭載し、OTA普通に動きました。

    ただ、RXマイコンに慣れていないと「ピン設定少し」に数時間かかってしまったりすると思うのでこのあたりをスマートコンフィグレータ上でボードと接続タイプ(ether/wifi/cellularなど)を選択するだけで自動でボードに合わせて「ピン設定少し」を自動でできるよう改善を進めています。が、道半ばなのでガイド作ってみます。

    以上です

  • シェルティさん

    よこです。こんにちは。

    ご返信していただきありがとうございます。

    自分でも、wifiモジュールの導入をやってみます。

    恐縮ですが、ガイド作成お願いいたします。

  • よこさん

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

    本件すみません、2/23に続報します。週末に実験してみて、Amazon FreeRTOS v202002.00-rx-1.0.5 のRX65N Cloud Kit (wifi)のプロジェクトを「ピン設定少し」実施してRX65N RSKでの動作を試してみましたが、OTA(wifi経由)での新しいファームのダウンロードまではOKでリブート後デュアルバンクがひっくり返って新しいファームが有効になるところで何故かフリーズしてしまいました。

    よくよく試験結果表を確認したところwifi環境でOTA込みで正しく動作した記録が残っているのは v202012.00-rx-1.0.0でした。v202002.00-rx-1.0.5はwifi環境でOTA込みだと不完全なようです。

    https://github.com/renesas/amazon-freertos/releases/tag/v202012.00-rx-1.0.0

    これをベースにガイドを作ってみます。

    なお、wifiモジュール用の端子設定は実際にやってみたところ結構難儀だったのでガイドをお待ちいただくのが良いかもしれません。

    以上です

  • シェルティさん

    こんにちは。よこです。

    ご対応していただき誠にありがとうございます。

    かしこまりました。

    よろしくお願いいたします。

  • よこさん

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

    v202012.00-rx-1.0.0のRX65N Cloud Kit  Amazon FreeRTOS OTAの環境をRX65N RSKに移植して動作確認してみましたが、先に報告した現象(新しいファームのダウンロードまではOKでリブート後デュアルバンクがひっくり返って新しいファームが有効になるところで何故かフリーズ)が発生しました。

    この組み合わせ、残念ながら弊社でも動作検証を終えてないので、仮に問題を回避して動くようになったとしても都度何かおかしなことが発生してしまう可能性があります。

    提案なのですが、wifi環境を試される場合、RX65N Cloud Kitをご利用いただく、というのはどうでしょうか。

    v202012.00-rx-1.0.0でRX65N Cloud Kitであればwifi環境でOTAの改善動作を確認しました。

    次の投稿で一応今回試した内容を書き記しておきます。ご期待に沿えずすみません。

    以上です

  • ■目的
    RX65N RSK wifi環境(PMODコネクタにSilex社のSX-ULPGN搭載のPMOD wifi expansion boardを挿す)で
    Amazon FreeRTOS OTAの動作確認を行う

    ■環境
    e2 studio 2022-01
    CC-RX V304
    Amazon FreeRTOS v202012.00-rx-1.0.0
    Renesas Secure Flash Programmer v1.0.1

    ■操作手順
    (1)プロジェクトインポート
    e2 studioのimport projectで "Renesas GitHub FreeRTOS (with IoT Libraries) Project" を選択
    Amazon FreeRTOSのバージョン v202012.00-rx-1.0.0 を選択
    aws_demos -> \projects\rx65n-cloud-kit-uart-sx-ulpgn\e2studio\aws_demos と
    boot_loader -> \projects\rx65n-cloud-kit-uart-sx-ulpgn\e2studio\boot_loader を選択しインポート

    (2)aws_demosとboot_loaderのセクション設定を保存
    プロジェクトエクスプローラのaws_demosで右クリック->プロパティを選択
    C/C++ビルド->設定->ツール設定->Linker->セクション->...ボタン->エクスポート->aws_demos.esiとして保存
    プロジェクトエクスプローラのboot_loaderで右クリック->プロパティを選択
    C/C++ビルド->設定->ツール設定->Linker->セクション->...ボタン->エクスポート->boot_loader.esiとして保存

    (3)コンパイラのバージョン変更
    プロジェクトエクスプローラのaws_demosで右クリック->プロパティを選択
    C/C++ビルド->設定->Toolchain
    ツールチェイン: Renesas CCRX
    バージョン: v3.04.00
    プロジェクトエクスプローラのboot_loaderで右クリック->プロパティを選択
    C/C++ビルド->設定->Toolchain
    ツールチェイン: Renesas CCRX
    バージョン: v3.04.00

    (4)ブートローダの設定
    boot_loader.scfg をダブルクリック
    ボードタブ
    Custom User Board -> RSKRX65N-2MB
    セクション設定が初期状態に戻るので、boot_loader.esiを読み込む
    -> プロジェクトエクスプローラのboot_loaderで右クリック->プロパティを選択
    C/C++ビルド->設定->ツール設定->Linker->セクション->...ボタン->インポート->boot_loader.esiを読み込み
    クロックタブ
    メインクロックに変更。後段のクロックが最速になるよう調整
    [USBシリアル関連の設定]
    コンポーネントタブ
    もし灰色のコンポーネントがあればダウンロードを選択(GitHubをサーチして足りないコンポーネントを自動でダウンロード/インストールする)
    r_sci_rx
    channel5: Include -> Not に変更
    channel8: Not -> Include に変更
    -> 画面下の方にスクロールしていき、SCI8の端子でRXD8とTXD8が「使用する」になっていることを確認
    端子タブ
    SCI8の設定、端子割当のところで、RXD8がPJ1、TXD8がPJ2になっていることを確認
    プロジェクトエクスプローラでboot_loader -> src -> smc_gen -> r_bsp_config.h を開く (スマートコンフィグレータ非対応の設定項目を手動設定必要)
    MY_BSP_CFG_SERIAL_TERM_SCI: 5 -> 8

    (5)アプリの設定
    aws_demos.scfg をダブルクリック
    ボードタブ
    Custom User Board -> RSKRX65N-2MB
    セクション設定が初期状態に戻るので、boot_loader.esiを読み込む
    -> プロジェクトエクスプローラのboot_loaderで右クリック->プロパティを選択
    C/C++ビルド->設定->ツール設定->Linker->セクション->...ボタン->インポート->aws_demos.esiを読み込み
    クロックタブ
    メインクロックに変更。後段のクロックが最速になるよう調整
    [USBシリアル関連の設定]
    コンポーネントタブ
    もし灰色のコンポーネントがあればダウンロードを選択(GitHubをサーチして足りないコンポーネントを自動でダウンロード/インストールする)
    r_sci_rx
    channel5: Include -> Not に変更
    channel8: Not -> Include に変更
    -> 画面下の方にスクロールしていき、SCI8の端子でRXD8とTXD8が「使用する」になっていることを確認
    端子タブ
    SCI8の設定、端子割当のところで、RXD8がPJ1、TXD8がPJ2になっていることを確認
    プロジェクトエクスプローラでaws_demos -> vendors -> renesas -> boards -> rx_mcu_boards -> rx65n-cloudkit -> aws_demos -> src -> smc_gen -> r_config -> r_bsp_config.h を開く
    (スマートコンフィグレータ非対応の設定項目を手動設定必要)
    MY_BSP_CFG_SERIAL_TERM_SCI: 5 -> 8

    [Wifiモジュール関連の設定]
    コンポーネントタブ
    もし灰色のコンポーネントがあればダウンロードを選択(GitHubをサーチして足りないコンポーネントを自動でダウンロード/インストールする)
    r_sci_rx
    channel0: Include -> Not に変更
    channel1: Include -> Not に変更
    channel6: Not -> Include に変更
    ASYNC mode TX queue buffer size for channel 0: 2180 -> 80
    ASYNC mode TX queue buffer size for channel 1: 2180 -> 80
    ASYNC mode TX queue buffer size for channel 6: 80 -> 2180
    ASYNC mode RX queue buffer size for channel 0: 4096 -> 80
    ASYNC mode RX queue buffer size for channel 1: 4096 -> 80
    ASYNC mode RX queue buffer size for channel 6: 80 -> 4096
    -> 画面下の方にスクロールしていき、SCI6の端子でRXD6とTXD6とCTS6#が「使用する」になっていることを確認
    注意: 操作手順通りの場合、CTS6# を「使用する」、SCK6を「使用しない」に変更が必要
    端子タブ
    SCI6の設定、端子割当のところで、RXD6とTXD6とCTS6#の「使用する」チェックを入れる
    注意: 操作手順通りの場合、SMISO6とSMOSI6の「使用する」チェックを外す変更が必要
    RXD6がP01、TXD6がP00、CTS6#がPJ3になっていることを確認
    -> 念のためボード回路図を確認し、上記設定の通りの回路になっていること確認
    www.renesas.com/.../rx65n-2mb-starter-kit-plus-renesas-starter-kit-rx65n-2mb
    Renesas Starter Kit+ for RX65N-2MB CPU Board Schematics
    プロジェクトエクスプローラでaws_demos -> vendors -> renesas -> boards -> rx_mcu_boards -> rx65n-cloudkit -> aws_demos -> src -> smc_gen -> r_config -> r_bsp_config.h を開く
    (スマートコンフィグレータ非対応の設定項目を手動設定必要)
    MY_BSP_CFG_SERIAL_TERM_SCI: 5 -> 8

    もう一度コンポーネントタブに戻る
    本バージョンで参照されているwifiドライバの r_wifi_sx_ulpgn v1.11 はGitHubにアップしていない試作版のため、
    aws_demos.scfg を直接改造してv1.13を参照させる
    プロジェクトエクスプローラのaws_demosを右クリック -> system explorer を開く
    e2 studioを一度閉じる
    aws_demos.scfgをテキストエディタで開く
    1069行名を以下のように変更
    id="r_wifi_sx_ulpgn1.11" version="1.11"
    id="r_wifi_sx_ulpgn1.13" version="1.13"
    e2 studioを起動
    もう一度 aws_demos.scfg をダブルクリックしスマートコンフィグレータのコンポーネントタブに戻る
    r_wifi_sx_ulpgn
    SCI Channel number for SX-ULPGN initial Command Port for AT command communication の値を 6 に変更(SCIチャネル6を使用してWIFIモジュール制御を行うという意味)
    SCI Channel number for SX-ULPGN second Command Port for AT command communication の値を 6 に変更(SCIチャネル6を使用してWIFIモジュール制御を行うという意味)
    General-purpose port PDR register connected to the SX-ULPGN EN pin の値を PORTD から PORTF に変更
    General-purpose port PODR register connected to the SX-ULPGN EN pin の値を 0 から 5 に変更
    注意: コメントがおかしい。修正中。SX-ULPGNのEN端子(POWER端子)の制御をRXマイコン側のポート何番で行うか、の設定項目。このボードではPF5端子を使う回路となっている。
    Configure RTS Port No. for WIFI_CFG_SCI_CHANNEL の値を PORT2 から PORT0 に変更
    Configure RTS Pin No. for WIFI_CFG_SCI_CHANNEL の値を 2 になっていること確認
    スマートコンフィグレータ上のコード生成ボタンを一度押しておく
    プロジェクトエクスプローラのaws_demosを右クリック -> system explorer を開く
    5階層上り、
    vendors -> renesas -> boards -> rx65n-cloud-kit-uart-sx-ulpgn -> aws_demos -> src -> smc_gen -> r_config -> r_wifi_sx_ulpgn_config.h を削除
    vendors -> renesas -> boards -> rx65n-cloud-kit-uart-sx-ulpgn -> aws_demos -> src -> smc_gen -> r_wifi_sx_ulpgn -> フォルダ全体をコピー
    vendors -> renesas -> boards -> rx_driver_package -> v125 -> r_wifi_sx_ulpgn -> r_wifi_sx_ulpgn -> フォルダ全体をペースト

    r_wifi_sx_ulpgnの新しい版(v1.13)で廃止になったファイルを手動で削除する
    プロジェクトエクスプローラの vendors -> renesas -> rx_driver_package -> v125 -> r_wifi_sx_ulpgn -> src -> r_wifi_sx_ulpgn_queue.c を右クリック、削除
    プロジェクトエクスプローラの vendors -> renesas -> rx_driver_package -> v125 -> r_wifi_sx_ulpgn -> src -> r_wifi_sx_ulpgn_recv_task.c を右クリック、削除
    r_wifi_sx_ulpgnの新しい版(v1.13)で追加になったファイルを手動で追加する
    プロジェクトエクスプローラの vendors -> renesas -> rx_driver_package -> v125 -> r_wifi_sx_ulpgn -> src で右クリック -> 新規 -> ファイル
    以下のようにリンクファイルとして3ファイル追加
    AWS_IOT_MCU_ROOT\vendors\renesas\rx_driver_package\v125\r_wifi_sx_ulpgn\src\r_wifi_sx_ulpgn_atcmd.c
    AWS_IOT_MCU_ROOT\vendors\renesas\rx_driver_package\v125\r_wifi_sx_ulpgn\src\r_wifi_sx_ulpgn_os_wrap.c
    AWS_IOT_MCU_ROOT\vendors\renesas\rx_driver_package\v125\r_wifi_sx_ulpgn\src\r_wifi_sx_ulpgn_os_wrap.h

    ■制限事項
    ・上記手順でRX65N RSKにおけるOTA動作は実現できるが、以下問題がありOTA動作が不完全である
     ①OTA動作後にソフトウェアリセットが起動しない
     ②①の後ボード上のリセットスイッチを押しセキュアブートを起動、
      新しいファームウェアがbank1側に書き込まれていて検証も成功するようだがそのあとバンクスワップが動作せず
      ソフトウェアリセット後フリーズする
     ③②の後ボード上のリセットスイッチを押しセキュアブートを起動、
      古いファームウェアのまま起動してくる
      →AWSに「ファームウェアが更新されていない」と認識されOTA動作が失敗する

  • インデントが潰れて読みづらいのでテキストファイルでアップしておきます。

    cafe_rene_202012.00.txt
    ■環境
    e2 studio 2022-01
    CC-RX V304
    Amazon FreeRTOS v202012.00-rx-1.0.0
    Renesas Secure Flash Programmer v1.0.1
    
    ■操作手順
    (1)プロジェクトインポート
       e2 studioのimport projectで "Renesas GitHub FreeRTOS (with IoT Libraries) Project" を選択
       Amazon FreeRTOSのバージョン v202012.00-rx-1.0.0 を選択
       aws_demos -> \projects\rx65n-cloud-kit-uart-sx-ulpgn\e2studio\aws_demos と
       boot_loader -> \projects\rx65n-cloud-kit-uart-sx-ulpgn\e2studio\boot_loader を選択しインポート
       
    (2)aws_demosとboot_loaderのセクション設定を保存
      プロジェクトエクスプローラのaws_demosで右クリック->プロパティを選択
      C/C++ビルド->設定->ツール設定->Linker->セクション->...ボタン->エクスポート->aws_demos.esiとして保存
      プロジェクトエクスプローラのboot_loaderで右クリック->プロパティを選択
      C/C++ビルド->設定->ツール設定->Linker->セクション->...ボタン->エクスポート->boot_loader.esiとして保存
      
    (3)コンパイラのバージョン変更
      プロジェクトエクスプローラのaws_demosで右クリック->プロパティを選択
      C/C++ビルド->設定->Toolchain
        ツールチェイン: Renesas CCRX
        バージョン: v3.04.00
      プロジェクトエクスプローラのboot_loaderで右クリック->プロパティを選択
      C/C++ビルド->設定->Toolchain
        ツールチェイン: Renesas CCRX
        バージョン: v3.04.00
        
    (4)ブートローダの設定
      boot_loader.scfg をダブルクリック
       ボードタブ
         Custom User Board -> RSKRX65N-2MB
           セクション設定が初期状態に戻るので、boot_loader.esiを読み込む
             -> プロジェクトエクスプローラのboot_loaderで右クリック->プロパティを選択
               C/C++ビルド->設定->ツール設定->Linker->セクション->...ボタン->インポート->boot_loader.esiを読み込み
       クロックタブ
         メインクロックに変更。後段のクロックが最速になるよう調整
       [USBシリアル関連の設定]
       コンポーネントタブ
         もし灰色のコンポーネントがあればダウンロードを選択(GitHubをサーチして足りないコンポーネントを自動でダウンロード/インストールする)
         r_sci_rx
           channel5: Include -> Not に変更
           channel8: Not -> Include に変更
             -> 画面下の方にスクロールしていき、SCI8の端子でRXD8とTXD8が「使用する」になっていることを確認
        端子タブ
          SCI8の設定、端子割当のところで、RXD8がPJ1、TXD8がPJ2になっていることを確認
        プロジェクトエクスプローラでboot_loader -> src -> smc_gen -> r_bsp_config.h を開く (スマートコンフィグレータ非対応の設定項目を手動設定必要)
          MY_BSP_CFG_SERIAL_TERM_SCI: 5 -> 8
    
    (5)アプリの設定
      aws_demos.scfg をダブルクリック
       ボードタブ
         Custom User Board -> RSKRX65N-2MB
           セクション設定が初期状態に戻るので、boot_loader.esiを読み込む
             -> プロジェクトエクスプローラのboot_loaderで右クリック->プロパティを選択
               C/C++ビルド->設定->ツール設定->Linker->セクション->...ボタン->インポート->aws_demos.esiを読み込み
       クロックタブ
         メインクロックに変更。後段のクロックが最速になるよう調整
       [USBシリアル関連の設定]
       コンポーネントタブ
         もし灰色のコンポーネントがあればダウンロードを選択(GitHubをサーチして足りないコンポーネントを自動でダウンロード/インストールする)
         r_sci_rx
           channel5: Include -> Not に変更
           channel8: Not -> Include に変更
           -> 画面下の方にスクロールしていき、SCI8の端子でRXD8とTXD8が「使用する」になっていることを確認
       端子タブ
         SCI8の設定、端子割当のところで、RXD8がPJ1、TXD8がPJ2になっていることを確認
       プロジェクトエクスプローラでaws_demos -> vendors -> renesas -> boards -> rx65n-cloud-kit-uart-sx-ulpgn -> aws_demos -> src -> smc_gen -> r_config -> r_bsp_config.h を開く
       (スマートコンフィグレータ非対応の設定項目を手動設定必要)
         MY_BSP_CFG_SERIAL_TERM_SCI: 5 -> 8
    
       [Wifiモジュール関連の設定]
       コンポーネントタブ
         もし灰色のコンポーネントがあればダウンロードを選択(GitHubをサーチして足りないコンポーネントを自動でダウンロード/インストールする)
         r_sci_rx
           channel0: Include -> Not に変更
           channel1: Include -> Not に変更
           channel6: Not -> Include に変更
           ASYNC mode TX queue buffer size for channel 0: 2180 -> 80
           ASYNC mode TX queue buffer size for channel 1: 2180 -> 80
           ASYNC mode TX queue buffer size for channel 6: 80 -> 2180
           ASYNC mode RX queue buffer size for channel 0: 4096 -> 80
           ASYNC mode RX queue buffer size for channel 1: 4096 -> 80
           ASYNC mode RX queue buffer size for channel 6: 80 -> 4096
           -> 画面下の方にスクロールしていき、SCI6の端子でRXD6とTXD6とCTS6#が「使用する」になっていることを確認
              注意: 操作手順通りの場合、CTS6# を「使用する」、SCK6を「使用しない」に変更が必要
       端子タブ
         SCI6の設定、端子割当のところで、RXD6とTXD6とCTS6#の「使用する」チェックを入れる
         注意: 操作手順通りの場合、SMISO6とSMOSI6の「使用する」チェックを外す変更が必要
         RXD6がP01、TXD6がP00、CTS6#がPJ3になっていることを確認
           -> 念のためボード回路図を確認し、上記設定の通りの回路になっていること確認
              https://www.renesas.com/jp/ja/products/microcontrollers-microprocessors/rx-32-bit-performance-efficiency-mcus/rx65n-2mb-starter-kit-plus-renesas-starter-kit-rx65n-2mb
                Renesas Starter Kit+ for RX65N-2MB CPU Board Schematics
       プロジェクトエクスプローラでaws_demos -> vendors -> renesas -> boards -> rx65n-cloud-kit-uart-sx-ulpgn -> aws_demos -> src -> smc_gen -> r_config -> r_bsp_config.h を開く
       (スマートコンフィグレータ非対応の設定項目を手動設定必要)
         MY_BSP_CFG_SERIAL_TERM_SCI: 5 -> 8
    
       もう一度コンポーネントタブに戻る
         本バージョンで参照されているwifiドライバの r_wifi_sx_ulpgn v1.11 はGitHubにアップしていない試作版のため、
         aws_demos.scfg を直接改造してv1.13を参照させる
           プロジェクトエクスプローラのaws_demosを右クリック -> system explorer を開く
             e2 studioを一度閉じる
               aws_demos.scfgをテキストエディタで開く
                 1069行名を以下のように変更
                   id="r_wifi_sx_ulpgn1.11" version="1.11"
                   id="r_wifi_sx_ulpgn1.13" version="1.13"
             e2 studioを起動
               もう一度 aws_demos.scfg をダブルクリックしスマートコンフィグレータのコンポーネントタブに戻る
                 r_wifi_sx_ulpgn
                   SCI Channel number for SX-ULPGN initial Command Port for AT command communication の値を 6 に変更(SCIチャネル6を使用してWIFIモジュール制御を行うという意味)
                   SCI Channel number for SX-ULPGN second Command Port for AT command communication の値を 6 に変更(SCIチャネル6を使用してWIFIモジュール制御を行うという意味)
                   General-purpose port PDR register connected to the SX-ULPGN EN pin の値を PORTD から PORTF に変更
                   General-purpose port PODR register connected to the SX-ULPGN EN pin の値を 0 から 5 に変更
                     注意: コメントがおかしい。修正中。SX-ULPGNのEN端子(POWER端子)の制御をRXマイコン側のポート何番で行うか、の設定項目。このボードではPF5端子を使う回路となっている。
                   Configure RTS Port No. for WIFI_CFG_SCI_CHANNEL の値を PORT2 から PORT0 に変更
                   Configure RTS Pin No. for WIFI_CFG_SCI_CHANNEL の値を 2 になっていること確認
                   スマートコンフィグレータ上のコード生成ボタンを一度押しておく
               プロジェクトエクスプローラのaws_demosを右クリック -> system explorer を開く
                 5階層上り、
                   vendors -> renesas -> boards -> rx65n-cloud-kit-uart-sx-ulpgn -> aws_demos -> src -> smc_gen -> r_config -> r_wifi_sx_ulpgn_config.h を削除
                   vendors -> renesas -> boards -> rx65n-cloud-kit-uart-sx-ulpgn -> aws_demos -> src -> smc_gen -> r_wifi_sx_ulpgn -> フォルダ全体をコピー
                   vendors -> renesas -> boards -> rx_driver_package -> v125 -> r_wifi_sx_ulpgn -> r_wifi_sx_ulpgn -> フォルダ全体をペースト
                   
                   r_wifi_sx_ulpgnの新しい版(v1.13)で廃止になったファイルを手動で削除する
                     プロジェクトエクスプローラの vendors -> renesas -> rx_driver_package -> v125 -> r_wifi_sx_ulpgn -> src -> r_wifi_sx_ulpgn_queue.c を右クリック、削除
                     プロジェクトエクスプローラの vendors -> renesas -> rx_driver_package -> v125 -> r_wifi_sx_ulpgn -> src -> r_wifi_sx_ulpgn_recv_task.c を右クリック、削除
                   r_wifi_sx_ulpgnの新しい版(v1.13)で追加になったファイルを手動で追加する
                     プロジェクトエクスプローラの vendors -> renesas -> rx_driver_package -> v125 -> r_wifi_sx_ulpgn -> src で右クリック -> 新規 -> ファイル
                       以下のようにリンクファイルとして3ファイル追加
                         AWS_IOT_MCU_ROOT\vendors\renesas\rx_driver_package\v125\r_wifi_sx_ulpgn\src\r_wifi_sx_ulpgn_atcmd.c
                         AWS_IOT_MCU_ROOT\vendors\renesas\rx_driver_package\v125\r_wifi_sx_ulpgn\src\r_wifi_sx_ulpgn_os_wrap.c
                         AWS_IOT_MCU_ROOT\vendors\renesas\rx_driver_package\v125\r_wifi_sx_ulpgn\src\r_wifi_sx_ulpgn_os_wrap.h
                         参考スクリーンショット:
                           <screenshot>
    
    ■制限事項
    ・上記手順でRX65N RSKにおけるOTA動作は実現できるが、以下問題がありOTA動作が不完全である
      ①OTA動作後にソフトウェアリセットが起動しない
      ②①の後ボード上のリセットスイッチを押しセキュアブートを起動、
        新しいファームウェアがbank1側に書き込まれていて検証も成功するようだがそのあとバンクスワップが動作せず
        ソフトウェアリセット後フリーズする
      ③②の後ボード上のリセットスイッチを押しセキュアブートを起動、
        古いファームウェアのまま起動してくる
        →AWSに「ファームウェアが更新されていない」と認識されOTA動作が失敗する
    
    
    
    

  • シェルティさん

    こんにちは。よこです。

    ご対応していただき、心から感謝申し上げます。

    シェルティさんはrx65n cloud kitを改造してrx65n rskに適応させておられましたが、rx65n rskにwifiモジュールを適応しても今回のような制限事項は発生いたしますでしょうか。

  • よこさん

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

    発生すると思います。それとMCUベースのシステムはドライバソフトの付け替えが動的にできるようになっていない場合が多く(システムにたくさんドライバを抱えるとROMが膨れる)、Etherとwifiの切り替えはソースコード群の構成から変更が必要でして、さらに実は今回素材にした①RX65N RSK(Ether)と、②RX65N Cloud Kit(wifi)は、TCP/IPプロトコル処理について①の場合RX65N側、②の場合WIFIモジュール側となっており、Etherからwifiに構成を変更するのに一筋縄ではいきません。よって、今回RX65N RSK(wifi)を実現するために、RX65N Cloud Kit(wifi)をベースにしました。

    あと、制限事項ですが、もう少し解析したら制限解除できると思うので週末にもう少し追ってみようと思います。また続報します。よこさんの方では、もしよければ上記ガイドを試してみていただければ、と思います。

    以上です

  • シェルティさん

    こんにちは。 よこです。

    ご返信ありがとうございます。

    制限事項の件、承知いたしました。

    まず、シェルティさんが作成してくださったガイドを試してみます。

  • よこさん

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

    バンクスワップがうまく動かない原因がわかりました。ガイド中にある「ボードの変更」の項目において以下2点の設定がデフォルトに戻っていて、それを復旧させるガイドが足りていませんでした。

    ①リンカ設定における「ROMからRAMにマッピングするセクション」

    ②RX65Nの利用デバイスがR5F565NEDxFC_DUAL と "_DUAL" とう接尾語がついたものでなければならないところ、R5F565NEDxFCで再設定されていた

    このあたり含めて、今回作成したガイドが不要になるようスマートコンフィグレータでボード変更した際にうまいことアプリに合わせて設定値が "成る" ように改善していきたいと思います。

    ガイド更新しました。以下で試してみてください。

    cafe_rene_202012.00_2.txt
    ■環境
    e2 studio 2022-01
    CC-RX V304
    Amazon FreeRTOS v202012.00-rx-1.0.0
    Renesas Secure Flash Programmer v1.0.1
    
    ■操作手順
    (1)プロジェクトインポート
       e2 studioのimport projectで "Renesas GitHub FreeRTOS (with IoT Libraries) Project" を選択
       Amazon FreeRTOSのバージョン v202012.00-rx-1.0.0 を選択
       aws_demos -> \projects\rx65n-cloud-kit-uart-sx-ulpgn\e2studio\aws_demos と
       boot_loader -> \projects\rx65n-cloud-kit-uart-sx-ulpgn\e2studio\boot_loader を選択しインポート
       
    (2)aws_demosとboot_loaderのセクション設定を保存
      プロジェクトエクスプローラのaws_demosで右クリック->プロパティを選択
      C/C++ビルド->設定->ツール設定->Linker->セクション->...ボタン->エクスポート->aws_demos.esiとして保存
      プロジェクトエクスプローラのboot_loaderで右クリック->プロパティを選択
      C/C++ビルド->設定->ツール設定->Linker->セクション->...ボタン->エクスポート->boot_loader.esiとして保存
      
    (3)コンパイラのバージョン変更
      プロジェクトエクスプローラのaws_demosで右クリック->プロパティを選択
      C/C++ビルド->設定->Toolchain
        ツールチェイン: Renesas CCRX
        バージョン: v3.04.00
      プロジェクトエクスプローラのboot_loaderで右クリック->プロパティを選択
      C/C++ビルド->設定->Toolchain
        ツールチェイン: Renesas CCRX
        バージョン: v3.04.00
        
    (4)ブートローダの設定
      boot_loader.scfg をダブルクリック -> RXファミリの開発環境を始めて利用する際はこの時点でRX Driver Packageの最新版のダウンロードが要求されるのでダウンロードしておく(2022/02/26時点でV133が最新版)
       ボードタブ
         Custom User Board -> RSKRX65N-2MB (download additional boardsボタンを押して最新のボードファイル(*.bdf)をインストールしておく)
       クロックタブ
         メインクロックに変更。後段のクロックが最速になるよう調整
       [USBシリアル関連の設定]
       コンポーネントタブ
         もし灰色のコンポーネントがあればダウンロードを選択(GitHubをサーチして足りないコンポーネントを自動でダウンロード/インストールする)
         r_sci_rx
           channel5: Include -> Not に変更
           channel8: Not -> Include に変更
             -> 画面下の方にスクロールしていき、SCI8の端子でRXD8とTXD8が「使用する」になっていることを確認
        端子タブ
          SCI8の設定、端子割当のところで、RXD8がPJ1、TXD8がPJ2になっていることを確認
        プロジェクトエクスプローラでboot_loader -> src -> smc_gen -> r_bsp_config.h を開く (スマートコンフィグレータ非対応の設定項目を手動設定必要)
          MY_BSP_CFG_SERIAL_TERM_SCI: 5 -> 8
        プロジェクトエクスプローラでboot_loaderを右クリック、Renesas C/C++ Project Settings -> Change Device
          Target Board は Custom とし、ターゲットデバイスは RX600 -> RX65N -> RX65N -176 pin -> R5F565NEDxFC_DUAL を選択
            セクション設定が初期状態に戻るので、boot_loader.esiを読み込む
             -> プロジェクトエクスプローラのboot_loaderで右クリック->プロパティを選択
               C/C++ビルド->設定->ツール設定->Linker->セクション->...ボタン->インポート->boot_loader.esiを読み込み
            ROMからRAMにマッピングするセクションの設定が初期状態に戻るので、追加設定する。
              プロジェクトエクスプローラでboot_loaderを右クリック -> プロパティ -> C/C++ビルド -> 設定 -> ツール設定 -> Linker -> セクション -> シンボル・ファイル -> ROMからRAMにマップするセクション
                -> PFRAM2=RPFRAM2 を追加
                
    (5)アプリの設定
      aws_demos.scfg をダブルクリック
       ボードタブ
         Custom User Board -> RSKRX65N-2MB
       クロックタブ
         メインクロックに変更。後段のクロックが最速になるよう調整
       [USBシリアル関連の設定]
       コンポーネントタブ
         もし灰色のコンポーネントがあればダウンロードを選択(GitHubをサーチして足りないコンポーネントを自動でダウンロード/インストールする)
         r_sci_rx
           channel5: Include -> Not に変更
           channel8: Not -> Include に変更
           -> 画面下の方にスクロールしていき、SCI8の端子でRXD8とTXD8が「使用する」になっていることを確認
       端子タブ
         SCI8の設定、端子割当のところで、RXD8がPJ1、TXD8がPJ2になっていることを確認
       プロジェクトエクスプローラでaws_demos -> vendors -> renesas -> boards -> rx65n-cloud-kit-uart-sx-ulpgn -> aws_demos -> src -> smc_gen -> r_config -> r_bsp_config.h を開く
       (スマートコンフィグレータ非対応の設定項目を手動設定必要)
         MY_BSP_CFG_SERIAL_TERM_SCI: 5 -> 8
    
       [Wifiモジュール関連の設定]
       コンポーネントタブ
         もし灰色のコンポーネントがあればそれをクリックしダウンロードを選択(GitHubをサーチして足りないコンポーネントを自動でダウンロード/インストールする)。
         この時点でr_wifi_sx_ulpgnは灰色のままでOK。
         r_sci_rx
           channel0: Include -> Not に変更
           channel1: Include -> Not に変更
           channel6: Not -> Include に変更
           ASYNC mode TX queue buffer size for channel 0: 2180 -> 80
           ASYNC mode TX queue buffer size for channel 1: 2180 -> 80
           ASYNC mode TX queue buffer size for channel 6: 80 -> 2180
           ASYNC mode RX queue buffer size for channel 0: 4096 -> 80
           ASYNC mode RX queue buffer size for channel 1: 4096 -> 80
           ASYNC mode RX queue buffer size for channel 6: 80 -> 4096
           -> 画面下の方にスクロールしていき、SCI6の端子でRXD6とTXD6とCTS6#が「使用する」になっていることを確認
              注意: 操作手順通りの場合、CTS6# を「使用する」、SCK6を「使用しない」に変更が必要
       端子タブ
         SCI6の設定、端子割当のところで、RXD6とTXD6とCTS6#の「使用する」チェックを入れる
         注意: 操作手順通りの場合、SMISO6とSMOSI6の「使用する」チェックを外す変更が必要
         RXD6がP01、TXD6がP00、CTS6#がPJ3になっていることを確認
           -> 念のためボード回路図を確認し、上記設定の通りの回路になっていること確認
              https://www.renesas.com/jp/ja/products/microcontrollers-microprocessors/rx-32-bit-performance-efficiency-mcus/rx65n-2mb-starter-kit-plus-renesas-starter-kit-rx65n-2mb
                Renesas Starter Kit+ for RX65N-2MB CPU Board Schematics
       プロジェクトエクスプローラでaws_demos -> vendors -> renesas -> boards -> rx65n-cloud-kit-uart-sx-ulpgn -> aws_demos -> src -> smc_gen -> r_config -> r_bsp_config.h を開く
       (スマートコンフィグレータ非対応の設定項目を手動設定必要)
         MY_BSP_CFG_SERIAL_TERM_SCI: 5 -> 8
    
       もう一度コンポーネントタブに戻る
         本バージョンで参照されているwifiドライバの r_wifi_sx_ulpgn v1.11 はGitHubにアップしていない試作版のため
         上記ダウンロード機能を用いてGitHubからサーチしても灰色のままになっているはず。それをクリックしバージョン変更を選択しV113を選択。
           r_wifi_sx_ulpgn
             SCI Channel number for SX-ULPGN initial Command Port for AT command communication の値を 6 に変更(SCIチャネル6を使用してWIFIモジュール制御を行うという意味)
             SCI Channel number for SX-ULPGN second Command Port for AT command communication の値を 6 に変更(SCIチャネル6を使用してWIFIモジュール制御を行うという意味)
             General-purpose port PDR register connected to the SX-ULPGN EN pin の値を PORTD から PORTF に変更
             General-purpose port PODR register connected to the SX-ULPGN EN pin の値を 0 から 5 に変更
               注意: コメントがおかしい。修正中。SX-ULPGNのEN端子(POWER端子)の制御をRXマイコン側のポート何番で行うか、の設定項目。このボードではPF5端子を使う回路となっている。
             Configure RTS Port No. for WIFI_CFG_SCI_CHANNEL の値を PORT2 から PORT0 に変更
             Configure RTS Pin No. for WIFI_CFG_SCI_CHANNEL の値を 2 になっていること確認
       プロジェクトエクスプローラのaws_demosを右クリック -> system explorer を開く
         エクスプローラ上で5階層上り、
           vendors -> renesas -> boards -> rx65n-cloud-kit-uart-sx-ulpgn -> aws_demos -> src -> smc_gen -> r_wifi_sx_ulpgn -> フォルダ全体をコピー
           vendors -> renesas -> boards -> rx_driver_package -> v125 -> r_wifi_sx_ulpgn -> r_wifi_sx_ulpgn -> フォルダ全体を削除
           vendors -> renesas -> boards -> rx_driver_package -> v125 -> r_wifi_sx_ulpgn -> r_wifi_sx_ulpgn -> フォルダ全体をペースト
             
           r_wifi_sx_ulpgnの新しい版(v1.13)で廃止になったファイルを手動で削除する
             プロジェクトエクスプローラの vendors -> renesas -> rx_driver_package -> v125 -> r_wifi_sx_ulpgn -> src -> r_wifi_sx_ulpgn_queue.c を右クリック、削除
             プロジェクトエクスプローラの vendors -> renesas -> rx_driver_package -> v125 -> r_wifi_sx_ulpgn -> src -> r_wifi_sx_ulpgn_recv_task.c を右クリック、削除
           r_wifi_sx_ulpgnの新しい版(v1.13)で追加になったファイルを手動で追加する
             プロジェクトエクスプローラの vendors -> renesas -> rx_driver_package -> v125 -> r_wifi_sx_ulpgn -> src で右クリック -> 新規 -> ファイル
               以下のようにリンクファイルとして3ファイル追加
                 拡張 -> ファイル・システム内のファイルにリンク にチェックを入れて、以下入力 (これでプロジェクト外ファイルを相対参照できる。外部ライブラリ・ソースコード等リンクの常套手段)
                   AWS_IOT_MCU_ROOT\vendors\renesas\rx_driver_package\v125\r_wifi_sx_ulpgn\src\r_wifi_sx_ulpgn_atcmd.c
                   AWS_IOT_MCU_ROOT\vendors\renesas\rx_driver_package\v125\r_wifi_sx_ulpgn\src\r_wifi_sx_ulpgn_os_wrap.c
                   AWS_IOT_MCU_ROOT\vendors\renesas\rx_driver_package\v125\r_wifi_sx_ulpgn\src\r_wifi_sx_ulpgn_os_wrap.h
        プロジェクトエクスプローラでaws_demosを右クリック、Renesas C/C++ Project Settings -> Change Device
          Target Board は Custom とし、ターゲットデバイスは RX600 -> RX65N -> RX65N -176 pin -> R5F565NEDxFC_DUAL を選択
            セクション設定が初期状態に戻るので、boot_loader.esiを読み込む
             -> プロジェクトエクスプローラのboot_loaderで右クリック->プロパティを選択
               C/C++ビルド->設定->ツール設定->Linker->セクション->...ボタン->インポート->boot_loader.esiを読み込み
            ROMからRAMにマッピングするセクションの設定が初期状態に戻るので、追加設定する。
              プロジェクトエクスプローラでboot_loaderを右クリック -> プロパティ -> C/C++ビルド -> 設定 -> ツール設定 -> Linker -> セクション -> シンボル・ファイル -> ROMからRAMにマップするセクション
                -> PFRAM2=RPFRAM2 を追加
    
    
    
    
    
    

    またOTA正常動作時のAmazon FreeRTOSのログも載せておきます。

    teraterm.txt

    以上です

  • よこさん

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

    OTAに関して性能面・およびセキュリティ面で以下改善中の項目があることをお知らせします。参考になれば幸いです。

    #個人的には性能を突き詰めて実装したいのですが、現在ユーザビリティ面の改善を優先しています。OTAはややこしいので使いやすくしてほしいと方々からリクエストいただいています。

    上の投稿にあるシステムログ teraterm.txt において以下2点性能面の考察、1点セキュリティ面の考察ができます。いずれも課題ではありますが、Trusted Secure IPといういろんなルネサスマイコンに入っている暗号IPを活用することで対策済です。現在まだスマートコンフィグレータ等ツールで簡単に使いこなせるようにはなっておらず先行的に開発している段階がようやく終わりユーザビリティを向上させていく段階です。OTAのややこしさ対策と合わせて改善を図っていきたいと考えています。

    ■性能面考察

    ①AWSとの暗号通信 (TLS: Transport Layer Security) でOTAデータ (RX65Nのバンク1面分の1MB (厳密にはブートローダの256KBを引いた768KB) ) の転送にかかる時間

    参考: https://github.com/renesas/rx72n-envision-kit/wiki/Trusted-Secure-IP%28TSIP%29%E3%81%AB%E3%82%88%E3%82%8BSSL%E3%81%AE%E5%8A%A0%E9%80%9F

    ②ブートローダにおいてユーザアプリの正当性検証にかかる時間

    参考: https://www.wolfssl.com/renesas-rx72n-envision-kit-supported/

    ■セキュリティ面の考察

    セキュアブートとユーザアプリ(AWS接続用)を結合したMOTファイルをバイナリ化しバイナリエディタで覗くとAWS接続用のデバイス秘密鍵(ウェブ認証のユーザパスワードに相当)とデバイス証明書(ウェブ認証のユーザIDに相当)が平文で見える。AWSにアップロードするOTA用の新しいファームウェアデータも同様。

    こちらも以下カラクリを駆使することで対策済です。

    https://github.com/renesas/rx72n-envision-kit/wiki/1-Trusted-Secure-IP%E3%83%89%E3%83%A9%E3%82%A4%E3%83%90

    (日本語ページにリンク貼りなおしました)

    余裕がありましたらセキュリティ面の検証も実施いただけるとよいと思います。

    Trusted Secure IP搭載のマイコンボードかどうかはよくよくご確認ください。少しわかりづらいですがRX65N RSKはTrusted Secure IP有り版と無し版があります。

    https://www.renesas.com/jp/ja/products/microcontrollers-microprocessors/rx-32-bit-performance-efficiency-mcus/rx65n-2mb-starter-kit-plus-renesas-starter-kit-rx65n-2mb?

    現在Trusted Secure IP入りのRXファミリのマイコンボードでおすすめはRX72N Envision Kitですね。

    https://www.renesas.com/jp/ja/products/microcontrollers-microprocessors/rx-32-bit-performance-efficiency-mcus/rx72n-envision-kit-rx72n-envision-kit?

    輸出管理の課題がクリアになり暗号IP入りのマイコンボードを販売する道筋を立てることができたので今後出すRXファミリのマイコンボードはTrusted Secure IP有りが基軸になります。(マイコン自体にTrusted Secure IPが入ってないタイプもあるのでその場合はその限りではありません)

    以上です

  • シェルティさん

    こんにちは。よこです。

    ご丁寧に性能面、セキュリティ面のガイドまで作成していただき、心から感謝いたします。

    再度、シェルティさんのガイドをもとにOTAをやってみます。

    私が使っている評価ボードはTrusted Secure IP有り版だった気がしたのでTrusted Secure IPの設定も含めてやってみます。