STM32WB – SYSCFG
システムコンフィグレーションコントローラ

1.0 版

STM32WB システムコンフィグレーションコントローラのプレゼンテーションにようこそ。

1概要

2

• STM32WB デバイスは「システムコンフィグレーションコントローラ」を備えています。
• メモリ領域の再配置• GPIO 外部割込みの管理• 「堅牢性」機能の管理• SRAM2 保護機能
• FPU 割込み
• I2C 高速モードプラスの設定• 独立 CPU 割込みマスク• Cortex®-M0+ ペリフェラルセキュリティ

STM32WB デバイスは、設定レジスタのセットを備えています。システムコンフィグレーションコントローラにより可能となる主な機能は、Cortex-M4 アドレス 0 へのメモリ領域の再配置、GPIO への外部割り込みライン接続の管理、いくつかの堅牢性機能、SRAM2 の書込み保護と消去、浮動小数点ユニット割込み、I²C 高速モードプラスに使用される 20mA 高駆動能力 I/O の設定、CPU あたりのペリフェラル割込みマ
スキング、Cortex-M0+ ペリフェラルセキュリティです。

2Cortex-M4 メモリマッピング••

Flashメモリ：最大 1MB、シングルバンク•

SRAM： 256KB を 3 分割：••••

192KB @ 0x2000 0000（Sバス）

SRAM2a（バックアップ）：

••••

予約済み

予約済み

QUADSPI

ユーザオプション

32KB @ 1000 8000（D-code および I-code）

0x2000 0000

0x1FFF 8000

0x9000 0000

予約済み

OTP
0x1FFF 7400

32KB @ 0x2003 0000（S-バス上にエイリアス）

ペリフェラル

システムメモリ
0x1FFF 0000

予約済み

0x4000 0000

予約済み

32KB @ 0x2003 8000（S-バス上にエイリアス）

QUADSPI•SRAM1

32KB @ 0x1000 0000（D-code および I-code）

SRAM2b（非バックアップ）：

0x2003 0000

FPU 搭載Cortex-M4
内部ペリフェラル0xE000 0000

SRAM1：•

SRAM2bSRAM2a0xFFFF FFFF

@0x0800 0000（D-code および I-code）

3SRAM
0x2000 0000

SRAM2bSRAM2a0x1000 0000

予約済み
ユーザ Flash

外部メモリインタフェース

0x0800 0000

コード
ブート設定依存のメモリ
0x0000 0000

0x0000 0000

ここに図示したのは、STM32WB マイクロコントローラの4GB リニアアドレスマッピングです。
Flash メモリは最大 1MB のシングルバンク設定です。
SRAM の総サイズは 256KBです。次のように 3 分割されます：SRAM1 は、アドレス 0xx20000000 から始まる 192KB、SRAM2a バックアップ RAM は、アドレス 0x10000000 から始まる 32KB でアドレス 0x20030000 にエイリアスされており、その後の SRAM2b 非バックアップはアドレス0x10008000 から始まる 32KB でアドレス 0x20038000 にエイリアスされています。SRAM1 は、通常の S-bus 上のRAM のための Arm® メモリ空間にありますが、SRAM2a とSRAM2b はデータコードバスと命令コードバス経由での直接アクセスも可能であり、コード実行に使用されるゼロウェイトステートが可能です。

3

メモリ再配置

4

パフォーマンス向上！

• アドレス 0x0000 0000 の再配置オプション• メインFlashメモリ• システム Flash メモリ（ブートローダ）• SRAM1• QUADSPI システムバスアクセスの代わりの I-Code/D-Code アクセスによる性能向上

Cortex-M4 アドレス 0 のメモリを再配置すると、システムバスの代わりの命令バスとデータバスのために性能が向上します。
アドレス 0 のメモリ再配置は、システムコンフィグレーション
再配置レジスタの MEM_MODE ビットを用いて選択されます。メイン Flash メモリ、またはシステム Flash メモリである
SRAM1 もしくは QUADSPI を選択可能です。

4

Cortex
M0+

DMA1

DMA2

5

再配置時
デフォルト
* = 適応型リアルタイムメモリアクセラレータART*

S-バス

D-バス

I-バス

FPU 搭載Cortex-M4

バスマトリックス

Flash1MB
SRAM1 192KB

SRAM2a & b 64KB
AHB1
ペリフェラル

APB1 ペリフェラル
APB2 ペリフェラル

