無線STM32WBと汎用STM32G4比較

STマイクロエレクトロニクスの近距離無線通信機能付きSTM32WB(Cortex-M4/64MHz)と、汎用メインストリームSTM32G4(Cortex-M4/170MHz)を比較します。Bluetoothなどの超省電力無線通信は、IoTデバイスに好適です。無線機能付きSTM32WBのIoTアプリケーション開発方法を調査し、汎用STM32G4でSTM32WBのIoTアプリケーションが開発できるか検討しました。

ディアルコアSTM32WBとシングルコアSTM32G4

STM32WBとSTM32G4、どちらもARM Cortex-M4コアを持つMCUです。違いは、STM32WBが、無線処理専用Cortex-M0+コア/32MHz内蔵のディアルコアMCUという点です。

Cortex-M4とM0+コア間のアプリケーションは、プロセス間通信コントローラ(IPCC)によりノンブロックイングで割込み利用のメッセージ交換が可能です。IPCCは、コアをSleep/StopモードからRunモードへ復帰させることもできますので、両コアは別々に低消費電力動作ができます。

STM32WBシリーズの紹介スライドP2から抜粋したSTM32WBとSTM32G4の位置づけが下記です。ワイヤレスMCUのSTM32WLとSTM32WBの違いは、WLはLoRaWANなど、WBはBluetoothなどのサポート無線規格が異なる点ですが、ディアルコア構成は同じです。

STM32WBとSTM32G4の位置づけ(出典:STM32WBの紹介)
STM32WBとSTM32G4の位置づけ(出典:STM32WBの紹介)

無線コプロセッサ:Cortex-M0+コア

STM32WBのCortex-M0+コアは、Bluetooth 5、ZigBee、OpenThreadなど2.4GHz帯無線通信処理専用です。ユーザ(開発者)は、利用する無線規格(BLE⇋ZigBeeなどのブリッジも可能)を選択し、STマイクロエレクトロニクス開発の無線専用ファームウェアをCortex-M0+へダウンロードします。但し、このファームウェアに手を加えることはできません。

言い換えれば、Cortex-M0+側の無線処理はSTの動作保証付きで、ファームウェアバージョンアップなどのメインテナンスは必要ですが、ユーザ変更などは不必要、ブラックボックスとして扱える訳です。

つまり、見た目はディアルコアですが、STM32WBのCortex-M0+は無線コプロセサで、外付け無線モジュールと同等です。従って、ユーザが開発するSTM32WBのIoTアプリケーションは、シングルコアのSTM32G4と同じ手法で開発が可能です。

Bluetooth 5(BLE含む)とサンプルプログラム

STM32WBの無線規格は、Bluetooth5やZigBeeなど複数プロトコルをサポートしています。このうち、IoTセンサの少量データ収集アプリケーションに好適なBluetooth5とBLEの詳細は、Bluetooth Low Energyプロトコルの基礎知識に説明があります。BLEを利用するIoTセンサ・アプリケーションを開発する場合には、最低限必要となる知識です。

STM32WBには、開発環境STM32CubeWBP-NUCLEO-WB55評価ボードで動作する様々なBLEサンプルプログラムがあります。サンプルプログラムの解析やこれらを応用したIoTアプリケーション開発時、BLE基礎知識が役立ちます。

また、P-NUCLEO-WB55評価ボードとスマートフォンをBLE接続し動作するサンプルプログラムもあります。

FSU:Firmware Upgrade Services

ディアルコアSTM32WBのCortex-M4アプリケーション開発時は、Cortex-M0+ファームウェアも同時にFlashへ書込みます。この点が、シングルコアSTM32G4開発と異なる部分です。

このFlash書込みには、STM32CubeProgrammmerのコマンドライトツール(CLI)で提供されるFSU:Firmware Upgrade Servicesを使います(動画説明はコチラを参照してください)。

簡単に言うと、Cortex-M4とCortex-M0+でメモリ共有中のFlashへ、ユーザ開発Cortex-M4アプリケーションを書込む時に、同時に通信Cortex-M0+ファームウェアも更新する仕組みで、手順さえ守れば通常のSTM32CubeIDEを使ったシングルコアSTM32G4のFlash書込み同様簡単です。

Flash書込み後は、STM32G4と同じ方法でアプリケーションデバッグを行います。

無線通信機能付きディアルコアSTM32WBと汎用シングルコアSTM32G4比較結果

P-NUCLEO-WB55とNUCLEO-G474RE
STM32WB評価ボードP-NUCLEO-WB55(左)とSTM32G4評価ボードNUCLEO-G474RE(右)

本稿で示したSTM32WB関連情報は、昨年末に行われたSTマイクロエレクトロニクス日本語ウェビナー資料から抜粋したもので、STM32マイコン体験実習(Bluetooth®編)でオリジナル動画とスライドが公開中です。また、STM32WBトレーニング資料Cortex-M4トレーニング資料も参考にしました。

