3 Replies Latest reply on Jan 24, 2020 6:11 AM by HiIw_4620611

    OTA2機能組み込みのための理解について

    HiIw_4620611

      作成中のアプリケーションにOTA2の機能を組み込むにあたり、具体的な手順や仕組みを理解をご教示ください。

       

      1. 開発環境はWICED Studio 6.4の43xxx_Wi-Fiをベースにして、apps と platforms にそれぞれ追加して実装されています。
      2. ターゲットMPUはSTM32F412(ROM:1MB/RAM256KB)で、外部に4MBのsflashを追加しています。
      3. 現ファームウェアは、make <My APP>-<My Platform>-ThreadX-NetX_Duo download_apps download にてビルドし、動作しています。
      4. OTA2の構成としては、doc/WICED-OTA2.pdf 5.2 Internal + External FLASH を想定しています。
      5. 実装したいOTA2の動作は、次の通りです。
      • a).ユーザーアプリケーション内で外部sflashのOTA2 Image Staging Areaに更新ダウンロードする。
      • b).リブート後はOTA2の動作に任せてファームウェアをアップデートする。

       

       

      Q1. 上記2.の構成で、OTA2の組み込みは可能でしょうか?

        ⇒doc/WICED-OTA2.pdf の記載で、1.2 OTA2 Platform Support にはSTM32F4xxはサポートされていると記載されているが、

         2.1.2 OTA2 RAM Requirement では、RAMが不足していると考えられることからの懸念です。

       

      Q2. 標準状態でのOTA2の動作は、大枠では以下のシーケンスと考えますが、合っていますでしょうか?

       2-1.ブートローダーがリセット要因等を判定してDCTに記録後、

         通常時は内部ROMのアプリケーションを起動する。

         その他は外部ROMからOTA2 Extraction ApplicationをRAM上に展開して起動する。

       2-2.OTA2 Extraction Applicationでは、DCT情報から以下の処理を実施。

        A.)Factory Reset OTA2 Imageを外部sflashから内部ROMに展開して起動。

        B.)Staging OTA2 Imageを外部sflashから内部ROMに展開して起動。

        C.)ota2_serverを起動してOTA2 ImageをStaging Areaにダウンロード。

       

      Q3. 標準のOTA2をそのまま組み込むのであれば、上記3.make ... downloadの後にota2_downloadを指定し、不足するファイル

        WICED/platform/MCU/STM32F4xx/GCC/STM32F412/ota2_dct.ld をSTM32F401からコピーしましたが、WAFにfilesystems/ota2

        が不足しているようです。

        具体的に、どの makefile をどう編集して組み込めばよいのか、詳細をご教授願います。

       

      Q4. 上記4.の構成とした場合、DCT領域がどちらにも存在すると考えますが、内部と外部の使い分けはどのようなものでしょうか?

        WICED/platform/MCU/STM32F4xx/STM32F4xx.mkでは、EXTERNAL_DCT(OTA2_SUPPORT)によってDCTへのアクセスが内部/外部Flashで

        排他利用となっているため、OTA2動作中は外部DCTが有効と考えられるため。

       

      Q5. 上記5.を実装するにあたり、a).ではfilesystems/ota2経由でStaging Areaへ逐次書き込み、DCTを更新すればよいと考えますが、

        ユーザーアプリ.mkで COMPONENTSに filesystems/ota2を追加し、不足する領域定義を wiced_config.mk から抜粋追記してmake

        しましたが、通常のDCTアクセスに影響が出てエラーとなってしまいます。

        良い解決策がありましたら、ご教授ください。

        • 1. Re: OTA2機能組み込みのための理解について
          HiIw_4620611

          一部、自己解決です。

           

          Q3.具体的に、どの makefile をどう編集して組み込めばよいのか、詳細をご教授願います。

          WICED-OTA2.pdf    8 Adding OTA2 to a new platform を元に、以下の手順で追加・変更を行いました。

          OTA2の組み込みとして、この方法で問題ありませんでしょうか。

           

          • Add SFLASH layout defines:

                    Copied from platforms/CYW943907AEVAL1F to platforms/<My Platform>/ota2_image_defines.mk

           

          • Add new platform name to VALID_PLATFORMS(VALID_PLATFORMS += <My APP>) in these makefiles:

                    apps/snip/ota2_example/ota2_example.mk

                    apps/snip/ota2_extract/ota2_extract.mk

                    apps/waf/ota2_bootloader/ota2_bootloader.mk

                    apps/waf/ota2_failsafe/ota2_failsafe.mk

           

          • ■ Add new Linker Files

                    WICED/platform/MCU/STM32F4xx/GCC/STM32F412/ota2_dct.ld

                    WICED/platform/MCU/STM32F4xx/GCC/STM32F412/ota2_memory_with_bootloader.ld

           

                    Copied from WICED/platform/MCU/STM32F4xx/GCC/STM32F401/

                    and adjust APP_CODE : LENGTH = 976K

           

          • You must define this in your Application make file:

                    GLOBAL_DEFINES += CURRENT_APPLICATION_USES_INTERNAL_FLASH

           

          • Add this to the platform’s target.mk file in order to build the correct bootloader.

                    Add/adjust these parts of WICED/platform/MCU/ST32F4xx/GCC/ST324fxx.mk

           

                  ifeq ($(EXTERNAL_DCT), 1)

                  $(NAME)_SOURCES +=  ../wiced_dct_external_common.c ../wiced_dct_external_ota2.c ../wiced_dct_update.c

          ADD ->    $(NAME)_COMPONENTS  += libraries/filesystems/ota2

                  ####################################################################################

                  # Building bootloader

                  ####################################################################################

                  ifeq (1, $(OTA2_SUPPORT))

          ADD ->    NO_TINY_BOOTLOADER_REQUIRED := 1

          ADD ->    BOOTLOADER_TARGET  := waf.ota2_bootloader-NoOS-NoNS-$(PLATFORM)-$(BUS)

                  DEFAULT_LINK_SCRIPT := $(TOOLCHAIN_NAME)/ota2_bootloader$(LINK_SCRIPT_SUFFIX)

                  else

          ADD ->    BOOTLOADER_TARGET  := waf.bootloader-NoOS-NoNS-$(PLATFORM)-$(BUS)

                  DEFAULT_LINK_SCRIPT += $(TOOLCHAIN_NAME)/bootloader$(LINK_SCRIPT_SUFFIX)

                  endif

           

              VALID_PLATFORMS += <My APP>

          • 2. Re: OTA2機能組み込みのための理解について
            HirotakaT_91

            A1. STMベースのプロセッサは、RAMが不十分なためOTA2をサポートしていません。 これを説明したスレッドを次に示します。

            Re: OTA Method for CYW43438+STM32F412

             

            A2. フローチャートを添付致しました。 これをご参照いただき、OTA2の振る舞いに関する疑問が解消されることを願っています。

             

            A3. 以下のコードを追加する必要があります。

            OTA_APPLICATION := snip.ota2_extract-$(PLATFORM)

            OTA_APP    := build/$(OTA_APPLICATION)/binary/$(OTA_APPLICATION).stripped.elf

            いただいた追加のご質問については確認し、返答致します。

             

            A4. これを実装する準備ができたアプリケーションはないため、実装し、確認したのち返答致します。

             

            A5. 行った手順について詳細を説明いただけますでしょうか?

             

            引き続きよろしくお願い致します。

            Cypress

            1 of 1 people found this helpful
            • 3. Re: OTA2機能組み込みのための理解について
              HiIw_4620611

              A1.のスレッドは確認していましたが、最もRAMを消費しているものがOTA2ライブラリのため、OTA2からダウンロード機能と付随するライブラリを外せば、サポート対象MPUのため動作可能かもしれない、と考えての質問でした。

               

              このままOTA2を利用するには今回の開発にはリスクが大きいため、サポートが終了しているOTA(1?)を改修して機能を実現する方向で考えなおします。

               

              そのほかの回答につきましても、今後の参考にさせていただきます。

               

              ありがとうございました。