開発のヒント
開発用ツール、デバッグ
STM32CubeProgrammer & STM32CubeMonitor:STM32マイコンの生産性を高めるには
STM32CubeProgrammer
STM32CubeProgrammerとは
・ユーザ経験の一元化
STM32CubeProgrammerの目的は、ユーザ経験の一元化です。STM32CubeProgrammerにはFlashプログラミング・ツール、ファームウェア・アップデート機能などのユーティリティの機能がすべて備わっており、組込みシステム担当の開発者は必要な機能をすべて利用することができます。また、すべての主要なOSに対応し、内蔵のOpenJDK8-Libericaにより、簡単にインストールして利用できるように設計されています。ユーザ自身がJavaをインストールする必要もないため、互換性の問題で苦労することなく、STM32CubeProgrammerを体験できます。そして、このユーティリティには、グラフィカル・ユーザ・インタフェース(GUI)とコマンド・ライン・インタフェース(CLI)という2つの重要なコンポーネントが備わっているため、ビジュアル・キューでもスクリプト作成機能を使ってワークフローを最適化できます。
・STM32 FlashライタとSTM32デバッガ
STM32CubeProgrammerは、STM32マイクロコントローラのデバッグとFlash書込みに利用でき、この2つのプロセスを最適化する機能が搭載されています。バージョン2.6ではレジスタマップ全体をダンプして任意のレジスタをオンザフライで編集する機能が導入されています。以前は、レジスタ値を変更するには、ソース・コードを変更してリコンパイルし、ファームウェアを書き込む必要がありました。今回、新しいパラメータのテストや、ある値がバグの原因になるかどうかをさらに簡単に判定できるようになっています。また、STM32CubeProgrammerを使用してすべての外部メモリを一括書込みすることも可能になりました。従来であれば、外部メモリやSDカードへ書き込むためには、開発者が各プロセスを個別に開始する必要がありましたが、STM32CubeProgrammerはこれをワンステップで実行できます。
開発者にとってのもう1つの課題は、STM32CubeProgrammerを通過する大量の情報の解析です。すべてのログを追跡するということは非常に大変な作業です。この問題に対応するため、開発者が特定のprintf関数に色を割り当てられるカスタム・トレース機能を導入しました。これにより、開発者は特定の出力とログの残り部分を迅速に区別できるため、デバッグがはるかに明快かつ直感的になります。また、この機能の色の設定をSTの別の開発エコシステムであるSTM32CubeIDEと統合することも可能です。
・STM32セキュリティ・ソリューション
STM32CubeProgrammerは、STM32Cube開発エコシステムのセキュリティ・ソリューションにおいて重要です。このユーティリティにはTrusted Package Creatorが付属しており、Trusted Package Creatorを使用すると、開発者はOEMキーをハードウェア・セキュア・モジュールにアップロードし、同じキーを使用してファームウェアを暗号化できます。その後、OEM各社はSTM32CubeProgrammerを使用して、ファームウェアをSFI(セキュア・ファームウェア・インストール)対応のSTM32マイクロコントローラにセキュアにインストールできます。I2CおよびSPIインタフェースも使用可能なため、柔軟性が高まります。さらに、STM32L5は外部セキュア・ファームウェア・インストール(SFIx)もサポートしており、OEM各社はマイクロコントローラの外部のメモリ・モジュール上にある暗号化されたバイナリを書込みできます。
・Sigfoxのプロビジョニング
STM32CubeProgrammer
STM32WLマイクロコントローラを使用している場合は、STM32CubeProgrammerを使用してこのマイクロコントローラに書き込まれているSigfox認証情報を抽出できます。まず、開発者は136バイトの文字列をクリップボードにコピーするか、バイナリ・ファイルに保存します。次に、開発者はmy.st.com/sfxpにアクセスします。ここに認証情報を貼り付けると、ZIPファイル形式でSigfox資格情報を即座にダウンロードできます。そして、ダウンロードしたパッケージの中身をSTM32CubeProgrammer経由でマイクロコントローラにロードし、ATコマンドを使用してマイクロコントローラのSigfox IDおよびPACを取得します。最後に、https://buy.sigfox.com/activate/にアクセスして登録します。アクティベーションは2年間有効で、1日あたり140件のメッセージを1年間無料で送信できます。
STM32CubeProgrammerの新機能
・二段階認証
最新バージョンのSTM32CubeProgrammer 2.9では、JTAGまたはSTM32WB上のBluetoothスタック用ブートローダ経由で暗号鍵をプロビジョニングする際に、二段階認証システムがサポートされるようになりました。この機能により、メーカーはエンド・ユーザが更新しないようにBluetooth®スタックを保護できるようになっています。実際、開発者は手順を把握していれば、STのセキュア・ファームウェアでBluetoothスタックを更新できます。一方、メーカーは特定の環境を提供して保護したいと考える場合もあります。このような場合は、二段階認証システムを使用して、エンド・ユーザによる更新メカニズムへのアクセスを禁止できます。詳細については、アプリケーション・ノートAN5185をご参照ください。
・スクリプト・モード
この新しいソフトウェアでは、コマンド・ライン・インタフェース(CLI)が更新され、スクリプトを作成できるようになりました。スクリプト・マネージャがアプリケーションの一部として含まれるため、OSやシェル環境の影響を受けません。その結果、非常に共有しやすいスクリプトになります。もう1つの利点は、スクリプト・マネージャはターゲットへの接続を維持できることです。従来のバッチ・ファイルを使用する場合では、STM32CubeProgrammer CLIは手順ごとに再接続が必要となり、時間がかかりましたが、新しいスクリプト・マネージャはセッションを通して接続状態を維持できます。ローカル変数も処理でき、ローカル変数の算術演算や論理演算までサポートしているため、開発者は強力なマクロを作成し、複雑なプロセスをよりよく自動化できるようになります。
・PKCS#11のサポート
STM32CubeProgrammer 2.9では、STM32MP1向けにファームウェアを暗号化する際のPKCS#11のサポートが追加されました。公開鍵暗号化標準(PKCS)11はCryptokiとも呼ばれ、基本レベルの暗号化プロセスを定めている規格です。組込みシステム開発者は、APIを使用してこのメカニズムを利用できるため、需要が高まっています。STM32MP1では、PKCS#11により、秘密鍵の保管とSSP(Secure Secret Provisioning)のための暗号化プロセスを区別できます。
SSPは、メモリ保護ユニット(MPU)のセキュア・ファームウェア・インストールと同等です。開発者は、コードをOEM各社に送信する前にSTM32CubeProgrammerを使用して秘密・公開鍵方式でファームウェアを暗号化するため、サード・パーティはIPを読み取れません。アセンブリ時、OEM各社は提供されている読み取れない暗号鍵を含むハードウェア・セキュア・モジュール(HSM)を使用し、MPUが内部で復号するファームウェアをロードします。ただし、今までは、MPUのコードを暗号化する開発者は秘密鍵にアクセスできました。問題は、このような重要な情報へのアクセスを制限する必要がある企業もあることです。新しいSTM32CubeProgrammerとPKCS#11により、開発者による暗号化プロセス中も、秘密鍵はHSMで非表示のままとなります。
過去の開発のヒントはこちら