前章までで、無線通信機能付きディアルコアSTM32WBと汎用シングルコアSTM32G4を比較し、下記を得ました。

  • ディアルコアSTM32WBのCortex-M0+側は、通信コプロセサでブラックボックとして扱える。
  • 例えば、IoTセンサデータ収集などのCortex-M4側IoTアプリケーションを、HAL(Hardware Abstraction Layer)APIで開発すれば、通信部分は異なるがデータ収集部分はSTM32WBとSTM32G4で共通開発できる。
  • STM32WBとSTM32G4で異なる点は、評価ボードへのFlashプログラミングだが、手順は簡単。
  • STM32WBのFlashプログラミングで用いたSTM32CubeProgrammerは、STM32G4のRoot of Trustで用いたもので、STM32WBでもSTM32G4と同様のRoot if Trustを実現できる。

HAL APIはコチラの関連投稿などを、STM32G4のRoot of Trustはコチラの関連投稿を参照してください。

STM32WBのIoTアプリケーションを汎用STM32G4で開発

最初の図に示したCortex-M4動作最高周波数の64MHzと170MHz、デバイスFlash/RAM容量差に注意すれば、STM32WBのIoTアプリケーションを汎用STM32G4で開発することは、可能でメリットもあると思います。

前提条件として、HAL API開発であること、STM32WBのIoTアプリケーション用Flash/RAM容量が、無線通信コプロセサCortex-M0+が使っても十分残ること、無線通信の代用としてUSARTなどの有線通信を使うこと、などです。FreeRTOS利用が良い場合があるかもしれません。

無線コプロセサCortex-M0+使用容量は、かなり少なく(ウェビナーでは使用量が公表されましたが数値未取得)Cortex-M4 IoTアプリケーション用空き容量は十分あります。また、汎用STM32G4の方が高速動作のため開発制約条件も緩いです。無線では、通信断時のエラー処理検討が必要ですが、有線ですのでエラー処理なしで本来の通信処理は開発可能です。

つまり、STM32WBの無線通信エラー処理以外は、ほぼ全て汎用STM32G4で代用開発が可能です。

STM32G4で代用開発済みアプリケーションをSTM32WBへ移植し、IoTプロトタイプ開発をスピードアップするメリットは多いと思います。STM32 Cortex-M4コア対応の弊社テンプレートは、このようにIoTプロトタイプ開発の加速を目標にしようと考えています。

具体的には、従来テンプレートとは「対象者レベルと目的を変える」ことを検討中です。

  • 従来Cortex-M0/M0+/M3テンプレートは、対象者が初心者/中級レベル開発者で、MCU基本動作(Simpleテンプレート)とADC/LCD動作(IoT汎用Baseboardテンプレート)を提供し、基本的なMCU理解と開発が目的のテンプレート
  • Cortex-M4テンプレートは、対象者が中級レベル以上の開発者で、MCU基本動作などは省き、IoTプロトタイプ開発高速化が目的のテンプレート

本稿説明がすんなりとご理解頂ければ、中級レベル以上の開発者、Cortex-M4テンプレート対象者だと思います。

Cortex-M4テンプレートの対象レベルと目的
Cortex-M4テンプレートの対象レベルと目的

Cortex-M4クラスMCUは、どれも高速で大容量Flash/RAMを実装し高いポテンシャルを持っています。つまり、IoTプロトタイプ開発とその評価には、最適なデバイスです。

ある程度MCU開発経験を持つ開発者が、従来MCU開発では少なかった無線通信や高度なIoTセキュリティなどのIoTアプリケーション特有の重点ポイントに注力でき、即座にIoTプロトタイプ開発(代用開発含む)とそれを評価するツールとなること、これがCortex-M4テンプレートの目標です。

評価の結果、仮にMCUやIoTセンサの再選択が必要となっても、開発部分の多くが次に即座に流用できるソフトウェア資産となるには、汎用STM32G4によるIoTプロトタイプ開発が有効だと思います。

News

2021年1月12日、STM32CubeとMicrosoftのAzure RTOSが統合、STM32マイコン開発環境で協力というニュースが発表されました。STのCortex-M4テンプレートは、FreeRTOSとAzure RTOSの両方が必要かもしれません。

STブログに、上記の詳細情報があります。


ARM MCU変化の背景

昨今のARM MCU事情、そして今後の方向性”という記事が、2019年11月22日TechFactoryに掲載されました。詳細は記事を参照して頂き、この中で本ブログ筆者が留意しておきたい箇所を抜粋します。その結果、ARM MCU変化の背景を理解できました。

現在のARM MCUモデル

Cortex-Mコアだけでなく、周辺回路も含めた組み合わせARM MCUモデルが、端的に整理されています。

・メインストリームは、Cortex-M4コアに周辺回路搭載
・ローパワーは、Cortex-M0+に低消費電力周辺回路搭載
・ローコストは、Cortex-M0に周辺回路を絞って搭載

例えば、STマイクロエレクトロニクスの最新STM32G0xシリーズのLPUART搭載は、ローパワーモデルに一致します。各Cortex-Mコアの特徴は、コチラの投稿の5章:Cortex-M0/M0+/M3の特徴などを参照してください。

ARM MCUの新しい方向性

