ARM Cortex-M0+マイコン Kinetis Eシリーズの特徴

2014年末発売予定のfreescale Kinetis EテンプレートのマイコンKE02Z64xx4の特徴と評価ボード、開発環境を示します(発売済みテンプレート一覧はコチラ)。

5V Cortex-M0+ マイコン:MKE02Z64xx4仕様(一部抜粋)

動作電圧 2.7~5.5 V (ワイドレンジ電源電圧)
ARMコア Cortex-M0+/40MHz
Single cycle 32-bit x 32-bit multiplier
Single cycle fast I/O access port
メモリ ROM:64KB
EEPROM:256B
RAM:4KB
アナログ入力 12-bit SAR ADC
Two analog comparators
通信 Two 8-bit Serial Peripheral Interfaces (SPI)
One I2C modules
Three UART modules
タイマ One 6-channel Flex Timer/PWM (FTM)
Two 2-channel Flex Timer/PWM (FTM)
2-channel Periodic Interrupt Timer (PIT)
Real time clock (RTC)
System tick timer
One watchdog module
GPIO 57
価格 300円程度、DigiKey調べ(2014年9月時点)

 

評価ボード:FRDM-KE02Z40M

FRDM-KE02Z40Mブロック図
FRDM-KE02Z40Mブロック図
搭載マイコン MKE02Z64VQH4 
ボード実装回路 10MHz水晶発振子
3色LED
3軸加速度センサ
タッチパッドスライダ
赤外線センサ
温度センサ
デバッグIF OpenSDA
価格 1500円程度、DigiKey調べ(2014年9月時点)

※この評価ボードへ、LPC8xxやLPC111xテンプレートで使ったBaseBoardのUARTドライバやLCDを接続予定です。

開発環境:IDE

統合開発環境IDEは、CodeWarrior:CWと、Kinetisシリーズ専用のKinetis Design Suite:KDSの2つあります。サンプルソフトが豊富で参考情報も多く、歴史が古いのがCWで現版数10.6。Kinetisシリーズ以外の5種freescaleマイコン開発もできます。インスト後、30日間は容量制限なし、有償登録しない場合は、256KB128KBの制限付きになりますが、Kinetis開発には問題なしです。

今年夏、新規開発されたKDSは、ARM Cortex-M0+マイコンKinetisシリーズ専用で、現版数1.1.1です。freescaleは、今後、CWからKDSでKinetisシリーズをサポートするとアナウンスしています。

どちらのIDEも、eclipseベースです。Processor Expert:PEと呼ばれる強力なAPI生成ツールがプラグインされており、このPEを使うと、素早く移植性の高いソフトが作れそうです。ルネサスCubeSuite+のコード生成ツールと似ています。

両者をサラッと使ってみた結果、現段階では、サンプルソフトや有用な情報も多いCWをテンプレート開発に使います。開発マイコンをKinetisのみにしてインストールすると、KDSと同程度のプログラムサイズになります。KDSには、豊富なCWサンプルプロジェクトをKDS用へ変換するマニュアルがあるのですが、私は上手く変換できなかったため、現版KDSは、使うのを断念しました。

Kinetis Eテンプレート開発ポイント

Kinetis Eシリーズは、「ARM Cortex-M0+コアで5V動作」する業界初のマイコンです。入手性が良く、低価格、評価ボードの豊富な実装回路も魅力です。PEを上手く使って、移植性に富んだKinetis Eマイコン向けテンプレートを開発したいと思います。

ポイントは、この「Processor Expert:PEの効果的活用」です。このあたりは、追々本ブログにノウハウ等を記事にする予定です。

NXP ARMコアマイコン利用メリット検証(その2)

ARMコアマイコン利用メリット検証の2回目は、テンプレート開発で気がついたCortex-M0+とM0の差分を示します。

GPIOセット/クリアレジスタの有無

32ビットマイコンのCortex-M0/M0+は、GPIOレジスタに対して、ビット単位のセット/クリア処理が必要です。レジスタのビット位置が、IOピンの操作に対応しており、ピン単位の入出力方向や初期値設定を行うからです。

後発のCortex-M0+のLPC820には、GPIOポートセットレジスタ:SET0、クリアレジスタ:CLR0、トグルレジスタ:NOT0が追加されました。これらは、先に開発されたCortex-M0のLPC1114にはありません。

LPC820GPIOのセット、クリア、トグルレジスタ
LPC820GPIOのセット、クリア、トグルレジスタ

これら追加レジスタを使うと、特定ビットを変更するビット演算時に、ソフト記述が簡単です。例を示します。

