CodeWarriorクイックレファレンス

ARM Cortex-M0+のfreescale Kinetis Eテンプレート開発は、Kinetis Design Suite :KDSを使うほうが、CodeWarrior :CWよりも良さそうだということは以前のブログで書きました。但し、今はCWの方がより習得が容易だと思います。このCW習得に便利なクイックレファレンスを見つけましたので、紹介します。

マイコンIDEとEclipse

全てのマイコンIDEは、Eclipseベースになりつつあります。ルネサスのRL78シリーズならe2 studio、NXPやfreescaleの無償IDEは全てEclipseベースです。メリットは、プラグインが多少違っていても同じベースなので使い方を知っていれば、他社IDEでも「即使える」ことです。MS Officeを知っていれば、Office互換ソフトが、簡単に使えるのと同じです。

このIDEを即使えることは、重要です。マイコンソフト開発準備労力のかなりの部分を短縮できるからです。分厚いユーザマニュアルを読んでも、肝心のソフト開発には、直接結びつかない苦労を避けられます。

CWクイックレファレンス

クイックレファレンスP1
クイックレファレンスP1(一部抜粋)
クイックレファレンスP4
クイックレファレンスP4(一部抜粋)

CWインストフォルダのHelpフォルダ内に、Eclipse Quick Reference Card.pdfがあります。簡潔に良くまとまっていて、CWだけでなく、全てのEclipse IDEに応用が利きます。Eclipse Quick Reference Card.pdfでネット検索すると、CWをパソコンへインストしなくても参照できると思います。

ページ1~2にショートカット、ページ4以降は、Eclipseの操作画面説明です。Eclipseを使ったソフト開発なら、これだけ知っていれば十分だと思います。

Kinetis Eソフト開発のポイント:Processor Expert

2014年末発売予定のfreescale Kinetis Eテンプレートソフト、この開発にProcessor Expertを使いこなすことがポイントと考えた理由を示します。

Processor Expert :PEとは

PEは、ルネサスRL78/G1xのCS+コード生成ツールに相当します。使用周辺回路のパラメタをGUIで設定できます。例を示します。Kinetis Eテンプレート開発で使うボード:FRDM-KE02Z40Mと、その赤LEDをPWM点灯する時の設定です。設定ミスがあると、そのパラメタが黄色で表示されるので、すぐに修正や変更ができます。

FRDM-KE02Z40MとProcessor Expert設定画面
FRDM-KE02Z40MとProcessor Expert設定画面

設定後、コード生成ボタンを押すと、ユーザソース所定か所にPE生成コードが自動挿入されます。ユーザは、PEが生成したAPIを使ってアプリ開発に着手します。PE設定パラメタを変更後、再生成しても、ユーザソースは残ったまま、生成コードが再挿入されます。

つまり、周辺回路APIをPEで生成 → 動作パラメタはAPI内部に隠ぺい → ユーザソースそのものの流用が可能、です。CS+のコード生成ツールと同じ目的です。

PEを使わないサンプルソフト

旧来のマイコンソフト開発は、デバイスドライバ開発担当が、このAPIを自作していました。高性能APIが自作できますが、機種が変わるとAPIも変わることが多く、同じ処理でもアプリ作り直しが必要でした。API自動生成ツールPEは、アプリ作り直しの回避と再利用を可能にするツールです。

もちろん、Kinetis EでもPEを使わずに旧方法のアプリ開発もできます。IDE付属サンプルソフトの多くは、この旧方法で提供中です。サンプルソフトの目的が、1個の周辺回路のシンプルな説明に主眼があり、PEを使うよりはこの目的に適していること、従来からあるサンプルソフトをそのまま流用したこと、などが理由だと思います。

因みに、PEユーザガイドは、約200ページ、CS+のRL78 APIリファレンス編は、400ページ以上のボリュームがあること、などもAPI自動生成ツールがサンプルソフトで使われない原因かもしれません。良いツールには、それなりの解説書が必要です。ただ、背景記述が少ないのと、クイックレファレンスがほしいです。

iPhoneやスマホを使うと、本当に良いツールは、マニュアル無しでも使えるモノかな?とも思いますが、コンシューマ向けと、マイコン開発のようにプロフェショナル向けのモノとでは違って当然ですね。

テンプレート開発ボードのPE

テンプレート開発ボードFRDM-KE02Z40MでPEが自動生成する周辺回路一覧を、アルファベット順に示します。