2019年10月時点で記事筆者:大原雄介氏が感じた今後のARM MCU方向性が、下記4項目です。

  1. ハイエンドMCU動作周波数高速化、マルチコア化
  2. RTOS普及
  3. セキュリティ対応
  4. RISC-Vとの競合

以下、各項目で本ブログ筆者が留意しておきたい箇所を抜粋します。

1.ハイエンドMCU動作周波数高速化、マルチコア化

動作周波数高速化は、NXPのi.MX RT 1170のことで、Cortex-M7が1GHzで動作。i.MX RT1170は400 MHz動作のCortex-M4も搭載しているディアルコアMCU。

これらハイエンドMCUの狙いは、性能重視の車載MCU比べ、コスト最重視の産業機器向け高度GUIやHMI:Human Machine Interface用途。従来の簡単な操作パネルから、車載のような本格的なGUIを、現状の製造プロセスで提供するには、動作周波数の高速化やマルチコア化は必然。

2.RTOS普及

普通はベアメタル開発だが、アプリケーション要件でRTOS使用となり、ポーティング例は、Amazon FreeRTOSが多い。マルチコアMCUでは、タスク間同期や通信機能実現には、ベアメタルよりもRTOS利用の方が容易。また、クラウド接続は、RTOS利用が前提となっている。

3.セキュリティ対応

PAS:Platform Security Architectureというセキュリティ要件定義があり、これが実装済みかを認証するPSA Certifiedがある。PAS Certified取得にはTrustZoneを持つATM v8-MコアCortex-M23/33が必須ではなく、Cortex-M0やM4でも取得可能。但し、全MCUで取得するかは未定で、代表的なMCUのみになる可能性あり。

4.RISC-Vとの競合

ARM CMSISからずれるCustom Instruction容認の狙いは、競合するRISC-Vコアへの対抗措置。RISC-V採用製品は、中国では既に大量にあり、2021年あたりに日本でもARMかRISC-Vかの検討が発生するかも?

ARM MCU変化背景

本ブログ対象の産業機器向けMCUの1GHz動作や、ディアルコアMCUの狙いは、ADAS(先進運転支援システム)が引っ張る車載MCU+NVIDIA社などのグラフィックボードで実現しつつある派手なGUIを、10ドル以下のBOM:Bill Of Matrixで実現するのが目的のようです。また、産業機器向のMCUのAIへの対応も気になる点です。これにら向け、各種ツールなども各ベンダから提供されつつあります。

ハイエンドMCU開発でRTOS利用が一般的になれば、下位MCUへもRTOSが利用される場面は多くなると思います。タクス分離したRTOSソフトウェア開発は、タスク自体の開発はベアメタルに比べ簡単で、移植性や再利用性も高いからです。ベアメタル開発は、RAMが少ない低コストMCUのみになるかもしれません。

RTOS MCU開発も、Windowsアプリケーション開発のようにOS知識が(無く!?)少なくても可能になるかもしれません。

MCUベンダのセキュリティ対応は、まだ明確な方針が無さそうです。RTOSと同様、IoTアプリケーション要件がポイントになるでしょう。総務省による2020年4月以降IoT機器アップデート機能義務化予定などもその要件の1つになる可能性があります。

Custom Instructionは、コチラの投稿の5章でベンダ独自のカスタム命令追加の動きとして簡単に紹介しましたが、その理由は不明でした。これが、競合RISC-Vコアへの対抗策とは、記事で初めて知りました。

本ブログ記事範囲を超えた、広い視野でのMCU記事は貴重です。

来年開発予定のベアメタルCortex-M4テンプレートへ、RTOSの同期や通信機能を簡易実装できれば、より役立ち、かつRTOS普及へも対抗できるかもしれないと考えています。クラウド接続IoT MCUは、Amazon FreeRTOSやMbed OS実装かつ専用ライブラリ利用が前提なのは、ひしひしと感じています。

ARM Cortex-M4とM0+アプリケーションコード互換

NXP MCUXpresso SDK利用を利用すると、LPC845 Breakout board用に開発した1秒赤LED点滅アプリケーションコードが、そのままFRDM-KL25Zへ流用できることを前回投稿で示しました。ただ、どちらも同じARM Cortex-M0+コアのMCU評価ボードなので、読者インパクトは少なかったかもしれません。

そこで、LPC845 Breakout board(Cortex-M0+/30MHzコア)のLED点滅アプリケーションコードが、そのままCortex-M4/100MHzコアのLPCXpreosso54114へ流用できることを示します。異なるARMコア間でのアプリケーションコード互換の話です。

ARMコアバイナリ互換

Cortex-Mxのバイナリ互換性(出典:STM32L0(Cortex-M0+)トレーニング資料)
Cortex-Mxのバイナリ互換性(出典:STM32L0(Cortex-M0+)トレーニング資料)

ARMコアのバイナリ上位互換を示す図です(関連投稿:Cortex-M0/M0+/M3比較とコア選択の2章)。このバイナリコード包含関係は、Cortex-M0バイナリコードならCortex-M4でも動作することを示しています。