ARMマイコン Cortex-M0+ / LPC820 Cortex-M0 / LPC1114
ビット演算例 ビット演算1 ビット演算2
説明 ビットクリア、セットともにビット演算子「|=」を使う ビットクリア時は、演算子「&=~」、ビットセット時は、演算子「|=」を使う

 

このように、LPC820は、同じオペランド「|=」を使って、ビット単位のセット/クリア/トグルを表現できます。一方、LPC1114は、セット時は「|=」、クリア時は、「&=~」を使い分ける必要があります。

これらレジスタは、Cortex-M0+の特徴の1つ、「Single-cycle fast I/O access port」の実現手段かもしれませんが、ここでは、ソフト記述の容易さに着目して差分を説明しました。

I2C APIの差

これは、前回記事に記載したように、LPCOpen版数の差に起因していると思いますので、簡単に現状での差分を示します。

ARMマイコン Cortex-M0+ / LPC820 Cortex-M0 / LPC1114
I2C APIマスタライト例  マスタタイト1  マスタタイト2

 

主観評価

販売中のテンプレートで使った差分を示しました。これ以外はそのまま使えるので、差分がデメリットになるほど労力がいらないこと、後発マイコンCortex-M0+には、ソフト記述が容易になるようなレジスタが追加されたことがお判りになったと思います。

つまり、GPIOの場合、Cortex-M0からM0+への移植:ポーティングは、LPC1114でポート番号が0~3あったものが、LPC820では0のみになったことに注意すれば、殆どそのまま使えます。但し、新たに追加されたGPIOセット/クリア/トグルレジスタを活用すれば、より簡単にソフトが記述できます。LPC8xxテンプレートも、これらレジスタを活用しています。

新しいCortex-M0+マイコンほど、よりソフト開発が容易なっていると言えるでしょう。

NXP ARMコアマイコン利用メリット検証(その1)

ARM Cortex-M0搭載のLPC111xテンプレート発売で、同一ベンダNXPでのARMコアCortex-M0+からCortex-M0へのテンプレート移植が完了しました。そこで、NXP ARMコアマイコン利用のメリット/デメリットについて、数回に分けて示します。

NXP Cortex-M0+マイコンのテンプレート移植

NXP Cortex-M0+マイコンからCortex-M0マイコンへの移植
NXP Cortex-M0+マイコンからCortex-M0マイコンへの移植

同一ベンダのCortex-M0/M0+ソフトの差

一言で言うと、NXP Cortex-M0/M0+のソフト差は、殆どありません。ルネサスのRL78/G13(S2コア)とRL78/G14(S3コア)と同じ程度と言えば、RL78/G1xユーザには判っていただけるでしょう。

差がある箇所(概要)

アナログ入力は、コンパレータとADCで内蔵周辺回路が異なるため、制御ソフトは異なります。

一方、内蔵周辺回路名が同じでも、後発のLPC820では異なるものがあります。LPC820のGPIOクリアレジスタがそれで、LPC1114にはありません。これは、ソフト記述がより簡単になるように専用レジスタが追加されたと推測します。

また、テンプレートではLPCOpenライブラリの版数が異なるため、I2C関連のAPIも異なります。これは、版数が同じになれば、同一APIになると思います。敢えて、異なるAPIにする意味はないためです。対策に変換関数を自作すれば済むことですが、一方に合わせずに素のAPIをそれぞれのテンプレートに使いました。

これら差分箇所は、次回以降、詳細に示していきます。

一致する箇所

マイコンコア制御、つまりCMSISライブラリに相当する部分については、APIレベルで一致します。従って、Cortex-M0+とCortex-M0のARMコア差はソフトでは見えなくなります。

主観評価

半導体は、ムーアの法則にしたがって、微細加工とハード集積化が進みます。マイコン半導体ベンダは、市場が、動作電圧や、周辺回路などのハード互換性要求が強いため、これまではこのムーア則を、主としてハード低価格化、利益増加へ使っていたと思います。

しかし、徐々にソフト開発の要求も、この法則へ適用しつつある気がします。例えば、LPC820のGPIOクリアレジスタ追加や、ROMライブラリ追加などがそれです。これらハード追加により、従来ソフトがそのままでは使えませんが、同じ機能を、より高速、かつ簡単なソフト記述でできます。

ARM Cortex-M0+のLPC8xxシリーズは、Cortex-M0のLPC111xシリーズよりも後発であるため、これらの恩恵を受けて、より効率的なソフト開発ができます。また、従来Cortex-M0ソフト資産を活かしてM0+へ移植する際も、少ない手間でポーティングできるでしょう。

