NXPとCypress動向

NXPは2015年にFreescale、Cypressは2014年にSpansionを買収しました。買収後のNXPとCypressのマイコンラインアップがどう変わるかが気になります。
日経テクノロジーOnlineで両社のマイコン新製品と今後の開発動向に関する記事がありましたので、要点をリストアップしました。

NXP: LPCとKinetisを徐々に統合

“新生NXP初のマイコン、旧NXP系で低消費電力がウリモノ” 2016/02/24より

  • NXPのマイコンシェア、車載MCUは世界第2位、車載を除くMCUは世界第1位
  • LPCマイコンと(旧Freescale)Kinetisマイコンは、徐々に統合(Geoff Lee氏談)
  • 新製品は、NXP系のLPC54000シリーズ(Cortex-M4FでコプロセサにCortex-M0+搭載可)

弊社マイコンテンプレートで使った、NXPのLPC8xx/LPC111xと旧FreescaleのKinties Eも現在NXPから全て供給中ですが、統合される可能性があることが解ります。

Cypress: PSoC 4へCortex-M0+コアを採用

“FMマイコンもPSoCも同じツールで開発、Cypressがアルファ版をデモ” 2016/02/29より

  • 新製品PSoC 4 Sは旧Spansionライセンス取得のCortex-M0+を採用。今後新開発PSoC 4もM0+を使う
  • PSoC 4 S搭載の第4世代CapSenceは、第3世代比、雑音耐性向上と低電力化
  • PSoC 4 S Pioneer Kit ($49)、PSoC 4 S Prototyping Kit ($10)発売
  • PSoC CreatorでFM0+マイコン(旧Spansion)も開発できるよう強化中

Cortex-M0+とM0を比較すれば、M0+が優れているので、新開発のPSoC 4系にM0+を採用するのは理解できます。
数あるマイコンIDEの中で私が最も使いやすいと評価するPSoC Creatorですが、PSoC 4とFM0+はアーキテクチャが異なり、さらにPSoC 4系にM0+が採用されれば、ますますFM0+を使う機会は減ると思います。
通常のマイコンソフト開発では、M0+とM0を区別することも少ないので、Creator強化は静観したいと思います。

マイコンでBLE実現の3方法

レガシーなUARTは簡単に使えるマイコン開発者でも、BLE:Bluetooth Low Energyは、新しくかつ仕様も追加されつつあるので手を出しにくいものです。しかし、いざBLEを仕事で使う段になれば、いつものように、厳しいスケジュールでの開発が要求されます。

そのような開発者個人が、入手性が良いマイコン:MCUで電波法の縛りがある日本国内でBLE通信を自習する方法を3つ紹介します。

BLE習得3方法

仕事での開発と違い、個人でBLEの開発環境を整える場合は、「入手性とその金額」が問題になります。金額ベースで安い順に3方法を評価したのが下図です。

BLE実現3方法
BLE実現3方法

Cypress PSoC 4 BLE利用の方法1は、低コスト($49)で環境構築可能ですが、多少BLE仕様を理解する必要があります。しかし、BLEを習得するならお勧めの方法です。

BLEモジュール追加の方法2は、マイコンUART入出力にBLEモジュールを追加する方法です。
マイコン以外にBLEモジュールが必要なため、追加コスト(図示、浅草技研BLESrialの場合4000円)が必要ですが、BLEを無線のドカン(UART over BLE)として使えるので、BLEをブラックボックスとして扱えるのが魅力です。
方法1と方法2のコスト差は、使用マイコンにも依存するので大差ありませんが、後で示す仕様変更時に差が出ます。

ルネサスRL78/G1D利用の方法3は、BLE機能を持つルネサスRL78マイコンを使うので技術資料が日本語ですが、開発には高価な有償版CS+と評価ボードが必要になります。RL78マイコンを仕事で使っている場合は、有利かもしれません。

BLE仕様が変わる現状への対処

マイコンBLEの通信相手は、前回示したMPU/SBCなどのIoT向けPCの他に、スマホが使えます。