但し、この包含関係を理解していても、Cortex-M0バイナリコードをそのままCortex-M4へ流用する開発者はいないと思います。

ARMコアアプリケーションコード互換

Cortex-Mxのアプリケーションコード互換性
Cortex-Mxのアプリケーションコード互換性

MCUXpresso IDEのARMコアアプリケーションコード互換を示す図です。左がLPC845 Breakout board(Cortex-M0+/30MHzコア)の1秒赤LED点滅アプリケーションコード、右がCortex-M4/100MHzコアのLPCXpreosso54114の1秒赤LED点滅アプリケーションコードです。

コード差は、L59:LPCXpreosso54114評価ボード動作クロック設定:48MHz動作のみです。例えば、96MHzなどの他の動作周波数へ設定することも可能です。コード上で動作周波数を明示的に表示するために異なりましたが、機能的には両者同じコードと言えます(L59をマクロで書き換えれば、同一コード記述もできます)。

図下のInstalled SDK Versionが、どちらも2019-06-14で一致していることも重要です。Versionが異なると、例えばGPIOのAPIが異なることがあるからです。各SDKリリースノートでAPI差の有無確認ができます。※LPCXpreosso54114 SDKのMCUXpresso IDE設定方法は、コチラの投稿の5/6章を参考にしてください。

1秒赤LED点滅という簡単なアプリケーションですが、Cortex-M0+とCortex-M4の異なるARMコア間でコード互換性があることが解ります。

動作周波数の隠蔽とIO割付

評価ボード動作周波数が異なれば、無限ループ回転速度も異なります。従って、互換性を持たせるコード内に、無限ループ内の回転数でLED点滅させるような処理記述はできません。コードに時間要素は組込めないのです。

1秒点滅の場合は、L77:SysTick_DelayTicks()でループ回転数をカウントし、1秒遅延を処理しています。これにより、GPIO_PortToggle()が時間要素なしとなり、異なる動作周波数のARMコアでもアプリケーションコード移植性を実現しています。

SysTick_DelayTick()と1ms割込みによりカウントダウンする処理コードが下記です。ここも、割込みを利用することでコード移植性を実現しています。

動作周波数隠蔽によるARMコアアプリケーションコード移植性の実現
動作周波数隠蔽によるARMコアアプリケーションコード移植性の実現

左のLPC845 Breakout boardと、右のLPCXpreosso54114のコード差は、L16:赤LEDのIO割付のみです。評価ボード毎に異なるIO割付となるのは、やむを得ないでしょう。L12からL16のDefinition箇所を、別ファイル(例えばIODefine.hやUserDefine.h)として抽出すれば、同一コード記述も可能です。

ARMコアアプリケーションコード互換メリット

以上のように、ARMコアアプリケーションコード互換を目的にした記述や工夫も必要です。しかし、一旦互換コードを開発しておけば、開発資産として他のARMコア利用時にも使えます。その結果、開発速度/効率が高まります。

IoT MCUは、センサ入力やLED出力などのメイン処理以外にも、日々変化するセキュリティ処理への対応は、必須です。メイン処理が出来上がった後での、セキュリティ処理追加という手順です。

セキュリティ対策は、セキュリティライブラリ等の使用だけでなく、いつどのようにライブラリを活用するか、その時のMCU負荷がメイン処理へ及ぼす影響等、検討が必要な事柄が多くあります。

少しでも早くメイン処理を仕上げ、これら検討項目へ時間配分することがIoT MCU開発者には要求されます。この検討時間稼ぎのためにも、ARMコアアプリケーションコードの開発資産化は必須でしょう。

※プロトタイプ開発は、初めから厳しい条件で開発するよりも、最速のCortex-M4で行い、全体完成後Cortex-M0+/M3などへアプリケーションコードを移植するコストダウンアプローチも名案だと思います。

P.S.:2019年9月4日、MCUXpresso IDEがv11.0.1へ更新されました。旧MCUXpresso IDE v11.0.0 [2516]利用中の方は、Help>Check for Updatesではv11.0.1へ更新されません。新にMCUXpresso IDE v11.0.1 [2563]のインストールが必要です。新MCUXpresso IDEインストール方法は、コチラの4章を参照ください。

STM32G0動画と専用テンプレート

STマイクロエレクトロニクス(以下STM)の公式ブログで、STM32G0を理解できるPart.0~10の動画(英語版)を紹介しています。
各動画は、休憩時間に視聴するのに丁度良い6分から15分程度の長さです。

動画リスト

13:13     Pt. 0, Install Procedure

6:05       Pt. 1, Saving Content of the Flash of the STM32

13:47     Pt. 2, Blinky

13:09     Pt. 3, PWM

9:10       Pt. 4, External Interrupt

14:20     Pt. 5, Low Power (Pt. 1)

6:23       Pt. 6, Low Power (Pt. 2)

13:19     Pt. 7, Printf

13:27     Pt. 8, Low Layer Drivers

17:37     Pt. 9, DMA

15:14     Pt. 10, Flashing STM32

少し聞きにくい英語ですが、スライドを見るだけでも内容は解ると思います。

開発環境