ARMコア利用メリットは、後発ハードの性能向上、既存ソフト資産の継承のし易さ、これら両者がもたらす「確実な処理能力の向上」にあると思います。機種が異なるマイコンへのソフト移植は、処理能力が本当に向上するか否かは、実際に開発完了するまでは「賭けの要素」もありました。

しかし、少なくともARMコアを使う限り、この「掛けのリスク」がかなり減るということを、今回のテンプレート移植は、M0+からM0という時間を逆に遡る方向でしたが、実感しました。

 

本記事は、同一ベンダNXPのARMコア利用のメリットを概観しました。デメリットに相当する差分の詳細は、次回以降に示します。また、別ベンダで同一ARMコアのテンプレート移植例として、freescaleのKinetis Eシリーズ/Cortex-M0+で評価します。

テンプレート移植(Cortex-M0+ → M0編)

ARM Cortex-M0+のLPC8xxテンプレートをCortex-M0テンプレートへ移植するに際し、使用評価ボードを比較し、既存テンプレートのどこに変更が必要かを把握します。

評価ボード比較

評価ボード LPCXpresso LPC820 REV A LPCXpresso LPC1114 REV A
ボード写真(LPC-Link部除く)

LPCXpresso LPC820
LPCXpresso LPC820

LPCXpresso LPC1114
LPCXpresso LPC1114
実装マイコン LPC820
LPC812M101JDH20 TSSOP20
LPC1114 LPC1100L(第2世代)シリーズ
LPC1114FBD48/302 LQFP48
CPUコア ARM Cortex-M0+ 30MHz(max) ARM Cortex-M0 50MHz(max)
動作電圧 1.8~3.6V 1.8~3.6V
実装水晶発振子 12MHz 12MHz
内蔵発信器 12MHz 12MHz
内蔵フラッシュ・メモリ 16KB 32KB
内蔵RAM 4KB 8KB
内蔵EEPROM なし なし
GPIO 18本(5V-tolerant I/O)
GPIO0_0~GPIO0_17
42本(5V-tolerant I/O)
GPIO0_0~GPIO0_11
GPIO1_0~GPIO1_11
GPIO2_0~GPIO2_11
GPIO3_0~GPIO3_5
アナログ入力 アナログ・コンパレータ
5ビット×1チャネル
ADC
10ビットx8チャネル
汎用タイマ 16/32ビット・タイマ(SCT)×1 16ビット・タイマ(CT16Bx)×2
32ビットタイマ(CT32Bx)×2
実装LED 3色(RED:P0_15、GRN:P0_17、BLU:P0_16) 1色(RED:P0_7)
シリアル通信 USART×1チャネル USART×1チャネル
SPI クロック同期式×1チャネル クロック同期式×1チャネル
I2C フルスペック×1チャネル フルスペック×1チャネル
消費電流
(マイコン単体)
通常時(3.3V/30MHz):3.3mA
スリープ・モード:1.8mA
ディープ・スリープ:150μA
パワーダウン・モード:0.9μA
ディープ・パワーダウン:170nA
通常時(3.3V/50MHz):7mA
スリープ・モード:5mA
ディープ・スリープ:2mA
パワーダウン・モード:なし
ディープ・パワーダウン:220nA
デバッグ機能 SWD SWD
スイッチ・マトリクス あり なし
USB なし なし

LPC820評価ボードのCortex-M0+は、Cortex-M0をさらに小型、省電力するための見直しが行われた結果、M0に比べ消費電流の少なさが際立ちます。

一方、Cortex-M0のLPC111xも、低消費電力とフラッシュ大容化の方向に進化中で、比較マイコンは、第2世代LPC1100Lシリーズです。トラ技2012年10月号掲載のLPC1114は、一つ前の第1世代でした。LPC111xには、第3世代LPC1100XLシリーズやフラッシュを64KBに増加したLPC1115などのバリエーションがあります。

しかし、このシリーズの基本は、第2世代のLPC1114 LQFP48で、シリーズ最大IOピン数の48で関連情報も多く、LPCOpenライブラリもありますので、Cortex-M0テンプレートの評価ボードは第2世代LPC1114を選びました。

なお、この評価ボードの代わりに、回路図が同じLPCXpresso LPC1115を使うこともできます。この場合の注意事項はコチラを参照して下さい。

テンプレート変更項目

テンプレートのライブラリは、LPCOpen最新版V2.xxを使用しますので、Cortex-M0+とM0のARMコア差はライブラリが収集してくれるハズです。つまり、APIがそのまま使えます。すると、テンプレート移植で変更が必要な個所は、ボード比較から差がある個所で、以下となります。