スマホBLEには、「BLE 4.0/4.1/4.2など様々な仕様」があります。多くの通信仕様のように、下位互換性がありますが、セキュリティなどの機能強化が図られており、結果、対応マイコンにはますます大容量ROMや高性能化が要求されます。

このようなBLE仕様の変化や仕様追加に対して、PSoC 4 BLE: CY8CKIT-042-BLEは、実装CPUモジュール($15)の載せ替えで対応します(コチラの記事を参照)。一方、BLEモジュール追加の方法は、モジュール購入時で仕様が固まっているので、変更には対応モジュールの再購入が必要です。

総合評価結果

入手性とその金額、BLE仕様変更への対応から、PSoC 4 BLEを使った方法1が、コスト的にも、BLEに関するCypress日本語資料も少なからずありますので、個人でBLE習得するには最も優れた方法だと思います。

IoT時代は、UARTと同じレベルでBLEを使うことが必須です。仕事でせかされる前にBLE技術を習得しませんか? 弊社PSoC 4 BLEテンプレートもお役に立てると思います。

Raspberry Pi 3 Model Bの意味

Raspberry Pi 3 Model Bが発売されました。前のRaspberry Pi 2との差分は、処理能力向上とIEEE 802.11b/g/n、Bluetooth 4.1 (BLE: Bluetooth Low Energy)の無線通信機能搭載です。

Raspberry Pi 3 Model B(記事より抜粋)
Raspberry Pi 3 Model B(記事より抜粋)

IoTでは、数億~数十億個とも予想される情報収集マイコン(MCU)と、これらマイコンを束ねてクラウド側処理に適した変換処理をするRaspberry Piのようなコンピュータ(MPU、SBC)が必要です。

今回Raspberry Pi 3でIEEE 802.11b/g/n、Bluetooth 4.1(BLE: Bluetooth Low Energy)が追加実装されたことは、MCU、MPU/SBC間の通信手段としてこれら方式が有力であることを示しています。また、セキュリティや通信に処理能力が必要なので高性能化も解ります(既にこれら機能実装済みのDragonBoard 410cは、こちらを参照)。

低消費電力が要求されるマイコンMCUとの通信にはBLE、高速大容量が要求されるクラウドとの通信には無線LANが適用されると思われます。

IoT階層構造
IoT階層構造

今後のマイコン開発者には、従来通信の「UARTと同レベルでBLE習得が必須」です。

弊社マイコンテンプレートは、CypressのPSoC 4 BLEテンプレートでこの要求に対応済みです。最新のPSoC Creatorは、よりセキュリティを強化したBLE 4.2へも対応しています。BLEをUARTと同様に簡単に使ってみませんか?

マイコンテンプレート利用のコツやTips:その3

マイコンテンプレートを利用するコツ/Tipsの第3回目は「時分割処理のタイミングとインタフェースRAM」について示します。
販売中のテンプレート処理起動の間隔は、250us/1ms/10ms/100ms/1s/無限ループの6種類です。この6種類の使い方を示します。

処理起動タイミング

マイコンの処理は、電源投入後、「1回のみ実行する」スタート処理と、無限ループで「繰り返し実行する処理」の2つに大別できます(ROM/RAMを初期化するなどのスタートアップ処理は、除いています)。

ここでは無限ループに代わってテンプレートが実行する、繰り返し実行する処理の間隔:「タイミング」を考察します。

テンプレートは、起動する処理が無い無限ループ:空き時間で起動するのは、Sleepなどの低消費電力処理であることは、第2回で示しました。

100msと1sの起動間隔は、マイコンにとっては「遅い処理」、例えば、LED点滅や、LCD初期設定、SWチャタリング対策の起動に適しています。
※LCD初期設定は、無限ループ前のスタート処理で実行することも可能です。

1msと10msの起動間隔は、「早い処理」、例えば、割込みの応答処理などの起動に適しています。

250us起動間隔は、「最も早い処理が必要」な、例えば、UART/I2Cなどのデータ受信処理を起動することを想定しています。

つまり、早いレスポンスが必要な処理ほど処理間隔が短く、起動される処理のソース記述位置も上側になるのです。これがテンプレート時分割起動の「基本的な使い方」です。

