半導体メーカM&Aと技術シナジー

本ブログでも関心があったFreescaleをNXPが買収し、そのNXPをQualcommが買収するという半導体メーカのM&Aは、終息に向かうようです。Runesasもアナログ、ミックスドシグナル半導体を得意とするIntersil(インターシル)の買収を完了しました。
※QualcommのNXP買収は、未だに決着がついていない買収案件だそうです。

一方で、AtmelとMicrochipに見る、半導体企業M&Aの難しさという記事を読むと、M&A完了後も企業の技術的シナジーが生まれるには時間がかかりそうです。

以前記載しましたが、NXP)LPC8xxのLPCOpenライブラリv3.01の状況を観ると、この記事内容は頷けるものがあります。MCU部門だけを比較すると、実はNXPよりもFreescaleの方が規模は大きく、また、Cortex-M0/M0+ MCUで比較すると、2社で重複する製品があるので、既成製品(LPC8xx、LPC111xやKinetisシリーズ)の将来は、明確には判らないのが現状だと思います。

統合開発環境:IDEは、旧FreescaleのKinetis Design Studio+Processor Expertと旧NXPのLPCXpresso+LPCOpenライブラリが、新NXPではMCUXpresso+SDK+Config Toolsとなり、一見、新しい開発環境に統合されたように見えます。

しかし、買収完了後の新発売MCU開発以外は、個人的には旧開発環境の方がどちらの既成製品開発にも適している気がします。

9月28日現在、LPC8xx用のLPCOpenライブラリv3.01は、残念ながら更新されていません

BLEとThreadソフト開発者必見動画

IoT通信規格のBLE 4.2とThread(802.15.4)両方をサポートするNXP)Kinetis KW41Z搭載の評価ボードを使ったBEL4.2とThreadメッシュ接続の開発Video(タイトルが以下Lesson 1~10)を紹介します。

Kinetis KW41Z Video Lesson Contents
Kinetis KW41Z Video Lesson Contents

BLEやThreadソフト開発者必見のLessons

内容、質ともに優れたVideoでMCUXpressoとSDKの使い方も良く解ります。特に興味深い内容とその出所が以下です。

  1. Bluetooth ClassicとBluetooth Low Energyの本質的な違い(Lesson 3、3分ごろ)
  2. Bluetooth ClassicとBLE間を接続するBluetooth Smart Ready(Lesson 3、6分ごろ)
  3. BLE接続の具体例(Lesson 3、19分ごろ)
  4. BLE/Thread接続に必要な知識(Lesson 3, 6)
  5. Threadが生まれた背景(Lesson 6、2分ごろ)
  6. Cortex-M0+/48MHz、512MB ROM、128KB RAM、FreeRTOSで実現するBLE/Thread IoT端末(Lesson  5, 9, 10)

BLEやThreadに関する情報は多くありますが、ソフト開発者の立場からは、本Lessonsが最も要領よくポイントをまとめています。

Kinetis KW41Z

KINETIS KW MCU FAMILY BLOCK DIAGRAM
KINETIS KW MCU FAMILY BLOCK DIAGRAM

Kinetis KW41Zの評価ボードは、以下の2種(Digi-Key価格)です。

低価格で有名なFRDM評価ボードですが、さすがに両プロトコル対応のKW41Z搭載ボードとなると$100以上します。Videoで使っているR41Z-EVALは、約$60と安く入手できます。但し、Lesson 10のBLEとThreadメッシュ切り替え接続の動作確認を行うには、同時に3台の評価ボードが必要です。

ThreadのみサポートのKW21、BLEのみのKW31もありますが、無線規格が乱立していて、どれが本命かを見極めるのが困難な現状では、両プロトコルサポートのKW41が安全でしょう。

API for IoT

MCUXpressoとSDKを使って、BLEまたはThread通信機能を持つIoT端末を開発する際に、プロトコルのどの部分の変更/修正が必要で、それがソース上のどこにあるか、全体の開発手順などはVideoを観ると良く解ります。

BLE Protocol Stack
BLE Protocol Stack

また、LEDなどのGPIO制御を行うSDKデモソフトとIoT通信の並列処理は、FreeRTOSを使って実現していることも解ります。簡単なIoT端末なら、このデモソフトに、外部センサ値をAD変換し、その変換データをクラウドのサーバーへIoT経由で送信する機能を追加しさえすれば、直ぐに開発できそうです。
※簡単なIoT端末は後述

BLEやThreadは、IoT通信の有力な候補です。しかし、IoTの通信プロトコルが何になるにせよ、IoT通信向けのAPIが決まれば、あまり気にする必要がない、というのが全Lessonを通しての私の感想です。