項目 変更内容
CPUコア動作周波数 30MHz動作を50MHz動作へ変更
GPIO GPIOポート番号0が0~3へ増加
アナログ入力 アナログ・コンパレータからADCへ変更
タイマ SysTickTimerは、同じものを使用するので変更なし
評価ボード実装LED 3個LED出力を1個出力へ変更
評価ボードとBaseBoardの接続 BaseBoard実装SWやその他信号線の割付変更

LPC8xxテンプレートで使ったBaseBoardは、LPC111xテンプレートでも使います。従って、BaseBoardのUART入出力、アナログ入力、LCD出力、EEPROM入出力、ブザー出力等をLPC1114評価ボードに割付けます。

こう見ると、コア動作周波数を除けば、ADCやタイマなどの周辺回路が違いますので、その制御は必要ですが、殆どIO関連です。APIが同じだと1から作るのに比べ、とても楽という気がします。M0+からM0に変わっても、既存Cortex-M0+テンプレートの殆どがそのまま使えるからです。

マイコンテンプレートの骨格

Wordには、名刺、カレンダー、パンフレットなどアプリ毎のテンプレートが用意されています。マイコンテンプレート開発時に悩むのが、どのようなアプリを意識してテンプレートを作るかです。できるだけオールマイティなテンプレートが目標です。

今回は、弊社マイコンテンプレートの骨格について説明します。

テンプレートの骨格

弊社マイコンテンプレートは、

(1)無償IDEのプログラムサイズ

(2)時分割の処理起動

(3)RAMでの関数間パラメタ渡し

(4)UARTメニュードリブン

の4つの骨格を持ちます。

(1)無償IDEのプログラムサイズ:弊社テンプレートは、IDE無償版で開発できるプログラムサイズを対象とします。これは、この程度が個人や少人数で開発/デバッグできる限界と考えるからです。これ以上大きくなると、開発/デバッグが指数的に困難となり、開発を収束させるために、例えばリアルタイムOSなどの別手段が必要になります。

最近は、無償版でも256KB程度の十分大きなサイズも開発できるようになりました。これは、IDEツールが高機能になり、API関数の自動生成や、既存ライブラリを簡単に使えるためです。これらIDE生成関数は、バグなしの完成品ですが、個人でカスタムメイドできるサイズは、今も昔もあまり変わらないと思います。経験的に無償IDEで開発できるサイズがこの上限サイズです。

(2)時分割の処理起動:マイコンは、CPUと周辺回路が「ハード的に並列動作」します。従ってCPUソフトを、周辺回路起動と処理完了確認の2つで関数化すると、複数の周辺回路を簡単に並列動作させることができます。起動から処理完了までの処理時間は、周辺回路毎に予想できますので、その間に別処理、例えばSleepをすれば電力効率もアップします。これらの処理を時分割で起動するのが弊社テンプレートです。

(3)RAMでの関数間パラメタ渡し:カスタムメイド関数のパラメタは、内蔵RAMを使って外部と入出力します。これで関数単体デバッグが簡単になります。RAM値をデバッガで確認/修正すれば、関数動作が把握できるからです。さらに、関数の中身が未完成の時でも、入出力値をRAMに設定しさえすれば、結合デバッグができるメリットもあります。

(4)UARTメニュードリブン:シリアルポートUARTを持たないマイコンはありません。Wi-FiやBluetoothモジュールをこのUARTへ接続すれば、ワイヤレス制御もできます。シリアル-USB変換ケーブルでマイコンとPCを接続し、メニュー形式で処理を選択するメニュードリブンをテンプレートに採用する理由は、2つあります。1つが、この「UARTが必ずあり、応用範囲が広い点」です。

もう1つが、メニュードリブンで開発すると「処理の移植が容易な点」です。テンプレート利用者は、メニューで示された処理のうち、必要な処理のみを簡単にテンプレートソースから見つけることができます。所望処理がUART受信コマンド解析関数から始まるからです。

そして、発見した関数(または関連関数)を、丸ごとご自身のソースへコピーすれば、動作させることができます。テンプレートは、多くの場合、この処理単位でファイル化していますので、ファイルを丸ごとコピーしさえすれば、必要な処理をテンプレートから抜き出すことも可能です。

評価ボードで実動作確認

