ARMコアが業界標準になった時の差別化技術

9月23日の日経テクノロジーOnlineに“技術も市場も混沌としたIoT、ソフトバンクだけが視界明瞭”という記事で、興味深い内容を2つ見つけたので抜粋します。

記事は、ソフトバンクのARM買収の意味と影響を分析しています。

差別化はアナログ技術

“IoTマイコンに於けるARM優位性がこのまま維持され事実上の業界標準になれば、MCU各社の差別化技術はアナログ分野になる。”

本ブログで扱う低価格MCUコアは、ARM Cortex-M0/M0+がデファクトスタンダードで、Runesas 1社のみが独自RL78-S1/S2/S3コアです。そのRunesasも9月13日に、電圧制御やのアナログ分野に強みがある米インターシルの買収を発表しました。記事の予想は、正しいと思います。

センサー、通信マイコン、電源ICがIoT端末必須技術

“IoT端末の必須技術は、センサー、通信マイコン、電源ICの3つ。”

弊社が言うIoTマイコン各社が、アナログ技術を強化すれば、センサーインタフェースへ適用するでしょう。
例えば、オペアンプ実装などです。また、MCUとMPU/SCB間無線技術も、仕様が固まれば、当然実装されます。

これらが実装済みのIoTマイコンが、待ち遠しいです。ROMやRAMの容量次第では、マイコンテンプレートの活きる場所もありそうです。また、ARMと親和性が高いEclipseベースのIDEであっても、その使い勝手や、アナログ技術の取り込み方法の上手さもMCU選択の重要な基準となると思います。

追記:Cypress PSoC Creator 3.42.4が、3.25.0に更新されています。更新は、Update Managerから簡単に実行できます。

速報:Windows10 1607のマイコンIDE動作確認

Windows 10 Anniversary Update、Red Stone 1(RS1)のリリースが8月2日実施されました。

弊社マイコンテンプレート使用中のマイコンIDEを、このWindows 10 RS1、1607で動作確認しましたのでお知らせします。

IDEは、全て8月3日時点最新版です。マイコンテンプレートソフトのコンパイルと評価ボードへのダウンロード動作を確認しました。

マイコンIDEの詳細はコチラ、評価ボードはコチラに一覧表を掲載しております。

※Windows10 1511で動作していたものは、今のところ1607でも問題なく動作します。
※Windows 7時代に購入した評価ボードは、一部Windows 10で動作しない場合があります。この場合は、ボードドライバ(USBドライバ)の更新で動作するようになります。