AHB2ペリフェラル
AHB 共有ペリフェラルQUADSPISTM32WB のバスマトリックスを示します。 バスマスタが最上部に示されています。Cortex-M4 コア、Cortex-M0+ コア、2 つの DMA コントローラが、丸印が付けられた交点を通って右側のバススレーブと通信を行います。
Flash メモリは、アクセラレータを通じて読み出されます。Cortex-M4 の命
令は命令バスを通じてフェッチされ、リテラルプールはデータバスを通じて読み出されます。SRAM1 は、デフォルトではシステムバスによってアクセスされますが、濃紺の丸印によって示されるように、性能向上のためにアドレス 0 に再配置された場合には、I-バスと D-バスを通じてアクセス可能です。SRAM2 は、ゼロウェイトステートのコード実行が可能な I-バスと D-バスを通じたアクセスと、S-バスを通じたアクセスが可能です。Quad SPI は、デフォルトではシステムバス経由で読出しと実行が可能ですが、性能向上のために 0 に再配置することもできます。
Cortex-M0+ もまた適応型リアルタイムメモリアクセラレータ（ART）経由でFlash メモリを読み出し、SRAM2a メモリと SRAM2b メモリ、ならびに、AHB1 ペリフェラルと AHB2 ペリフェラルと AHB 共有ペリフェラルにアクセス可能です。
2 つの DMA は、すべてのメモリとペリフェラルにアクセス可能です。

異なるバスバスタがバスマトリクスを通じて異なるメモリとペリフェラルに同時アクセス可能であり、高性能な計算演算が得られます。同じバスに同時にマスタがアクセスすると、ラウンドロビン調停によって処理されます。
5

Cortex-M4 ブートモード

6

ブートモード選択

nBOOT1（オプションビット）

BOOT0（ピン）（または nBOOT0 オプションビット）

X0

ユーザ Flash メモリ

11

システムメモリ（ブートローダ）

01SRAM1

ブートモードブートモードには 3 種類あり、nBOOT0 オプションビットで選択するか、BOOT0 ピンと nBOOT1 という名称のオプションビットにより選択します。 BOOT0 ピンまたはオプションビットがローレベルである場合、STM32WB は、アドレス 0 にエイリアスされているユーザ Flash メモリからブートします。 これが STM32WB の標準的なブート方法となります。

BOOT0 ピンまたはオプションビットがハイレベルである場合、nBOOT1 オプションビットによってブートモードが決定されます。

6

Cortex-M4 ブートモード• ピン BOOT0 は、PH3 GPIO と共有されています。

7

再配置時

• 追加で 2 つのオプションビット（nBOOT0 と nSWBOOT0）がブートモードの選択に使用されます。
• Flash エンプティチェックメカニズムが実装されています（*）。
ブートモード選択
ブートモードnBOOT1（オプションビット）

nBOOT0（オプションビット）

BOOT0/PH3（ピン）nSWBOOT0（オプションビット）

メイン Flash
エンプティxx0

10

ユーザ Flash メモリ

xx011

システムメモリ

x1x0x

ユーザ Flash メモリ

0x11x

SRAM100x0x

SRAM11x11x

システムメモリ

10x0x

システムメモリ（*） 最初の Flash メモリ位置がプログラムされていない場合には、メイン Flash ではなくシステム Flash から強制ブートされます。

この表に示されているように、nBOOT1 オプションビットに加えて、FLASH_OPTR レジスタの nSWBOOT0 オプションビットの値次第で、ブートモードは BOOT0 ピンまたはnBOOT0 オプションビットによっても選択されます。
Flash エンプティチェックメカニズムが実装されており、最初の Flash メモリ位置がプログラムされていない場合には、メイン Flash メモリではなくシステム Flash メモリからの強制ブートが行われます。
オプションビットのデフォルトレベルは High であり、Flash メモリのシステムメモリ部分からのブートが可能となっています。
それ以外のオプションとして、SRAM1 メモリ領域からのブートがあり、デバッグ目的で使用されます。

7

ブートローダプロトコル

I/O とコメント

USART

PA9/PA10 ピンの USART1

USB

PA11/PA12 ピンの USB DFU インタ
フェース

SPI

PA4/PA5/PA6/PA7 ピンの SPI1
PB12/PB13/PB14/PB15 ピンの SPI2

I2C

PB6/PB7 ピンの I2C1
PC0/PC1 ピンの I2C3

8

コメント

ブートローダによって HSE の存在が確認された場合：USB
クロックは HSE。
ブートローダによって LSE の存在が確認されなかった場合：
USB クロックは、LSE を用いて自動トリミングされた MSI

I²C スレーブアドレスは 0x86

オンチップブートローダによって、ユーザは、シリアル通信ペリフェラルを通じて Flash メモリをプログラムできます。 対応
プロトコルは、USART、USB、CAN、SPI、I²C です。

8

SRAM2 機能（1/2）

9性能、完全性、セーフティ（ClassB、SIL）、STANDBY 時の保持• 64KB の SRAM2• D-code および I-codeによるアクセス• 再配置を行わない場合には、コード実行が最高性能• D-code および I-codeによるアクセス• SRAM1 と連続した RAM アドレス空間• HW パリティ・チェック：ワード当たり 4bit
• パリティエラー時に NMI 生成• タイマにブレーク（オプション）• STANDBY モードでの保持（オプション）• SRAM2a 32KB