動画のIDEは、KeilのSTM32G0/F0/L0専用無償版を使っています。既にSTM32CubeIDEやSW4STM32を利用中の方は、これらIDEとKeil専用版を同時インストールすると、STM32G0/F0/L0のみコンパイル可能となるトラブルが発生するらしいので注意してください。

IDE以外は、コード生成ツール:STM32CubeMX、評価ボード:Nucleo-G071RB、通信アプリ:Tera Termなどおなじみの環境での解説です。

STM32G0のSTM32F0/F1をカバーする広い守備範囲、Low Layer API開発メリットや重要性などが理解できると思います。残念なのは、STM32G0x全シリーズ搭載の最新ADC解説が無いことです。ADCに関しては弊社関連投稿を参照ください。

STM32G0x専用テンプレート

動画Part8紹介のLL APIを活用したSTM32G0x専用テンプレートを発売中です。

STM32G0xシリーズのプロトタイプ開発着手時に必要となるLPUARTやLED制御などの複数サンプルソフトがあらかじめ実装済みで、評価ボードADC入力変換値のTera Term出力も実装済みです。

STM32G0xシリーズ性能をフルに発揮したアプリケーション早期開発や、STM32G0習得に最適です。

ご購入、お待ちしております。

STM32G0x専用テンプレート発売

LL API利用のSTM32G0x専用テンプレートを、2019年6月1日発売開始します。

STマイクロエレクトロニクス(以下STM)2018年12月新発売のSTM32G0xデバイスは、高性能・低電力なCortex-M0+と70nm新プロセス動作速度向上により、STM32G0x単独で従来汎用STM32F0/F1をカバーする性能と超低電力動作、低価格が特徴です。

このSTM32G0x専用LL (Low-Layer) API利用テンプレートが、今回1,000円(税込)で発売するSTM32G0x専用テンプレートです。

※従来から販売中のSTM32Fxテンプレートは、HAL API利用の汎用テンプレートです。

STM32G4シリーズ追加、全5種となったSTM32 Mainstream MCUs

2019年5月28日、超高性能汎用STM32G4xが発表されました。これでSTM汎用MCUは全5種となりました。一覧が下図です。

STM32汎用MCUラインナップ
STM32汎用MCUラインナップ(出典:STM32 Mainsterm MCUsに加筆)

STM32G0x専用テンプレートは、軽量・高速・エキスパート向きLL APIを利用します。STM32G0x性能をフル発揮するアプリケーションのプロトタイプ開発に最適です。

※STM32G0xや専用テンプレートの本ブログ関連投稿は、下欄タグ🏷:STM32G0x、または、専用テンプレートをクリックしてください。

STM32G0x専用テンプレート適用例2種、API比較評価用2種

LL APIとHAL APIの比較評価のため、汎用テンプレートをSTM32G0xへポーティングしたHAL APIテンプレートも添付します。同一アプリケーションでのLLとHALのリソース使用量、ユーザ記述量、API可読性などを具体的に評価・分析できます。全て評価ボード:Nucleo-G071RB上で動作確認済みです。

STM32G0x専用テンプレート適用例
STM32G0x専用テンプレート適用例

SimpleTemplateは、最も簡単なテンプレート適用例で、基本的なSTM32G071RB周辺回路とテンプレート動作が理解できます。AdcTemplateは、全STM32G0xシリーズ共通周辺回路:2.5Msps 12ビットADC制御をSimpleTemplateに追加し、全てのSTM32G0xプロトタイプ開発の起点となるテンプレートです。

SimpleTemplate、AdcTemplateともにLL APIを利用したSTM32G0x専用テンプレートと、汎用テンプレートをSTM32G0xへポーティングしたHAL APIテンプレートを提供します。

STM32G0x専用テンプレート適用例は、評価ボードのGPIOやLED、LPUART通信など必須の複数STM公式サンプルプロジェクトが実装済みで、すぐにプロトタイプ開発着手ができるLL API利用アプリケーションプロジェクトです。

※HAL版はAPI比較評価用です。2019年5月末時点のコード生成ツールSTM32CubeMX(v5.2.1)とSTM32G0 FW(v1.2.0)は、LL APIでのみSTM32G0x性能をフルに引き出すことができます。

※STM32MCU間でアプリケーション移植・流用性を最大限に保証するHAL APIを利用したソフトウェア開発を希望される方は、STM32Fxテンプレートの購入をご検討ください。

付属説明資料でLL APIアプリケーション開発着手時の障害解消

STM32G0x専用テンプレート付属説明資料のもくじを示します。

STM32G0x専用テンプレート付属説明資料もくじ
STM32G0x専用テンプレート付属説明資料もくじ

説明資料P1~P3は、STM32G0x専用テンプレートサイトから無料ダウンロード可能です。全14ページの詳細な説明により、LL APIが理解でき、STM32G0xデバイス専用アプリケーションのプロトタイプ開発着手時の様々な障害を取り除き、スピード開発するのに専用テンプレートは最適です。

STM32G0x専用テンプレートは、コチラの手順でご購入可能です。よろしくお願いいたします。

*  *  *