実例が下図です。赤/緑/青LEDを、0.5/1/2秒毎にトグル点滅する場合です。赤囲みが、テンプレートへ追加されたLEDトグル処理を表します。それ以外が、テンプレートに初めから記述済みの起動処理です。

LED点滅処理での優先順位の例
LED点滅処理での優先順位の例

起動間隔

起動の間隔は、第2回で示したtick interruptの発生間隔です。
1ms>10ms>100ms>1sの順にレスポンスが早くなりますが、250usだけ特別に超高速応答です。これは、UART受信などの主として「いつ発生するか判らない応答に早く即応する」ためです。

販売中のテンプレートは、全てこの250usを起動間隔として開発しておりますが、実は「250usである必要性は無い」のです。因みに、FreeRTOSなどの組込OSでもtick interruptは1msです。

250usは、経験的にこの最高速でこれまで利用に問題が無かったからです。
この起動間隔を1msにし、UART受信処理を1ms起動に変更しても、メニュードリブンテンプレート動作などには問題ありません。
メニュードリブンテンプレートは、当該マイコンのUART受信バッファが1バイトでも、UARTコマンド長も1バイトなので、受信完了確認後ゆっくりバッファからデータを取り出しても間に合うからです。

起動間隔の設定は、テンプレート購入者様が「独自判断で設定して頂いても構いません」。

但し、250usよりも高速:短くすることは無いと思います。これよりも短いと、処理分割をより細かくする必要があり、開発がより厳しくなるからです。逆に、250usよりも長くすると、処理分割は楽になります。

テンプレートは、マイコン「コア動作速度を最高速」に設定し、起動間隔も「最高速と思われる250us」でデフォルトは設定しております。これは、「最初」にマイコンの最大能力で動作するアプリケーション開発後、「次の段階」としてコア周波数を下げるなどで、低消費電力化するアプローチを想定しているからです。

インタフェースRAM

処理間のデータやり取りにインタフェースRAMを使うことは、第1回で示しました。ルネサスのRL78/G1xは、通常RAMよりも高速アクセス可能なSADDRを持つなど特殊な例もありますが、低価格マイコンではRAMが貴重なリソースであることに変わりはありません。

この貴重なRAMを使う時に、ビット単位構造体を使い、ビット単位フラグでデータをやり取りすると、1バイトRAMで最大8個のフラグを使えるので効率的です。

テンプレートでは、このビット単位アクセスを容易にするため、userdefine.hにユーザ型定義を追記しております。処理間にブラグを多用する場合などにご活用ください。

マイコンテンプレートとは?

第1~3回で示したテンプレートは、「ISRは、サンプルプログラムを一部またはそのまま流用し、その他全処理をポーリング起動するマルチタスク処理の骨組み」と説明すると理解が早いかもしれません。

割込み処理は、ISRで割込みフラグ処理のみを行い、ISR発生をポーリングし割込み実処理を起動する。
サンプルプログラムの無限ループポーリングとの差は、処理に応じた時分割ポーリングである。
骨組みのテンプレートへ、サンプルプログラム流用の処理を組込んでプロトタイピング開発をする。
この理解で良いと思います。

ポイントのまとめ

  • 処理起動間隔は、250usとしているが、変更は可能、かつ任意
  • 高速な応答が必要な処理は、短い起動間隔へ配置
  • インタフェースRAMの効率的な利用に、ビット単位構造体も有効

* * *

3回に分けてマイコンテンプレート利用のコツ/Tipsを示しました。これらは、ソフトウエア開発では当然の事柄とダブる部分も多くありますが、数値では表せないのであえてコツ/Tipsとして記載しました。

組込OSを使うよりも簡単で、サンプル流用も可能なマルチタスク実現テンプレートが、お判り頂けたと思います。

販売中のマイコンテンプレートを活用し、アプリケーションの早期開発を成功させてください。

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

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

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

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

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

マイコンテンプレート利用のコツやTips:その2

マイコンテンプレートを利用するコツ/Tipsの第2回目はテンプレートの「マルチタスク処理の実現方法」を示します。

組込OSの分割起動

