STM32G4 – STM32CubeG4 FW
CubeG4ファームウェアパッケージ
1.0版

こんにちは。
ハードウェア抽象化ドライバを含むSTM32Cubeファームウェアド
ライバのプレゼンテーションへようこそ。

1イントロダクション

2

STM32CubeMX

STM32CubeG4

STM32CubeG0

STM32CubeL0

STM32CubeL1

STM32CubeH7

STM32CubeL4

STM32CubeF7
STM32CubeF4

STM32CubeF0
STM32CubeF1

STM32CubeF3
STM32CubeF2

このプレゼンテーションはSTM32G4に関するものですが、他のシリーズでも同じことが言えます。
STM32Cubeの包括的なソフトウェアツールは次の機能を提供します。
• ユーザの選択に基づき初期化コードを生成する
STM32CubeMXグラフィカルソフトウェア設定ツール• STM32シリーズごとに、以下のソフトウェアが組み込まれた完全なソフトウェアパッケージです。
• ハードウェア抽象化レイヤ（HAL）およびローレイヤ（LL）
API• ミドルウェアコンポーネントのセット:RTOS、USB、TCP/IP、グラフィックス

2

概要
Evaluation
ボード

Discovery
ボード

Nucleo
ボード

ターゲット
ボード

アプリケーションレベルデモ

USB
パワーデリバリ

ファイルシステム
FATFS

ユーザ
アプリケーション

RTOS
FreeRTOS

ユーティリ
ティ

アプリケーションのメリット
CMSIS

ミドルウェアレベル
Middleware
ボードサポートパッケージ（ BSP）

3• シングルパッケージ• すべてのSTM32シリーズとの互換性

ローレイヤAPIs（ LL）

ハードウェア抽象化レイヤ（HAL）• オープンソースBSDライセンス･ソースコード

HAL、LL APIs

STM32CubeG4 MCUパッケージは、Arm®Cortex-M4プロセッサ搭載したSTM32G4シリーズマイクロコントローラに使用可能です。
STM32CubeG4はSTM32G4シリーズマイクロコントローラ上でアプリケーションを開発するために必要な、汎用な組み込みソフトウェアコンポーネントを1つのパッケージにまとめています。
このパッケージには、マイクロコントローラハードウェアをカバーするローレイヤ（LL）およびハードウェア抽象化レイヤ（HAL）APIと、STが提供する各種評価用ボード上で実行される広範なサンプルプロジェクトが含まれています。
STM32CubeG4 MCUパッケージには、ミドルウェアコンポーネントのセットも対応するサンプルプロジェクトとして含まれています。
• 多くのクラスをサポートする完全なUSBデバイススタック• USBパワーデリバリスタック• FreeRTOS™によるCMSIS-RTOSの実装• オープンソースFatFsソリューションに基づくFATファイルシステム。
これらのミドルウェアコンポーネントを実装するアプリケーションとデモンストレー
ションは、STM32CubeG4 MCUパッケージに用意されています。
組み込みソフトウェアはその他シリーズ（STM32F4、STM32L4..）でも提供され、完全にポータブルなAPIでカバーされています。
STM32CubeMXを使用し、組み込みソフトウェアの初期化コードを簡単に生成できるため、ユーザーはアプリケーションコードの開発に集中できます。

3ソフトウェア･アーキテクチャ
レベル2

4

Evaluationボード、Discoveryキット･デモンストレーション

アプリケーション
レベル1
ライブラリとプロトコルベース･コンポーネント（FatFs, FreeRTOS, USBデバイスなど）

サンプル

レベル0

BSP
ドライバ

ハードウェア抽象化レイヤ（HAL）

コアドライバ（オプション）

ローレイヤ（LL）

ハードウェア抽象化レイヤ（HAL）

STM32Cube™ファームウェアソリューションは、3つの独立したレベルを中心に構築されています。
• レベル0は、ドライバとHALに基づいた例が含まれています。
• レベル1は、ミドルウェアのコンポーネントとこれらのコンポーネントに基づいた例が含まれています。
• レベル2は、ミドルウェアサービス層、ローレベル抽象化層、ボードベースの機能を使った基本的なペリフェラルアプリケーションに基づく例、およびグラフィカルなデモンストレーションで構成されています。

4ソフトウェア･アーキテクチャ
レイヤ

サブレイヤ
BSP
HAL

レベル0
ドライバ

HALペリフェラル
ドライバ
ローレイヤ･ドライバ

