- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- Permalink
- 印刷
- 不適切なコンテンツを報告
作成中のアプリケーションにOTA2の機能を組み込むにあたり、具体的な手順や仕組みを理解をご教示ください。
- 開発環境はWICED Studio 6.4の43xxx_Wi-Fiをベースにして、apps と platforms にそれぞれ追加して実装されています。
- ターゲットMPUはSTM32F412(ROM:1MB/RAM256KB)で、外部に4MBのsflashを追加しています。
- 現ファームウェアは、make <My APP>-<My Platform>-ThreadX-NetX_Duo download_apps download にてビルドし、動作しています。
- OTA2の構成としては、doc/WICED-OTA2.pdf 5.2 Internal + External FLASH を想定しています。
- 実装したい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アクセスに影響が出てエラーとなってしまいます。
良い解決策がありましたら、ご教授ください。
解決済! 解決策の投稿を見る。
- タグ:
- stm32f412
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- Permalink
- 印刷
- 不適切なコンテンツを報告
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
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- Permalink
- 印刷
- 不適切なコンテンツを報告
一部、自己解決です。
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>
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- Permalink
- 印刷
- 不適切なコンテンツを報告
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
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- Permalink
- 印刷
- 不適切なコンテンツを報告
A1.のスレッドは確認していましたが、最もRAMを消費しているものがOTA2ライブラリのため、OTA2からダウンロード機能と付随するライブラリを外せば、サポート対象MPUのため動作可能かもしれない、と考えての質問でした。
このままOTA2を利用するには今回の開発にはリスクが大きいため、サポートが終了しているOTA(1?)を改修して機能を実現する方向で考えなおします。
そのほかの回答につきましても、今後の参考にさせていただきます。
ありがとうございました。