シングルコアのマイコンで、マルチタスク処理の実現方法が、「処理の分割起動」です。
組込OSは、この分割処理=タスクの起動をOSが行います。FreeRTOSの“USING THE FREERTOS REAL TIME KERNEL”から抜粋したFigure 4は、このことを解り易く示しています。

OSのKernelは、tick interrupt毎にタスク切り替えを行います。t2でTask1は「強制的に中断」され、Task2へ切り替わります。t3では、Task2が強制中断され、Task1が「中断処理から再開」されます。

FreeRTOSの分割起動
FreeRTOSの分割起動

ある時刻で動作する処理は、Kernelを含めて1個ですが、tick interrupt毎に処理を切り替えてマルチタスク処理を実現します。

テンプレートの分割起動

分割起動は、テンプレートでも同じです。テンプレートは、第1回目で説明した「細かく分割した処理」をtick interrupt毎に時分割で起動します。組込OSとの差は、(簡単に説明すると)起動処理を強制的に中断したり、再開したりする機能が無いことです。

マイコンテンプレートの分割起動
マイコンテンプレートの分割起動

起動処理1の中断機能が無いので、t2のタイミングまでに「処理1が終了」していることが必要になります。

処理終了のための分割

この「処理終了」は、どうすれば得られるのでしょうか?

第1回説明の「細かい処理の分割」は、結果として処理時間も短くなり、この処理終了をもたらします。

マイコン処理分類(注意点)
マイコン処理分類(注意点)

注意すべきは、赤丸の処理の完了確認が必要な入出力処理です。しかし、ここを「完了確認の処理」と、「その結果で動作する処理」の2つに分けて開発すれば、問題解決です。それぞれの処理が短時間で終了するからです。

同じように割込み処理も、基本的にISR: Interrupt Service Routine内では、「割込み発生確認と割込み要因のクリア」のみを行い、「割込みの結果で動作する処理は別処理」として分割して処理化します。

このような処理分割により、デバッグが容易となり、別アプリへ流用/応用性、部品化も高まります。

勿論、サンプルプログラムのISR処理を「そのまま流用」してもテンプレートへ組込んでもOKです。サンプルプログラムが提供する典型的なISRは、処理時間が短い場合が殆どでだからです。

分割起動後の処理

起動処理で起動される側の処理時間が短くなると、起動処理へ戻る時間が増えます(上図ピンク)。この戻った時の処理が、無限ループの処理です。

テンプレートでは、無限ループ内で起動する処理は、低電力処理のSleep(またはDeep Sleep)です。
この結果、高速マイコンであればある程この「無限ループ:空き時間」が長くなり、マイコン消費電力の大部分を占めるコア動作を停止するSleepを効果的に使えます。

ポイントのまとめ

  • 処理時間を短くするため、「確認処理」と「その結果の処理」を分離
  • 起動処理無しの「空き時間」は、低消費電力処理を起動(SleepとDeep Sleepの差には注意)

次回予告

テンプレートが処理を分割し、これを分割起動するマルチタスク処理の実現方法を示し、処理分割のコツ/Tipsを示しました。次回は、「時分割のタイミング」について説明する予定です。

CS+からe2 studio移行

ルネサスサポート情報 Vol.273 2016/1/28で、RL78統合開発環境CS+ for CCからe2 studioへの移行ガイドが示されました。

このガイドは、CC-RLでコンパイルしたCS+プロジェクトを、e2 studioプロジェクトへ変換(インポート)し、インポートしたe2 studioプロジェクトとE1デバッガを接続する方法が示されています。

CA78K0R → CC-RL → e2 studio

RL78アプリノート/サンプルコードの機能をクリックして「置き換え」の欄を視ると、CA78K0RからCC-RLプロジェクト変換方法はありますが、CA78K0Rからe2 studioへの移行ガイドはありません。

RL78アプリケーションノート/サンプルコード(機能)
RL78アプリケーションノート/サンプルコード(機能)

つまり、今回RL78開発環境CS+のCA78K0R → CC-RL → e2 studioへの道筋が示された訳です。

ルネサスのIDE