Windows 10 1607動作確認マイコンIDE
マイコンIDE(ベンダ名) Windows 10 1607動作確認バージョン
CS+ for CC(ルネサス) V4.00.00 [15 Mar 2016]
e2 studio(ルネサス) Version: 5.1.0.022
LPCXpresso(NXP v8.2.0 [Build 647] [2016-07-18]
Kinetis Design Studio(NXP Version: 3.2.0
PSoC Creator(Cypress PSoC Creator  3.3 CP3 (3.3.0.9604)
Arduino IDE(Intel 1.6.10 Hourly Build 2016/07/26

 

マイコン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は、コチラのページにもまとめています。参考にしてください。

Arduino/Genuino 101

前記事紹介の国内名称Genuino 101こと「Arduino/Genuino 101マイコンテンプレート」の開発に着手します。Arduino IDEのLチカサンプルの問題点を指摘し、マイコンテンプレートがどのように解決するかを示します。

Arduino/Genuino 101開発ボード

Bluetooth LEに6軸加速度センサも内蔵した32MHz動作インテルCurie、ROM/RAM=192KB/24KBのMCUが実装されたArduino開発ボード、これがArduino/Genuino 101です。

Quark SEコアにSoC: System on a ChipしMCU単体ROM/RAMは、384KB/80KBですが、開発環境Arduino IDEが使う残りがユーザプログラマブル領域で192KB/24KBとなります。実にROM50%、RAM70%をIDEが使う!というものですが、その理由は後で考察します。

データシートFAQによると、2016年3月にIntel® IQ Softwareというパッケージでサンプルアプリケーションや専用RTOSなども提供するそうですが、現時点でリリースされていません。

Arduino IDE

Intel IQ Softwareリリースまでは、無償のArduino IDEを使います。最新版1.6.9をダウンロードしインストール、さらにArduino/Genuino 101動作のためIntel Curie Boards by IntelをボードマネジャでインストするとArduino IDEが使えます。

Arduino IDEは、スケッチエディタ、コンパイラ、開発ボードへのダウンロード(何故かArduinoではアップロードと呼ぶ)ができますが、デバッグ機能はありません。

Arduino/Genuino 101ボードとPCを接続し、ボードマネジャーでArduino/Genuino101、接続したシリアルポート番号を設定すれば準備完了です。ファイル>スケッチの例>01.Basics>Blinkを選択して➡アイコン: “マイコンボードに書き込む” をクリックすると、緑LEDが1秒毎に点滅の、いわゆるLチカ動作が確認できます。

Arduino IDE Setting for Arduino 101
Arduino IDE Setting for Arduino 101

スケッチ

「スケッチ」とはArduino IDEプログラム言語の名称で、ソフトウェア開発に不慣れなアーティストでも簡単にプログラミングできるように工夫された「簡易/変則? C言語」と個人的には理解しています。
「絵を簡単にスケッチする」からその名が来ているかもしれません。ヘルプ>「このソフトの使い方について」クリックで、スケッチが説明されます。ランゲージレファレンスも参考になります。

スケッチ重要事項をまとめます。

  • 2関数、setup();初期設定と、loop();無限ループで全体処理を構成
  • IDEでオレンジ表示の既成API関数と、if then else 等の基本的C言語で処理ロジックを作成

Arduino IDEが、使用する開発ボードに応じたAPI関数を全て用意することや、簡易C記述を可能とする仕掛け、これがROM/RAMをIDEが多量に使用する原因だと思います。しかし残りが192KB/24KBならユーザ領域としては、十分で問題はありませんが…。

Lチカサンプル問題点

Lチカサンプル、Blinkのスケッチソースが下記です。delay(1000)を使って1秒毎の点滅処理を行っています。点滅間隔変更は、delayパラメタ1000を変えれば良いことが解ります。但し、delay処理中は、他の動作はできません。マルチタスク処理は困難です。

Blink source
Blink source

そこで登場するのが、ファイル>スケッチの例>02.Digital>BlinkWithoutDelayです。

BlinkWithoutDelay source
BlinkWithoutDelay source

今度は、delayを使いませんので52行の1秒経過を判断してLEDをトグル点滅させます。トグル点滅以外のループ時間は、他動作が可能ですが、これにも問題があります。

Curieなどが活躍するIoTマイコンは、省電力動作が必須です。制御対象のセンサやGPIOデータ処理は、IoTマイコンにとっては遅い処理で、この遅い処理完了を待つ間は、MCUを省電力動作させバッテリや電力消費を抑えるのです。1つ1つのマイコン消費電力は小さくても、数億個のマイコンが動作するIoTの世界では、低電力動作は無視できません。

結局、BlinkWithoutDealyの方法も、無限ループが回りっぱなしで省電力動作向きではありません。

マイコンテンプレート

ユーザ処理を時分割で起動するのがマイコンテンプレートです。

起動したユーザ処理終了後や、起動処理が無い時は、自動的に省電力動作となります。組込みRTOS:Real Time Operating Systemにも同様な機能がありますが、RTOSほど複雑でなく、サイズ自体も小さいのが特徴です。詳しくは、マイコンテンプレートのサイトのテンプレート利用Tipsなどを参照してください。

既に5種のマイコンにテンプレートを販売中です。開発するのは、Arduino/Genuino 101開発ボード対応のマイコンテンプレートです。進捗状況などについて、本ブログに記載するつもりです。

先に示したIntel IQ Softwareがリリースされれば、RTOSも含まれていますので、そちらの方が良いと思う開発者の方も多いと思います。しかし、RTOSを使いこなすのは簡単ではありません(RTOS関連記事も参照)。
また、Windowsがそうであるように、OS自体の動作が不明で、さらにバグがある可能性も否定できません。

個人や小人数で開発するような規模のプログラムには、マイコンテンプレートは中身の動作が全て開発者に見え、カスタマイズも可能なので向いていると思います。

* * *

※弊社マイコンテンプレートサイトのページ選択をタブメニューに変更しました。従来よりも記事表示エリアが大きくなり、より見やすくなっております。
※ブラウザのキャッシュなどで表示がおかしい場合には、F5:再表示すると修正されます。お勧めのブラウザは、Firefoxです。

IoTコアにIntel入ってる

Intel製IoTマイコンコアのCurie 32MHzを搭載した開発ボード「Genuino 101」が4880円で発売されました。

Genuino 101
Genuino 101

Arduino UNO互換でArduino IDEが使え、右下のBluetooth LEアンテナ実装でROM/RAM=196KB/24KBです。

インテルのIoTコアデバイス

インテルは、先にIoT向けコンピュータEdisonを発表済みで、これを使った開発ボードも販売中です。
つまり、マイコンとIoTコンピュータ両方のデバイスを供給し、かつ、入手性も良い開発キットを提供できる半導体ベンダがインテルとなりました。

私が想定しているIoTデバイスの構成は下図です。

IoT Devices
IoT Devices

マイコンとIoTコンピュータ間は、Bluetooth LE:BLE通信です(理由はこちらの記事)。

BLEの複雑なプロトコルスタックから、たとえBluetooth認証マークが付いていても複数ベンダが混在する空間で、MCUとMPU/SBC間の無線BLE通信が上手く行くかは、やってみないと判りません。杞憂ですが、同一ベンダ同士でのみ安定に通信できる可能性もあります。

そうなると、パソコンCPUのデファクトスタンダードがインテルであるように、IoTコアも「インテル入ってる」つまり、インテル独占状態になるかもしれません。自社デバイス生産能力も持っているインテルですので供給価格の安さも含めて他ベンダには脅威でしょう。やはり杞憂ですね…(^_^;)。

本ブログのIoTデバイス

Curieマイコンも本ブログの対象とする必要がありそうです。
こちらの固定ページに、対象デバイスの特徴などを簡単に列記しておりますので合わせてご覧ください。