64KB の SRAM2 は、性能、完全性、安全性、低電力に特に適しています。
SRAM2 は、再配置を行わずにデータバスと命令バスを通じてアクセスされた場合には、ゼロウェイトステートでコードの実行が可能ですが、SRAM1 メモリと SRAM2 メモリの RAM
アドレスが連続する S バスを通じたアクセスも可能です。
SRAM2 はパリティ・チェックに対応しています。Class B または SIL 規格などによって要求されているメモリの堅牢性を向上するために、パリティ・チェックに 4bit（1 バイト当たり 1bit）が与えられているため、データバス幅は 36bit です。Class Bと SIL は安全規格です。ClassB は家庭用器具用のものであり、SIL は安全度水準のためのものです。
パリティビットは、SRAM に書き込む際に計算され、格納されます。その後、読み出すときに自動的にチェックされます。
1bit フェイルすると、ノンマスカブル割込み（NMI）が生成されます。同じエラーをタイマのブレーク入力にリンクすることも可能です。
32KB の SRAM2a の内容は、オプションとして STANDBYモードで保持可能です。
9

SRAM2 機能（2/2）

10

セキュアな SRAM

• 1KB 単位の書込み保護機能• SYSCFG_SWPRn 書込み保護レジスタ• RDPによる読出し／書込み保護• RDP がレベル 1 からレベル 0 に変化した場合に消去• ソフトウェアリセットとシステムリセット時のハードウェアリセット（オプション）• SRAM2ER ビットがセットされると消去• ユーザオプションバイトの SRAM2_RST を用いたシステムリセットで消去• Cortex-M0+ セキュリティ• SRAM2 領域への Cortex-M0+ 排他アクセス

SRAM2 もセキュアなアプリケーションに適しています。
SRAM2 は、1KB 単位で書込み保護可能です。
SRAM2 は、RDP オプションバイトによって読出し保護することもできます。保護時には、システム Flash からのブートか SRAMからのブートが選択されている場合、SRAM2 は JTAG またはシリアルワイヤデバッグポートによる読出しも書込みも行えません。
読出し保護がレベル 1 からレベル 0 に変わったときに、SRAM2は消去されます。詳細については、システムメモリ保護のトレーニングを参照してください。
SRAM2 システムコンフィグレーション制御ステータスレジスタのSRAM2ER ビットを設定することにより、ソフトウェアによってSRAM2 を消去できます。ユーザオプションバイトのオプション
ビット SRAM2_RST 次第では、SRAM2 はシステムリセットでも消去可能です。
1 つが SRAM2a、もう 1 つが SRAM2b である SRAM2 領域は、ユーザオプションバイトによってセキュアにできます。これらの領域には、Cortex-M0+ コアのみに排他的アクセスが与えられています。
10

SYSCFG のその他の機能

11

安全性と堅牢性• コンフィグレーションレジスタ 2 の安全性と堅牢性の機能• SRAM2 パリティエラーフラグ• Flash ECC エラー接続を TIM1/8/15/16/17 ブレーク入力に接続する ECC ロック• PVD 割込みを TIM1/8/15/16/17 ブレーク入力に接続する PVD ロック• SRAM2 パリティエラーを TIM1/8/15/16/17 ブレーク入力に接続する SPL ロック• Cortex M4ハードフォルトを TIM1/8/15/16/17 ブレーク入力に接続する CLL ロック=> アプリケーションがクラッシュした場合にタイマをアプリケーション安全状態とします

システムコンフィグレーションレジスタ 2 には、SRAM2 パリティエラーフラグのように安全性と堅牢性に結び付く制御ビッ
トおよびステータスビットと、エラー検出イベントをタイマのブレーク入力に向ける制御ビットが含まれています。これによって、アプリケーションクラッシュの間に、タイマ出力を既知の状態とすることができます。ひとたびプログラムされると、次のシステムリセットまで接続はロックされます。これらの内部イベントには、Flash エラーコード訂正イベント、電源電圧検出器イベント、SRAM2 パリティエラーイベント、Cortex M4
ハードフォルトが含まれています。

11

SYSCFG のその他の機能

12• GPIOx（x=A～H）への外部割込み（EXTI）接続の管理• PA[n] PB[n]～PH[n]（n=0～15）から EXTIn を選択する 16 個のマルチプレクサ• GPIOx ピンの用途を次から選択• A/D コンバータへの内部相互接続トリガ信号• STOP モードからの CPU 割込みとウェイクアップ• 設定レジスタ 1• FPU 割込みイネーブル• I2C GPIO 高速モードプラス 20mA 駆動イネーブル• PB6、PB7、PB8、PB9 高駆動能力は、I2C に使用されない場合であっても有効にできます• I/O アナログスイッチ電圧ブースタ