ライブラリの RTOS
セット
USBデバイス

レベル2
アプリケーション

説明
評価用ボードのハードウェア･コンポーネントに対応するAPIのセット

基本的なペリフェラルの使用例

レベル1
ミドルウェア5

USBパワーデリバリ
ファイル･システム
ミドルウェア･コンポーネント例

デモンストレーション

HALドライバは、機能指向の高いハイレベルのポータブルAPIを提供
LLドライバはHALよりハードウェアに近い高速、軽量のエキスパート指向のレイヤを提供できるよう設計
STM32ペリフェラル向けに作成された例
CMSIS-RTOSラッパー付き、オープンソースRTOSのFreeRTOS

サポートされるUSBクラス（マスストレージ, HID, CDC, DFU, LPM, BCD）
高速ロールスワップ、デッドバッテリ、PDスタック
FatFs
各ミドルウェア･コンポーネントには、使用方法を示す1つ以上の具体例（アプリケーションとも呼ばれる）が付属
ミドルウェア･サービス･レイヤ、ローレベル抽象化レイヤ、ボードベース機能の基本的なペリフェラル･アプリケーションに基づくグローバル･リアルタイムおよびグラフィカルなデモンスト
レーション

このスライドでは、レベル毎のさまざまなソフトウェアコンポーネントについて説明します。
レベル0には3つのサブレイヤがあります。
• ボードソフトウェアパッケージは、ボードのハードウェアコンポーネントに対応するAPIのセットを提供しています。つまり、LCD、オーディオ、microSD、MEMSドライバなどです。
• HALドライバは、ハイレベルの機能性の高いポータブルAPIを提供し、MCUとペリフェラルの複雑な設定をエンドユーザーに隠します。
• ローレベルドライバは、レジスタレベルでローレベルのAPIを提供し、最適化は向上します。ただし他のシリーズへの移植性は低くなります。
• 基本的なペリフェラルを使用したサンプルプロジェクトでは、HALまたはローレイヤドライバーAPI、またはその両方を使用しています。BSPリソースも使用しています。
ローレベルドライバーには、MCUとペリフェラルの仕様に関する深い知識が必要です。これらはHALから独立しており、スタンドアロンモードで使用できます。
レベル1は、2つのサブレイヤに分かれています。
• ミドルウェアコンポーネントは、USBデバイスライブラリ、USBパワーデリバリラ
イブラリ、FreeRTOS™、FatFsをカバーするライブラリのセットです。
• ミドルウェアコンポーネントに基づくサンプルプロジェクトは、複数のミドルウェアコンポーネントを使用し統合させているサンプルにも提供されています。
レベル2は、ミドルウェアサービス層、ローレベル抽象化層、ボードベースの機能の基本的なペリフェラルを使用したアプリケーションに基づくリアルタイム制御、およびグラフィカルなデモンストレーションで構成されています。
5パッケージ内容

6

外部コンポーネントのドライバ

ペリフェラル･レジスタ、ビット定義、およびアドレスマッピングを定義する
STM32G4xx CMSISファイルを含む

サポートされているボードのBSPドライバ
 Evaluationボード
 Discoveryキット
 Nucleoキット

STM32G4xxHAL, LLドライバ（すべてのモジュール）
USB PDライブラリ

ボード別に編成された例、アプリケーション、デモンストレーションのセット

オープンソース･ミドルウェア･スタック

その他ユーティリティ

他のSTM32Cubeファームウェアパッケージと同様に、STM32CubeG4ファーム
ウェアソリューションは、このスライドに示すディレクトリ構造になっており、いくつかのフォルダに整理されています。
• ドキュメントフォルダにはSTM32Cube G4 getting starting ドキュメントがあり、開発者がファームウェアパッケージとそのコンテンツにすぐに慣れるのに役立ちます。
• ドライバフォルダには、STで開発されたすべてのドライバ（HALおよびLL）が含まれています。
• CMSISには、STM32G4xxサポートデバイス、ペリフェラルレジスタ、それら関連のビット定義、およびアドレスマッピングを定義するファイルが含まれています。
• STM32G4xx_HAL_Driverフォルダには、すべてのペリフェラル用のドライバが含まれています。
• サポートされている各種ボードのドライバは、BSPフォルダにあります。
• ミドルウェアには、サポートされているミドルウェアライブラリと、STまたはサードパーティが提供するスタックが含まれています。
• “Projects”フォルダには、サポートされているボード用のテンプレート、サンプルコード、アプリケーション、デモンストレーション、および構成済みのプロジェクトと、迅速かつ簡単に実行するために必要なすべての情報を提供するReadmeファイルが含まれています。
• ユーティリティフォルダには、提供されたプロジェクトで使用されるその他のユーティリティドライバが含まれています。
6