その理由は、デモソフト実装済みのGPIO制御はそのまま使えますし、FreeRTOSを使っていますので、外部センサ入力を定期的にADCする処理(ADCスレッド)と、ADC変換データをIoT通信APIへ出力する処理(IoT出力スレッド)の2処理を追加開発すれば良いからです。

ADCスレッドは、IoT通信規格には無関係です。一方、IoT出力スレッドは、Uart出力と同様のIoT APIが使える(用意される)と思います。NXP)LPC8xxマイコンのUart APIの例で示すと、Chip_UART_SendBlocking()が、Chip_IoT_SendBlocking()に代わるイメージです。IoT API利用条件が初期設定で満たされれば、ユーザは、通信速度や、通信プロトコルを意識せずにIoT通信を使えるようになると思います。

*  *  *

IoT通信規格が不確定な状況で、少しでも早くIoTやRTOSに慣れるには、R41Z-EVALは良い評価ボードです。また、FreeRTOSを使えば、48MHz動作のCortex-M0+、512MB ROM、128KB RAMで簡単なIoT端末が開発できそうな見通しもこれらLessonは、与えてくれました。是非、ご自分でご覧になってください。

簡単なIoT端末のイメージ

データ入力とGPIO出力を行うMCU端末で、IoT無線通信機能を備える。通信セキュリティを確保できるAES-128などの機能も備え、対象機器から取得したデータを安全にクラウド内のサーバーへ送信する。
サーバーは、対象機器データを人工知能を使って予測分析し、結果を端末へ送信する。
端末は、受信結果を基にLEDなどのGPIO出力を行い、オペレータまたはロボットが対象機器メンテナンス作業の手助けをする。

STM32Fxテンプレート発売

2016年MCUシェア第5位のSTマイクロエレクトロニクス(STMicroelectronics、本社スイス)のSTM32F0:Cortex-M0とSTM32F1:Cortex-M3向けのテンプレートを開発しましたので、販売開始します。従来テンプレートと同額の1000円(税込)です。

STM32Fxテンプレートの特徴

STM32Fxテンプレート構成
STM32Fxテンプレート構成
  • Cortex-M0とCortex-M3両コア動作のテンプレート
  • 移植性、可読性が高いHALドライバを使ったので、他コアへの流用、応用性も高い
  • カウントダウンループを使ったCortex-M系コードテクニックで開発

従来テンプレートは、ARM Cortex-M0/M0+とルネサスS1/S2/S3コアが対象でした。

つまり、8/16ビットMCUの置換えを狙ったCortex-M0/M0+と、RL78汎用MCUへテンプレートを供給していました。しかし、IoTの通信処理や要求セキュリティを考慮すると、より高性能なMCUも視野に入れた方が良いと感じていました。また、Cortex-M3デバイスの低価格化も期待できます。

初めてCortex-M3のSTM32F103RB:NUCLEO-F103RBへもベアメタルのテンプレートを開発したのは、以上のような背景、理由です。

ST提供のHAL:Hardware Abstraction Layerドライバは、移植性、可読性が高く、Cortex-M0/M3両対応のテンプレートも簡単に開発できました。Cortex-M3よりもさらに高性能なMCUが、ベアメタル開発を行うかは疑問ですが、HALを使ったので適用できると思います。

動作確認評価ボードは、STM32F072RB:Cortex-M0/48MHzとSTM32F103RB:Cortex-M3/64MHzですので、これはあくまで私見、見込みですが…、HALドライバならば問題なく適用できるハズです。

HALドライバ作成にSTM32CubeMXを使うと、異なるコア動作速度(M0:48MHz、M3:64MHz)でも、同じ周辺回路ならば、同じHAL APIが使えます。

今日現在、このSTM32CubeMX周辺回路のGUI設定に関する詳しい資料が見当たりません。そこで、テンプレート添付資料では、テンプレートのSTM32CubeMX設定方法や、SW4STM32開発ヒントやTipsなど開発に役立つ情報を満載しています。初めての方でもSTM32MCUの開発障壁を低く出来ます。

また、本テンプレートをプロトタイピング開発に使って、MCU性能の過不足を評価するのも便利です。ボードレベルでピンコンパチなSTM32 NUCLEO評価ボードですので、評価ボード単位の載せ替え/交換も可能です。

さらに、デクリメントループを使ってループ終了を行っているなど、Cortex-M系のコード作成にも注意を払いました。

*  *  *

マイコンテンプレートサイトへ、STM32Fxテンプレートを掲載します(9月2日追記:サイト更新完了しました)。
添付資料のP1~P3、もくじの内容を掲載しております。P1~P3は、資料ダウンロードが可能です。STM32Fxテンプレートをご購入の上、是非、ご活用ください。