システムコンフィグレーションコントローラは、STOP からのウェイクアップ機能を持つ非同期の外部割込みまたはイベントとして使用される、外部割り込みやイベント信号に対するGPIO の選択の管理に用いられます。選択された GPIO ピンを A/D コンバータに対する内部相互接続トリガ信号として使用することもできます。
コンフィグレーションレジスタ 1 には、浮動小数点ユニット割込み制御ビットが含まれています。 また、I²C 高速モードプ
ラス 20mA 駆動イネーブル制御ビットも含まれています。4本の I/O は、I2C オルタネート機能に使用されない場合であっても高駆動能力モードに設定可能です。これらは、LEDの駆動などに用いることができます。
I/O アナログスイッチ電圧ブースタもここで選択されます。

12

パフォーマンスFlash メモリにて実行

CoreMark / MHz@ 64MHz

13

SRAM にて実行

ART オン
I キャッシュオン
D キャッシュオン
プリフェッチオン

ART オン
I キャッシュオン
D キャッシュオン
プリフェッチオフ

コードとデータがSRAM1 内

コードが SRAM2 内
データが SRAM1 内

3.37

3.32

2.42

3.43

13

ここでは、EEMBC CoreMark を実行して、64MHz でのコード実行性能を比較しています。
最高性能が得られるのは、コードが SRAM2 で実行されて、データが SRAM1 にある場合です。
Flash メモリから 64MHz で実行した場合、CoreMark 性能が最高となるのは ART アクセラレータ有効時であり、64MHz では
Flash アクセス時間に 3 つのウェイトステートが必要であるため、性能上のロスはほとんどありません。プリフェッチバッファを有効にすると、3.37CoreMark / MHz という非常に高いスコアが得られます。

13

CPU 割込みマスキング

14• ペリフェラル割込みによって両方の CPU に割込みがかからないようにするため、マスキングが提供されています。
• 割込みに対する個々のマスクは、CPU NVIC ベクタを共有します。
• EXTI• タイマ• PVD および PVM• A/D コンバータ
• AES

PA15
PB0

EXTI0

マスク

INT_EXTI0

M4
マスク

PH0
PH

PA15
PB15

PD15

EXTI15AIECマスク

INT_EXTI15

SYSCFG

M0+マスク

NVIC

CM0+。。。。

。。。。。

• FlashSYSCFG。。。。。

PB
PB15

• RTC

CM4PH0

• PKA
• RCC

PA0
PB0。。。。。

• True RNG

PA。。。。

• コンパレータ

PA0

NVIC

PH3

同じ NVIC ベクタを共有しているペリフェラル割込みには、両方の CPU に割込みをかけないためのマスクがあります。

14

Cortex-M0+ ペリフェラルセキュリティ

15• セキュアな Cortex-M0+ は動的にペリフェラルを確保可能：• AES1（キーセキュリティ）• AES2 （フルセキュリティ）• True RNG（フルセキュリティ）• PKA（フルセキュリティ）• セキュアなペリフェラルは、Coretex-M0+ レジスタに排他的な部分的アクセスまたはフルアクセスが可能• キー生成とストレージのセキュリティが可能• セキュアなデータ暗号化が可能

AES アクセラレータ 1、AES アクセラレータ 2、公開鍵アクセ
ラレータ、真性乱数発生器の各ペリフェラルは、システムコンフィグレーションブロックのセキュアレジスタビットを通じて、Cortex-M0+ ファームウェアによって動的にセキュアにすることができますので、内部 SRAM または Flash メモリのセキュア部分に対するアクセスが可能です。

15

関連ペリフェラル

16• このペリフェラルに関連した以下のトレーニングモジュールを参照してください。
• リセットおよびクロック制御（RCC）• 電源コントローラ（PWR）• 割込み（NVIC-EXTI）• Flash メモリ（Flash）• システムメモリ保護• タイマ（TIM）• I²C（Inter-Integrated Circuit）• 高度暗号化標準ハードウェアアクセラレータ（AES）• 公開鍵アクセラレータ（PKA）• 真性乱数発生器（RNG）

このトレーニングに加えて、リセットおよびクロック制御、電源コントローラ、割込み、Flash とシステムメモリの保護、タイマ、I²C、暗号化、公開鍵、真性乱数発生器のトレーニングも参照可能です。

16

参照

17

• 詳細については、以下の関連資料を参照してください。
• AN2606: STM32 microcontroller system memory boot mode
• AN4435: Guidelines for obtaining UL/CSA/IEC 60335 Class B certification in any STM32
application

詳細については、アプリケーションノートAN2606 STM32
microcontroller system memory boot modeと、AN4435

Guidelines for obtaining UL/CSA/IEC 60335 Class B
certification in any STM32 applicationを参照してください。

17