STM32CubeMX v5.2.1改版時の注意点

2019年5月24日、STM32CubeMXがv5.2.1へ改版されました。インストール時の注意点を示します。

STM32CubeMX v5.2.1改版
STM32CubeMX v5.2.1改版

STM32CubeMX v5.2.1ダウンロードは、Install Nowクリックのみです。但しダウンロード後、一旦STM32CubeMXを終了し、再起動時は、下記のように管理者と してインストールを実行する必要がありますので注意してください。

STM32CubeMX v5.2.1.Update
STM32CubeMX v5.2.1.Update。インストールは管理者として実行する必要がある。

RL78 Quick Solution

RL78 Quick Solutionは、RL78マイコンのアプリケーション「実例」です。従来ベンダ提供サンプルソフトの枠を超え、アプリ動作ハード基板:PCB、部品BOM、ユーザーズマニュアル(残念ながら英文ですが…)も「ルネサスが提供」します。

RL78 Quick Solution
RL78 Quick Solution

アプリケーション実例の貴重性

PCB Soulution (Source: R01AN3909EC0100 Rev.1.00)
PCB Soulution (Source: R01AN3909EC0100 Rev.1.00)

顧客に製品を納める方法は色々ありますが、PCBも含めて納めることは稀です。製品を求める顧客にとってPCB(ガーバーファイル)の必要性は低く、逆に開発側にとってPCBはノウハウの塊だからです。

例えば、Figure 3.3/3.4で太い配線を部分的に使っています。これは電流容量を稼ぐためです。回路設計者が、回路図にコメントを付記しても、PCB化時に実際にどの太さを用いるかは、アートワーク担当者が決めます。また、どのように配線するかでノイズ耐力や部品実装のし易さも変わります。PCBはこれら検討結果が反映されており、開発側の実力を示しています。

ベンダのMCU評価ボードは、STM32 Nucleo boardなどでもPCB&BOM掲載が一般的になってきました。しかし、アプリケーションレベルでのPCB掲載は、珍しいと思います。つまり、このRL78 Quick Solutionは、アプリ開発側にとって貴重な情報源と言えます。

ソリューション例

ソリューション例(サイトより)
ソリューション例(サイトより)

2017年12月現在のソリューション例が、上記です。例示したセーフティライトカーテン以外に10種掲載中です。ガーバーファイルやBOMがありますので、ハード製作は出来ます。勿論、動作ソフトもサンプルソフトではなく、アプリケーションソフト(!)が添付されています。

*  *  *

個人的意見を言わせてもらえれば、コストレベルでは、さらに改良の余地が残されたソリューションが多いと思います。ルネサスRL78マイコンを存分(!)に複数使っている箇所があるからです。しかし、高性能マイコン1個で開発するより、複数MCUの方がソフト開発は楽でしょう。機能追加も容易です。

従って、MCUコストとソフト開発リスクのどちらに重点を置くかで、意見が分かれるでしょう。

ルネサスがこのアプリケーション例を公開した背景は、より多数のルネサスRL78マイコンを、より簡単開発で購入してもらうためだと思います。それでも、開発側にとって貴重な情報であることに変わりありません。

ソリューションは、定期的に追加されます。ソルーション例に近いアプリケーション開発を検討されている方は、是非参考にしてください。

レスポンシブサイトと説明資料

HappyTechサイトを年内完成目標に、レスポンシブ対応:Responsive Web Designへ改良します。

数年前にサイトを開発した時は、1ページ表示が流行っていたので、これに倣って(ならって)開発しました。しかし、スマホやタブレットなどのモバイルデバイスが増え状況が変わりました。

サイト内容のコンテンツ追加・削除もしにくい構成でしたので、流行のレスポンシブサイトに変更します。

Responsive Web Design
Responsive Web Design

レスポンシブテンプレートを探す

手っ取り早くレスポンシブサイトを開発する方法は、ネットに溢れるレスポンシブテンプレートを利用することです。

私は、HTML5 UPというサイトのテンプレートを利用しました。テンプレート説明資料はありませんので、開発には、多少のHTML、CSSの解読技術とベース知識が必要です。

レスポンシブテンプレートメリット

記載内容はそのままに、ユーザが使う画面大小に合わせて自動的に表示レイアウトを変えるのがレスポンシブサイトです。ご覧のブログはWordPressを使っていますので、利用テーマをレスポンシブ版に変えればそれで出来上がりますが、サイトの場合は、自分でHTMLとCSSを使って作り直す必要があります。

基本部分が出来上がったHTML5 UPテンプレートに、修正を加え動作を確認しながら、短期にサイトを開発できるのがテンプレート利用のメリットです。

マイコンテンプレートメリット

このメリットは、弊社マイコンテンプレートでも全く同じです。

サイト開発と同様、マイコンも動き出すまでに手間がかかります。また、動き出した後も、修正や変更が生じます。テンプレートを使うと、この動き出しまでの時間を、殆ど0に短縮できます。

マイコンAD変換:ADCを例に説明します。

ADCは、サンプルソフトも多く使い方も良く知られています。しかし、実際にセンサを接続して動作させると、複数回ADCの平均を計測値とするか、あるいは、1回のADCを計測値とするかは、アプリにより異なります。

