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

Tip / ログイン to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
HiIw_4620611
Level 3
Level 3
10 replies posted 5 replies posted 5 questions asked

作成中のアプリケーションに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アクセスに影響が出てエラーとなってしまいます。

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

0 件の賞賛
1 解決策
lock attach
Attachments are accessible only for community members.

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

元の投稿で解決策を見る

3 返答(返信)
HiIw_4620611
Level 3
Level 3
10 replies posted 5 replies posted 5 questions asked

一部、自己解決です。

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>

0 件の賞賛
lock attach
Attachments are accessible only for community members.

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

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

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

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

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

0 件の賞賛