開発のヒント

開発用ツール、デバッグ

STM32WBシリーズの無線スタック・アンチロールバック機能

STM32WBシリーズは、Bluetooth® Low Energy、ZigBee®、Thread®、およびMatterコネクティビティに対応した、デュアルコア搭載マルチプロトコル・ワイヤレス・マイコンです。 内部にはアプリケーション部を動かすArm® Cortex®-M4コアと、無線スタックを動かすCortex-M0+の2つのコアが内蔵されており、無線アプリケーションを動かす場合、CM0+で動かす無線スタックをFlashに書き込む必要があります。

無線スタックは、STから暗号化されたバイナリの状態で提供されており、工場出荷時にあらかじめ内蔵Flashに書き込まれているFUS(Firmware Upgrade Service)を経由して書き込みます。 FUSは暗号化された無線スタック・バイナリの暗号を内部で解きながら、内蔵Flashの適切な場所に書込みを行います。
この時、過去に公開されて脆弱性の見つかった無線スタック・バイナリを書き込むと、セキュリティ上の問題などが発生します。 これを防ぐための機能として、アンチロールバック機能をFUSは備えています。

アンチロールバック機能を有効にすると、FUSは書き込もうとしている無線スタック・バイナリのバージョンが「既に書かれている、あるいは書かれていた」無線スタック・バイナリのバージョンと比較を行います。 この時、古いバージョンの無線スタック・バイナリの書込みを行うと、FUSはエラー・コードを返し、書込みは行われません。
新しいバージョンが確認できた場合は、書込み終了後、書き込まれた無線スタック・バイナリのバージョンを予約領域に書き込みます。

【注意!】アンチロールバック機能は、必ず無線スタック・バイナリが書かれている状態の時に有効にする必要があります。
もし、有効な無線スタック・バイナリが書かれていない状態でアンチロールバック機能を有効にすると、バージョン情報を書き込んでおく予約領域が0xFFFFFFFFに初期化され、すなわち、書き込まれている無線スタック・バイナリのバージョンが255.255.255となり、通常、1.xx.yyなどの無線スタック・バイナリを書き込むことができなくなります。
復旧するすべはありませんので、ご注意ください。

アンチロールバック機能、およびFUSの詳細は、
STM32WB Firmware Upgrade Serviceや、
AN5185 STMicroelectronics firmware upgrade services for STM32WB MCUsをご参照ください。

過去の開発のヒントはこちら