通常は、ノイズ対策として平均値を用いる場合が多いです。それでも、測定間隔や何回の計算で平均を求めるかについては、センサとマイコンを接続し、実際に動作させカット&トライ:試行錯誤で決めるのがBestです。

この試行錯誤に適したソース構成が初めから出来上がっていれば、試行も容易でスパゲッティーコード(!?)にもなりません。

つまり、立ち上げを早くし、実動作に近い環境でプログラミングでき、しかもスパゲッティー化を避けられるのがマイコンテンプレートのメリットです。

マイコンテンプレート説明資料

説明資料があると、テンプレート修正や変更が容易になります。テンプレート開発者の考え方、指針が解るからです。最近のソースコードは、数行に渡るほどの多くの英語コメントが付いていますが、コメント文だけでは、これら考え方、指針は表現できません。

説明資料が無い場合は、どこを修正・変更すれば良いがが不明で、この場所を探すのに余分な時間が必要になります。マイコンソースコードは、その傾向が特に強く修正や変更で直にスパゲッティーコードになります。

標準的な決まりが多くあるHTMLやCSSと異なり、マイコンソースは比較的自由に記述できるからです。その結果たとえ同じ職場でも、他人が開発したマイコンソースは解読が難しいのが現状です。標準的な知識レベルがバラバラなのも原因の1つでしょう。デサインレビューの結果が反映され難いのです。

そこで、マイコンテンプレートには説明資料を添付し、標準的と思う私の考え方や開発指針を多く記載しています。テンプレートソースコードにも豊富な(冗長な!?)日本語コメントが付いています。

勿論、これら考え方や指針は、あくまでご購入者様のテンプレート理解が目的で、押付けではありません。テンプレート版権は、ご購入者様個人に帰属しますので、ご自分の考え方を反映した改良も自由です。

ご購入者様のご質問にも丁寧にお答えします。

マイコンテンプレートは、初心者~中級者向けです。しかし、全ての方のレベルに合わせた説明は、不可能です。それぞれの方でご質問は、異なります。広いレベルの方に参考になると思ったご質問に関しては、テンプレート改版時、説明資料へ付け加えています。

以上の方針で、マイコンテンプレート説明資料やソースコードを作成しています。

マイコンテンプレートご購入者は、または購入検討中の方であっても、いつでも、どのようなご質問でも、大歓迎です。お気軽にinfo@happytech.jpまでお寄せください。

CS+のスマート・ユーティリティ(スマート・ブラウザー編)

2017年1月にCS+パッケージバージョンV5.00.00  [05 Dec 2016]がリリースされました。確かバージョンV4から追加された3種のスマート・ユーティリティのうち、スマート・ブラウザーを説明します。

スマート・ユーティリティ
スマート・ユーティリティ

スマート・ブラウザー

組込マイコン:MCU開発を上手く効率的にする手法は、今風に言うと“サンプルソフトファースト”です。

分厚いユーザーズ・マニュアルを、初心者が読んでも眠くなるだけで時間のムダです。開発事案に近い例や使用する周辺回路が記載されたサンプルソフト=アプリケーション・ノートを先ず読んで、不明な箇所をユーザーズ・マニュアルの目次から拾い読みすれば十分です。

この開発例や周辺回路のサンプルソフトを見つけるのに便利なのが、CS+に追加されたスマート・ブラウザーです。

スマート・ブラウザー
スマート・ブラウザー

アプリケーション・ノートタブを選び、タイトルや機能で並び替えするとクイックにサンプルソフトが選定できます。ルネサスサイトでもアプリノート検索はできますが、CS+のスマート・ブラウザーの方が使い易く検索も高速です。

アプリノートは、ユーザーズ・マニュアルと比べると、一般的に内容をサラッと記述します。詳しくくどく書くこともできますが、読まれることを重視するとこの書き方になるのだと思います。サンプルソフトの読み方は、コチラも参照してください。

アプリノートの次に登場するのがユーザーズ・マニュアルです。こちらは、丁寧に記述されていますので、アプリノートの不明点を明確にし、その箇所を読めば時間節約ができます。近頃の開発は、1からディスクリートで着手する(≒オートクチュール)よりも、既にある既成品を上手く組み合わせて早期に開発する方(≒プレタポルテ)が好ましいと思います。これは、ハード/ソフトともに言えることです。

いかに既製品、この場合はアプリノートを見つけ、それを破綻なく組み合わせて顧客へ提供するのも1つの開発技術です。

複数アプリノートを簡単に組み合わせるマイコンテンプレート

1つのアプリノート流用で開発完了することは、稀です。大抵は、複数のアプリノートの部分利用、応用が必要となります。アプリノートは、内容をサラッと記述するために、初期設定+無限ループの2構成が殆どです。複数アプリを流用するには、アプリノート記載の無限ループ内処理の取り込み方が問題です。