入手性が良く低価格な評価ボードで、これらの骨格をもつテンプレートをボードへ実装し、動作確認を行い、詳細な説明資料付きで販売します。説明資料付きのテンプレートと評価ボードの組合せは、効率的に対象マイコンを習得でき、新規アプリ開発と評価に役立ちます。

販売テンプレートと開発テンプレート

現在、2種のテンプレートを販売中で、2種を年末までに開発、発売予定です。開発経過などを本ブログに記載しますので、ご参照ください。価格は、各1000円(税込)/1コピーです。

テンプレート名 ベンダ マイコン 動作確認評価ボード
RL78/G1xテンプレート Ver3 ルネサス RL78/G1x
(32MHz)
・RL78/G13 Stick
・RL78/G14 Stick
・QB-R5F100LE-TB
・QB-R5F104LE-TB
BB-RL78G13-64 (弊社推薦ボード)
LPC8xxテンプレート NXP LPC81x
Cortex-M0+
(30MHz)
・LPCXpresso LPC812  +  mX-BaseBoard
LPC1114テンプレート NXP LPC1114/5
Cortex-M0
(50MHz)
・LPCXpresso LPC1114  +  mX-BaseBoard
Kinetis/Eテンプレート(開発中) freescale Kinetis Eシリーズ
Cortex-M0+
(40MHz)
・FRDM-KE02Z40M  +  mX-BaseBoard

ARMコア利用メリットの評価

ARM Cortex-M0+コア利用のLPC8xxテンプレート発売で開発が一段落したので、Cortex-Mマイコンの現状を俯瞰して、今後の開発方針を検討します。

ARM Cortex-Mシリーズマイコンの特徴

ARM Cortex-M機種 一言で表すと…
Cortex-M0+ 超低消費電力ハイパフォーマンスマイコン
Cortex-M0 低消費電力マイコン
Cortex-M1 FPGA組込み用マイコン
Cortex-M3 汎用マイコン
Cortex-M4 デジタル信号制御アプリケーション用マイコン

 

8/16ビットキラーマイコンのCortex-M0+

M0は、8/16ビットマイコンより高性能、高エネルギー効率、高密度コードを目指して開発された32ビットコア。M0+は、M0よりさらに電力効率を最適化したコア。どちらも8/16ビットマイコンの価格レベルで32ビット性能を提供中。M0+の性能は、0.93 DMIPS/MHzで、M0の0.9 DMIPS/MHzより高性能。M0+は、M0命令セットと互換性あり。ARM Cortex-M開発ツールは、Eclipseベースとすることで、ベンダが異なっても開発環境を統一。ARM提供のCMSISを使うと、Mシリーズコアとベンダハードの差を隠ぺいすることができ、ソフト流用性も高まる。

世界定番ARMマイコンの最初のテンプレート開発にCortex-M0+を選んだ理由が、上記です。

これらCortex-Mシリーズの特徴は、ベンダやマイコン機種が変わると、一から開発環境構築やその習得、コアハードの熟知が必要だった従来マイコン開発に比べ、ベンダ/機種横断的に経験や既存資産を活かしたソフト開発が期待でき、利用者側メリットが大きいことを示しています。ARM社の狙いもココでしょう。

そこで、この「ARMコア利用メリット」を実際に試すことを今後の方針とします。

NXPのCortex-M0+テンプレート → NXPのCortex-M0テンプレートへ移植

発売中のCortex-M0+/LPC8xxテンプレートは、ARMコアベンダとしては老舗のオランダ)NXPのCortex-M0+マイコンLPC820を使ったテンプレートソフトです(写真参照)。NXPは、多くのMシリーズ製品を提供中です。そこで、このM0+テンプレートをM0機種へ移植することで、「同じベンダでCortex-M0+からM0への変更時のARMコア利用メリット」を検証します。

NXPのCortex-M0+テンプレート → フリースケールのCortex-M0+へ移植

ARMコアマイコンベンダとしては後発の米)freescaleのCortex-Mマイコンは、2014年7月現在、後発ゆえに特徴がきわ立つM0+とM4の2機種を提供中です。そこで、Cortex-M0+/LPC8xxテンプレートを、フリースケール製M0+マイコンへ移植することで、「異なるベンダでCortex-M0+ソフト移植時のARMコア利用メリット」を検証します。

どちらの検証も、いろいろなマイコンを開発してきた自身の経験と比較し、「ARMコア利用メリットを享受できるか否かの主観評価」になりますが、ARM社の狙いが絵にかいた餅なのか、本当に役立つのかの参考になると思います。

テンプレート移植
テンプレート移植

なお、別途販売中のルネサスRL78/G1xテンプレートは、コチラを参照して下さい。