HewからCS+、そしてe2 studioが追加されたルネサスIDEの状況が、統合開発環境ページに示されています。CS+とe2 studio間は、「両方向の矢印」ですが、これが今後「e2 studioへの片方向」へ変わるかが気になります。

ルネサス統合開発環境の移行
ルネサス統合開発環境の移行

なにせ、CS+のようなユニークな独自IDEを開発、サポートするだけでも結構大変なことだからです。e2 studioは、Eclipse IDEを日本語化しルネサスの各種ツールを組込めますが、これだけでも手間がかかるでしょう。

テンプレートのe2 studioサポート

現状は、「CC-RLとCA78K0R両方サポート」のRL78/G1xテンプレートですが、e2 studio動作のテンプレートも必要と考えています。

E1でデバッグする評価ボードは、移行ガイドに従えば問題なさそうですが、EZ Emulatorで接続するRL78G13/G14-Stickボードがe2 studioでデバッグできるか否かが不明です。近々にこの調査結果を掲載予定です。

※e2 studioでE1は勿論ですが、EZ Emulatorも接続できることが確認できました。

マイコンテンプレート利用のコツやTips:その1

マルチタスク処理と組込OSの前回記事で、マイコンテンプレートを利用するコツ/Tips、ノウハウを示すことになり、その第1回目は「処理分割の重要性」について示します。
※説明するこのコツ/Tipsは、「販売中の全ての弊社マイコンテンプレート」に適用可能です。

処理分類

テンプレートが想定しているマイコンで開発する処理を、下記のように4つに分類してみます。

マイコン処理分類
マイコン処理分類

マイコンのアプリケーションは、これら「4分類の処理を組合せて」開発します。

説明の内容から「その他の処理」を除くと、各処理は数10~数100ステップの単純な処理です。従って、これら単純な処理の品質、バグが無いことが重要です。

「その他の処理」は、内容によっては多くの計算や開発ノウハウが必要となる分野です。
そこで、マイコン計算能力や大きなROM/RAMが必要になるかもしれないその内容には踏み込まず、「その他の処理」としてひとくくりにしています。

マイコンテンプレートも、この「その他の処理」の1つです。

サンプルソフト有無

「入力処理」~「割込み処理」のような単純な処理は、ベンダ提供のサンプルプログラムで提供されることも多いのです。だから、1から自分で開発するよりも、サンプルプログラムを利用する方が手間も少なくバグも無くなるのです(サンプルソフトの見つけ方はコチラを参照)。

マイコンテンプレートが、サンプルプログラムの流用/活用を重視するのは、これが理由です。

「骨組み」を提供するテンプレートへ、サンプルから入手した入力~割込みなどの「処理」を、骨組みに「追加」することでアプリケーションを早期完成します。

また、適当なサンプルソフトが無い場合でも、このように分類しておけば、「既存サンプルと似た方法」で開発する指針が与えられます。
つまり、サンプルソフトが提唱するマイコンに適した方法で処理を開発するのです。

サンプルソフトは、単にサンプルではなく、「当該マイコン利用のバイブル」と言っても過言ではありません。サンプルソフトの手法を活用/流用することこそ、開発成功の秘訣です。

テンプレートのメリット

テンプレートを使えば、最も重要で開発時間もかかる「その他の処理へ労力を集中」したアプリケーション開発が可能です。

このアプリケーション早期開発の結果、計算能力が不足した場合には、より高性能なマイコンを利用することや、改版や仕様追加を見越して、より大きなROM/RAMを使うなどの対策が「事前」に取れます。

プロトタイピング開発は、実際のアプリケーション開発に近い環境で、このように現状マイコンに対する予測/見識を持てること、これが最大の目的です。勿論、現状のマイコン能力で十分であれば、アプリケーション開発も完了です。

インタフェースRAM

処理間のデータやり取りにRAMを使うこと、これもテンプレートの特徴です。インタフェースRAMで処理を分離し、部品化するのです。

処理を分離しておけば、処理の中身がデバッグ中、または未完成であっても、完成後の想定データをデバッガでインタフェースRAMへ設定しさえすれば、データを送受する側の処理開発ができます。