そこで登場するのが弊社マイコンテンプレートです。マイコンテンプレートは、1個の無限ループ内に複数の時分割アプリランチャーを備えています。そこで、このランチャーに必要となるアプリノート処理を組み込めば、簡単に複数アプリノート処理をテンプレートで起動できます。しかも、低電力動作SleepやHaltの機能も追加しています。

マイコンテンプレートの詳細は、コチラを参照してください。

MCU開発は、開発完了が見極め難い性質があります。なるべく早く1次開発物を顧客に見せ、そのうえで2次開発へと進む段階を追った開発、いわゆるプロトタイピング開発もこの性質対応の1方策です。
このプロトタイピング開発の際には、是非マイコンテンプレートを活用し早期に、しかも拡張性や応用性もある開発物提供に役立ててください。

マイコンIDE更新

扱うMCUデバイスの追加、WindowsやiOSなどのOS変更、Eclipseそのものの変更、バグ修正など様々な要因によりマイコン開発環境:IDEの更新は発生します。今回は、マイコンIDE更新について解説します。

更新通知と更新理由

マイコンアプリケーションソフト開発中ならば、リスクが増える可能性もあるIDE更新は避けたいものです。
このため「開発者が更新をするか否かを選択」できるのがマイコンIDEの特徴です。Windowsと大きく異なる点ですね。

更新判断には、「更新が発生」したか、「更新の理由」は何か、この2つを知る必要があります。この情報をIDEのWelcome画面のWebリンクで教えてくれるのがEclipseベースのIDEです。NXPのLPCXpressoの例を示します。

LPCXpresso Welcome page
LPCXpresso Welcome page

赤矢印のリンク先をみると、最新版IDEと、変更内容などが解ります。使用中のIDEと版数が異なる場合には、この内容を読んで更新判断ができます。新旧LPCXpressoは、緑囲いで示した版数毎に別フォルダへインストールされるので、IDE更新リスクがフォルダ内に閉じ込められるので安心です。

また、NXPに買収された旧FreescaleのKinetis Design Studio: KDSの例が下図です。Welcome画面に加え、Help>Check for Updatesで更新確認と新版インストールまでバックグラウンドで可能です。この機能は、LPCXpressoにはありません。

Kinetis Design Studio Check for Updates
Kinetis Design Studio Check for Updates

但し、私の環境では、ベースとなるEclipseのメジャー更新が関係しているのかもしれませんが、KDS V3.1からV3.2への更新ができませんでした。V3.2更新は、別途インストーラで可能です。やはりIDE更新確認ツールがあっても、時々サイトでIDEの最新版確認は、必要だと思いました。

また、CypressのPSoC Creatorは、Update Managerツールで更新確認とインストールができます。旧版はアーカイブ保存されるので、万一最新版にトラブルが発生しても安心です。

Cypress Update Manager
Cypress Update Manager

以上3社のマイコンIDEは、どれもEclipseベースのIDEですが、更新方法や旧版の扱いは各社異なります。

一方、ルネサス独自仕様のIDE:CS+もアップデート・マネジャーツールで更新します。独自仕様なので、細かい更新内容確認や、一部選択更新なども可能です。ツール・ニュースなどで更新、バグ情報を知らせてくれるのも役立ちます。
また、更新前に、「開発ツールをパックして保存(K)…」を実行すると、更新トラブル対策も可能です。

Runesus CS+ Packing tool
Runesus CS+ Packing Tool

マイコンIDE更新を安全にするには

マイコンIDEの更新トラブル回避には、OS起因でない場合は、旧版のIDEへ戻せることが必要です。また、Eclipseのメジャー更新時などは、操作方法が変わることもあるので注意が必要です。
開発案件のキリが良い時期に更新するのが安全策でしょう。

マイコンIDE開発経験を活かすには

弊社マイコンテンプレートで使用中の各社IDE特徴を示します。マイコンIDEは、Eclipseベースに集約されつつあるようです。今回は、同じベースでもIDEの更新方法が異なることを示しました。

これは、EclipseベースのIDEを使う時に覚えておくと役立つのが、各社共通のエディタやデバッグなどのコア機能であることを暗示しています。他社IDE使用時に、この経験が活かせるからです。

MCU IDE Comparison
マイコンIDE比較

マイコンIDE習得のコツやTipsは、コチラのページにもまとめています。参考にしてください。

CA78K0Rコンパイラ V1.71回避不能バグ

2月1日発行のルネサスツールニュースで、RL78/G1xの「CA78K0Rコンパイラ V1.71の回避不能なバグ」が報告されています。

RL78/G1xテンプレートVer5のCA78K0Rコンパイラ版でも、報告記載の「volatile」や「前置インクリメント」を使っていますが、こられバグに該当しませんので安心してください。
但し、テンプレートを使ってアプリを開発された方は、ニュース内容に目を通し確認することをお勧めします。

RL78_G1xテンプレートの動作コンパイラP3より抜粋
RL78_G1xテンプレートの動作コンパイラP3より抜粋

ニュース最後に、「次期バージョンで改修する予定」と記載されていますので、ディスコンを懸念したCA78K0Rも改版されるかもしれません。しかし個人的には、CC-RLコンパイラへの乗換えをお勧めします。