テンプレート開発ボードのコンポーネントリスト
テンプレート開発ボードのコンポーネントリスト

多くの周辺回路=Componentの設定が可能です。使用頻度が高いタイマ、GPIO、UART関連、また、ボード実装のTSS: Touch Sensing Softwareや、3軸加速度センサ接続のI2CもKinetis Eテンプレートで使う予定です。 Component Levelとは、アプリ流用の容易さを示していて、Logical Device Driver :LDD、High、Lowの順で流用性が高くなります。

例えば、Lowレベルコンポーネント使用時、既に動いているアプリを別機種へ移植した時に、想定外動作をする時は、このLowレベルコンポーネントからデバッグしていくと良いかもしれません。これはCS+コード生成には無かった機能です。

また、これらPEの設定を出力し、別プロジェクトへ移植する機能もあります。これもCS+コード生成にはありません。CS+は日本語操作できる良くできたIDEですが、多くのコード生成パラメタを別プロジェクトへ引継げないのが(唯一の)欠点だと思います。

PE出力は、テンプレート使用中IDEのCode Warrior :CWとKinetis Design Suite :KDSのどちらにも移植でき、CWからKDSへ変更してもそのまま使えます。Kinetisシリーズ開発環境が、今年CWからKDSへ移行中ですので重要です。

つまり、PEを使えば、

1.アプリ流用性が高まる
2.CW←→KDSのIDE変更は問題なし
更にfreescaleマイコンは(おそらく)同じ周辺回路を使っており、それらのAPIがPEで生成ができるので、
3.freescaleマイコン機種変更も問題なし(の可能性あり)
など3拍子揃ったソフト開発が期待できる、これらがAPI生成ツール:PEをfreescale Kinetis Eテンプレート開発に使う理由です。

IoT向けの無償ARMマイコンOS

弊社、販売中のLPC8xxテンプレートLPC111xテンプレートのライバルが、ARMから無償提供されます。ARM mbedの組込みOS「mbed OS」がそれです。

mbed OSとは

mbed OSに関する記事、「ARMがIoT向けにOSを無償提供開始」と、「ARMは「mbed」フラットフォームでIoT時代を実現させる」によると、ARM社が提供し(つまり、CMSISのOS版になるかも…)、

Cortex-M0/M0+向け、モジュラー構成で必要に応じて選択組込み可能、セキュリティ機能あり、イベントドリブン型OS、mbed Device Server(こちらは有償)との通信によりクラウドサービス利用可能、現在はα版で2015年10月に正式版の予定、NXP/freescaleなどのmbedベンダも参加、オープンソース開発、などなどIoTデバイス開発コスト低減化に効果あり。

かなり強力ライバルです(勝手にライバル視しましたが、ARM社様、ご容赦を…)。今後、ウオッチを続けたいと思います。

組込みマイコンのマルチタスク化

確かに組込みマイコンに多くの機能を実装する時、OSがあれば楽だと思うことがしばしばあります。Windowsデスクトップアプリ開発などを経験すると、より一層感じられることで、IoT時代のマイコンにはmbed OSなどの組込みOSが、必須プラットフォームになるでしょう。

ただ、OSを利用しようとすると、それなりの基礎知識が必要になります。有名な組込みマイコンOS:FreeRTOSなども、使い始めのステップが結構高く、大規模/多人数ソフト開発なら便利でしょうが、普段使いには躊躇します。

さらに、ベンダや機種毎に異なる基礎知識、商用Windowsの例では、OS更新時の手間など、実アプリ開発着手の前段階、メンテで労力を使い果たしてしまいます。これらに関しては、mbed OSで統一されれば、明るい見通しはあります。

マイコンテンプレートの市場

そんな背景で開発したのが、マイコンテンプレートです。簡易マルチタスク化、デバッグ容易、サンプルソフト流用得意、などの特徴があります。イメージ的には、以下の範囲での適用が市場です。

テンプレート市場と対応マイコン
テンプレート市場と対応マイコン

先の記事に、ARM mbedとIntel市場の違いをKris Flautner氏が説明されていましたが、(勝手に無断)引用させて頂くと「mbed OSは非常にハイエンドのモノで、それに対して弊社テンプレートがフォーカスするのは、無償IDEで開発できるプログラムサイズの低価格な組込みマイコンの市場。両者は全く異なる。」と言えます。

販売中のテンプレートの骨格説明と、一覧はコチラをご覧ください。

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の効果的活用」です。このあたりは、追々本ブログにノウハウ等を記事にする予定です。