RAMにより処理を分離分割し、なるべく単純でデバッグしやすい処理単位で開発することが目的です。

まとめ

要は、
処理単体を、細かく分割、できれば(なるべく)サンプルソフトを利用/流用して開発し、
インタフェースRAMで処理間を分離、当該開発のみでなく、他へも流用/活用できることを狙い、
アプリケーションのプロトタイピング開発ができる骨組み、
これがマイコンテンプレートです。

今回のポイントを下記に示します。

  • 処理を細かく分割する指針、方針を持ってサンプルソフトを読む
  • 分割した処理は、RAM値で動作決定する部品化
  • テンプレートへ、分割処理を追加してアプリケーション開発

次回予定

サンプルソフトは、解り易いシングルタスクの説明に重点を置いているため、「マルチタスク処理への配慮」がありません。そこで、次回は、テンプレートでどのようにマルチタスク処理の実現しているのか、そして今回説明した処理分割とどう結びつくか、などを説明する予定です。

次回以降のテンプレートを利用するコツ/Tipsは、下記内容の説明を予定しています。
第2回:テンプレートのマルチタスク処理
第3回:テンプレートの時分割タイミングとインタフェースRAM(最終回)

CC-RLコーディングテクニックとRL78開発環境の今後

CC-RLテクニック

ルネサスサポート情報 Vol.272 2016/1/21に、RL78ファミリ用Cコンパイラ CC-RLコーディングテクニックが紹介されています。

CC-RLコーディングテクニック

RL78/G1xテンプレートでも使っている「CC-RLコンパイラの上手い使い方」がまとまっています。
e2 studioとCS+ for CC(RL78, RX, RH850)両方のIDEについて、従来あまり解説されなかった「変数/関数情報ファイル」に関しての利用方法も少し記載されています。

e2 studioの説明がCS+と同じ資料に含まれているのは、これまで見たことがありません。e2 studioの日本人ユーザが増加しつつあるからでしょうか?

CS+がV3.03.00へ改版

2015年末にCS+がV3.03.00へ更新されました。
更新に伴い、CS+ for CCは、パッケージ・バージョンもV3.03.00へ変わりましたが、CS+ for CA、CXはV3.01.00のままです(CS+ アップデート・マネジャのオプション>更新履歴の表示より)。

RL78マイコンは、前回更新から増加しているハズですので、追加RL78マイコンは、CC-RLコンパイラのみでサポートするのかもしれません。確かに、「新規にCS+ for CA、CXを使うメリットは、無い」と言えますので、しょうがないのかもしれません。CS+ for CA、CXのユーザの方は、ご注意ください。

販売中のRL78/G1xテンプレートVer5は、CS+ for CA、CXとCC-RLの両コンパイラをサポートしております。CA、CXユーザの方で、CC-RL移行をお考えの方も、是非ご検討ください。

RL78/G1xテンプレートも今後は、「CS+ for CC-RLのみをサポート予定」です。但し、ご購入時にご連絡いただければ、Ver5のCS+ for CA、CX版テンプレートも付属いたします。

車載半導体2015年シェア1位新NXP、2位ルネサス

NXPのFreescale買収により2015年の車載半導体シェアは、新NXPが1位の13~14%、2位がルネサスエレクトロニクスで10~12%だそうです。僅差ですね。

ルネサス関係者は、2020年にはルネサスが車載半導体1位に復帰すると予想しています。
特定の自動車メーカーとの結びつきが非常に強い車載半導体、フォルクスワーゲンなどのメーカー不正がこの予想に影響しないと良いです。

自動運転などの電子制御化でホットな車載マイコン、ここで使われる技術は、いずれ汎用マイコンへも適用されるでしょう。自動運転の背景には、IoTがもたらす様々な情報も必須だからです。

仮に自動運転ができたとしても、「車は趣味性が強い」ので、おそらくエレクトロニスク業界のように商品(車)の価格勝負のみにはならないと思います。

現状は、車載に比べ、顧客あたりの販売数量が少なく、品種も多いので経営的には旨味が少ないと推測する汎用マイコンですが、IoTで爆発的に個数が出ることを期待しています。