サポートされているデバイスとボード
Macro defined in stm32g4xx.h

7

STM32G4 devices

STM32G431xx

STM32G431K6, STM32G431K8, STM32G431KB, STM32G431C6,
STM32G431C8, STM32G431CB, STM32G431R6, STM32G431R8,
STM32G431RB, STM32G431V6, STM32G431V8, STM32G431VB

STM32G441xx

STM32G441KB, STM32G441CB, STM32G441RB, STM32G441VB

STM32GBK1CB

STM32GBK1CB

STM32G471xx

STM32G471CB, STM32G471CC, STM32G471CE, STM32G471RB,
STM32G471RC, STM32G471RE, STM32G471ME, STM32G471VB,
STM32G471VC, STM32G471VE, STM32G471QB, STM32G471QC,
STM32G471QE

STM32G473xx

STM32G473CB, STM32G473CC, STM32G473CE, STM32G473RB,
STM32G473RC, STM32G473RE, STM32G473ME, STM32G473VB,
STM32G473VC, STM32G473VE, STM32G473QB, STM32G473QC,
STM32G473QE

STM32G474xx

STM32G474CB, STM32G474CC, STM32G474CE,STM32G474RB,
STM32G474RC, STM32G474RE, STM32G474ME, STM32G474VB,
STM32G474VC, STM32G474VE, STM32G474QB, STM32G474QC,
STM32G474QE

STM32G484xx

STM32G484CE, STM32G484RE, STM32G484ME, STM32G484VE,
STM32G484QE

STM32Cubeは、汎用アーキテクチャを通じて、高いポータブル性を持つハードウェア抽象化レイヤ（HAL）を提供します。
ユーザーはMCUの詳細な知識を必要とせずに、ミドルウェア層などのレイヤ上に構築することでアプリケーション機能を実装できます。
これにより、ライブラリコードの再操作性が向上し、他のデバイスへの容易な移植性が保証されます。
その階層構造のおかげで、STM32CubeG4はすべてのSTM32G4
マイクロコントローラと、STによって設計された評価用ボードの完全なサポートを提供します。
ユーザーは“stm32g4xx.h”ヘッダファイルで正しいマクロを定義し、ファームウェアパッケージ内で提供される各ボード固有のBSPドライバーとサンプル/アプリケーションプロジェクトに使用するだけです。

7サンプル･プロジェクトの概要（1/2）

8• 各評価用ボードに対し、EWARM、MDK-ARM、およびSTM32CubeIDEの各ツールチェーン用に事前設定済みのプロジェクトとして提供• 右図は、提供されるNUCLEO-G431KBボードのプロジェクト構造• サンプルプロジェクトは、適用されるSTM32Cubeレベルに応じて分類され、次のように名前が付けられている• レベル0のサンプル･プロジェクトは“Examples”フォルダにあり、ミドルウェア･コンポーネントを含まないHALドライバを使用• レベル1のサンプル･プロジェクトは“Applications”フォルダにあり、各ミドルウェア･コンポーネントの一般的なユースケースを提供• レベル2のサンプル･プロジェクトは“Demonstrations“フォルダにあり、HAL、BSP、ミドルウェアのコンポーネントをすべて実装

各評価用ボードに対し、EWARM、MDK-ARM、およびSTM32CubeIDEの各ツールチェーン用に事前設定済みのプロジェクトとして提供しています。
提供されるNUCLEO-G431KBボードのプロジェクト構造を示しています。
サンプルプロジェクトは、適用されるSTM32Cubeレベルに応じて分類され、次のように名前が付けられています。
• レベル0のサンプルプロジェクトは“Examples”フォルダにあり、ミドルウェアコンポーネントを含まないHALドライバを使用します。
• レベル1のサンプルプロジェクトは“Applications”フォルダにあり、各ミドルウェアコンポーネントの一般的なユースケースを提供します。
• レベル2のサンプルプロジェクトは“Demonstrations“フォルダにあり、HAL、BSP、ミドルウェアのコンポーネントをすべて実装しています。

8サンプル･プロジェクトの概要（2/2）

9• “Templates”フォルダにあるサンプル･プロジェクトは、サポートされているすべてのボードの任意のファームウェア･アプリケーションを迅速に構築するために提供• STM32CubeProjectListファイルは、ファームウェア･パッケージ内の特定のサンプルプロジェクトを検索し迅速にアクセスすることが可能• すべてのサンプル･プロジェクトは同じ構造• ¥Incフォルダには、すべてのヘッダーファイルが含まれる• ¥Srcフォルダにはソースコードが含まれる• ¥EWARM、¥MDK-ARM、および¥STM32CubeIDEフォルダには、各ツールチェーンに対し事前設定されたプロジェクトが含まれる• readme.txtは、動作の例と動作を実現するために必要な環境について記載• *.iocファイルはCubeMxの設定を確認することが出来る（CubeMx5.0以上）“Templates”フォルダにあるサンプルプロジェクトは、サポートされているすべてのボードの任意のファームウェアアプリケーションを迅速に構築するために提供されています。
STM32CubeProjectListファイルは、ファームウェアパッケージ内の特定のサンプルプロジェクトを検索し迅速にアクセスすることが可能となります。
すべてのサンプルプロジェクトは同じ構造を持ち、• ¥Incフォルダには、すべてのヘッダーファイルが含まれます。
• ¥Srcフォルダーにはソースコードが含まれます。
• ¥EWARM、¥MDK-ARM、および¥STM32CubeIDEフォルダには、各ツールチェーンに対し事前設定されたプロジェクトが含まれます。
readme.txtは、動作の例と動作を実現するために必要な環境について記載されています。
ほとんどの例には*.iocファイルが含まれており、CubeMxでの設定を確認することが可能です。（CubeMx5.0以上）

9ドキュメント

10

STM32 G4シリーズ
特定のドキュメント

STM32 G4シリーズ固有のドキュメント
STM32CubeG4ファームウェア･パッケージ内で利用可能な
STM32Cubeプロジェクト･リスト･ファイルに似ている

STM32 G4シリーズ
特定のドキュメント
STM32 汎用ドキュメント
STM32 汎用ドキュメント
STM32 汎用ドキュメント
STM32 G4シリーズ固有のドキュメント
STM32CubeG4ファームウェア･パッケージ内で利用可能
STM32 汎用ドキュメント
STM32 汎用ドキュメント
STM32 汎用ドキュメント
STM32 汎用ドキュメント

STM32 G4シリーズ
特定のドキュメント

STM32Cube G4ファームウェアパッケージには、豊富なドキュメントが関連付けられています。
一部のドキュメントは、すべてのSTM32シリーズに汎用的なものもあり、またそれ以外のものはSTM32G4シリーズに固有のものとなります。
“Getting started with the STM32CubeG4 Firmware Packageuser manual” は最初に読むべきSTM32CubeG4ファームウェア
パッケージのユーザーマニュアルです。

10

STM32CubeG4 FW-参照

11

包括的なドキュメント類とSTM32CubeG4ファームウェア･パッ
ケージは、STウェブサイトからアクセ可能
www.st.com/stm32cubefw•

STM32Cubeは開発者の作業を簡素化することにより、スピードアップするSTM32プラットフォーム上での開発を迅速かつ容易ににするために、無料で利用可能なツールと組込みソフトウェアブロックのセット••

多数のコード使用例が含まれている

STM32Cubeは一緒に、または個別に使用できる以下のコンポーネントで構成•

STM32CubeMXグラフィカル・ユーザ・インタフェースおよび初期化コード・ジェネレータ

•STM32cube MCUおよびMPUパッケージそれぞれのSTM32
MCUおよびMPUシリーズ

STM32CubeG4ファームウェアは、STのウェブサイト
www.st.com/stm32cubefwからダウンロードすることが出来ます。

11

STM32Cube

12• STM32Cubeは、開発者の作業を簡素化させ、STM32プラットフォーム上で迅速かつ容易に開発を可能にするために、無料で利用可能なツールと組込みソフト
ウェア・ブリック・セット• 多くのサンプル･コードが含まれており、使いやすい• STM32Cubeは、一緒に使用できる、または独立して使用できる以下のコンポーネントから構成されている:• STM32CubeMXグラフィカル・ユーザ・インタフェース、および初期化コード・ジェネレータ:• MCUおよびMPUシリーズに対するSTM32CubeMCUおよびMPUパッケージ

STM32Cubeの機能を要約しています。関連するプレゼンテーションを参照できます。

12