マイコンテンプレート活用のアプリケーション開発(前半)

マイコンのアプリケーション開発方法として、マイコンテンプレートを使った方法を前後2回に分けて示します。
テンプレートを使えば、マイコン習得と可読性、流用性に優れたアプリが素早く開発でき、開発者毎に異なる開発手法も統一できます。
前半は、アプリケーション開発手順1~3を解説し、次回、後半で手順4を解説します。

アプリケーション開発手順

動くアプリ完成までの手順を示します。

  1. 対象動作、「何を、どうするか」を明らかにする。この段階では、細かいことを気にする必要はありません。例えば、スイッチをスキャンする程度で十分です。
  2. サンプルソフトを探す。メジャーなマイコンは、必ず多くのサンプルソフトをベンダがサイト公開しています。この中から対象動作のサンプルを探します。
  3. サンプルソフトを読む。サンプルソフトは、「初期設定処理」、次に「ループ処理」の2構成で記載されるものが殆どです。たまに、メニュードリブン形式もありますが、これは、弊社メニュードリブンテンプレートと同様、処理抜出を容易にすることを目的にしたものです。
  4. サンプルソフトの必要部分をテンプレートへ組込み、デバッグ。

以上で、アプリが完成します。

マイコンの場合、組込み後、チューニングが必要な場合もありますが、アプリ完成後の処理ですし、アプリにも依存しますので、先ずは、動くアプリ完成までの手順を示しました。

RAD: Rapid Application Developmentツールを使う場合は、2のサンプルソフトをサイトから探す代わりにRADツールを使ってサンプルソフトを生成すると考えれば良く、同じ手順となります。

サンプルソフトベースの部品化

対象動作は、スイッチ入力処理、LED出力処理などできるだけ細かく分割し、部品化することがポイントです。
最後に、これら部品を組み合わせて1つのアプリケーションにします。部品毎にサンプルソフトを見つけ、デバッグすれば、バグもこの部品内に閉じ込めることができます。また、部品単位の流用性も高まります。

サンプルソフトを組合せてアプリケーション開発
サンプルソフトを組合せてアプリケーション開発

上級者との差が出る箇所と対策

手順1~3で重要なことは、「対象動作の明確化」と、「サンプルソフトの分離読解」です。分離解読とは、初期設定とループ処理を明確に分離して解読することで、処理内容は、大体把握すれば十分です(後述サンプルソフトの読み方参照)。

上級者は、多くのサンプルソフトを経験しているので、的確に対象動作を絞り込め、分離解読が、早く深い点が違います。さらに、上級者は、個人的なテンプレートを既に持っているので、サンプルの流用、組込みとデバッグが効率よくできます。

弊社マイコンテンプレートを活用すると、

  • サンプルソフトの組込みが簡単な、テンプレート獲得
  • 処理単体/結合デバッグが簡単で部品化も容易な、RAMを使った処理インタフェースの獲得

ができますので、上級者との差分を誰でも補えます。

サンプルソフトの選出

何回かサンプルソフトを読むと、より明確な対象動作が選べるようになります。逆に、サンプルソフトが見当たらない時は、絞り込みが不完全、または対象が間違っていると言えます。初めに全てのサンプルソフトをざっと眺めた後で、アプリをイメージするのも良い方法です。

但し、スイッチ入力処理は、注意が必要です。スイッチには、チャタリング対策が必須です。この対策は2つあり、1つがハードウエア、もう1つがソフトウエアの対策です。両者併用もあります。
個人的には、ハード対策の有無に関係なく、ソフト対策は必要と考えます。弊社シンプルテンプレートでチャタリング対策済みのスイッチ入力処理を添付しているのは、この理由からです。
チャタリングは、使用するスイッチでタイミングが異なりますので、対策済みサンプルをベンダは提供しにくいと思います。チャタリングに関しては、以前のブログ記事や、ネット検索すると、多くの情報がありますので、そちらも参照して下さい。

サンプルソフトの読み方

サンプルソフトは、「木を見て森を見ず」にならないように、細かいことは気(木?)にせずに、初期設定とループ処理の2つに分けて読みます。

初期設定は、コメントに注意し、周辺回路の使用方法が開発するアプリと同じがどうかを見極めます。同じなら、丸ごとそのままテンプレートへ流用します。異なる場合は、データシートなどで変更箇所を特定し、実際にサンプルに変更を加え、結果が正しく動作することを確認しておきます。

ループ処理は、無限ループで処理するものと、割込みで処理するものに大別できます。割込み処理は、基本的にそのままテンプレートへ流用します。
無限ループ処理は、何をトリガにアプリを起動しているかが解れば十分です。多くの場合、フラグポーリングやカウンタなどです。この起動トリガで関数化し、テンプレートへ組込みます。

テンプレートの狙い:複数サンプルソフト流用

よほどの上級者やツワモノを除けば、アプリ開発は、サンプルソフトの流用が王道です。敢えてリスクをおかしてサンプルソフト以外の方法でマイコンを動かす必要はないからです。ベンダサンプルは、典型的動作ですので、先のスイッチ処理の例外を除くと、流用可能なものが多いのも理由です。

但し、サンンプソフトは、1個の周辺回路の動作説明が主なので、実際のアプリで必要となる複数の周辺回路を組合せる記述はありません。これが、開発者毎に手法が異なる原因です。弊社テンプレートは、これに対して1つの解を提供します。

弊社マイコンテンプレートは、サンプル処理の流用が簡単で、複数サンプル処理を組込むのも容易です。従って、サンプルを活かした動くアプリの早期開発ができます。また、本テンプレートを用いれば、開発者毎で異なる開発手法を統一でき、可読性や流用性も高まります。次回、後半で詳細を説明します。

アプリケーション開発手順1~3のまとめ

  • 細かい単位の対象動作サンプルソフトを見つけ、初期設定とループ処理の2つに分けて読む
  • サンプルソフトを部品と見なし、複数部品の組合せでアプリケーションを開発
  • サンプルソフト獲得方法は、ベンダサイト、RADツールがある

次回は、手順4の部品化したサンプルソフトのテンプレートへの組込みとデバッグ、複数サンプルが同時に動くしくみを説明します。

 

補足:チューニングとマイコン性能

アプリケーション開発で最も厄介なのは、実はチューニングです。

アプリに最適なマイコンを選定していれば、一部アセンブラ化などのチューニングなしで動くアプリができます。しかし、この選定失敗、もしくは、選定マイコンが古いのにアプリ追加などで、性能を絞り出す場合などの、最後の手段としてチューニングもありえます。
但し、苦労してチューニングしても、トラブルフリーの経験がないので、絶対に避けるべきだと思います。結局、高性能マイコンへの置換えという結果になります。

では、マイコン性能はどの程度が正解でしょうか? マイコンでシステムを制御する場合、通常アプリ以外の処理ソフト、例えば、ハード/ソフトの出荷時のセルフテストや、入力が一定時間ない時のデモンストレーション表示なども必要です(自動販売機などでおなじみですね)。ここでは、これらソフトを「システム運用ソフト」と呼びます。

これらシステム運用ソフトは、通常アプリ動作中には、並列処理をしませんので、消費するのはROM/RAMです。ソフト開発者は、ROM/RAM量を見積もる時に、これら通常動作には現れないシステム運用ソフトも考慮する必要があります。経験では、通常アプリと同程度、つまりトータル2倍のROM/RAMは必要と思います。

また、必要となるマイコン性能は、通常アプリと、上の例で示したようなシステム運用ソフトの両方で考慮すべきです。処理能力に十分な余裕がないと、再現性のない取れにくいバグ発生のリスクも高まります。この処理能力も、2倍程度の余裕が必要だと思います。

ハードウエア設計の「ディレーティング50%」と同様、2倍の余裕がマイコン設計には必要と思います。

次期マイコンテンプレートのターゲット考察

NXPとFreescaleの合併、予想さえしなかったことです。激動するマイコン世界ですが、現在のマイコンテンプレート状況を整理し、次期テンプレートのターゲットとなるマイコンについて考えます。

入手性の良いマイコンとテンプレート販売状況

以前紹介した入手性が良いマイコンが一目で解る、チップワンストップサイトのマイコン/開発ツール検索を今回も利用させていただきます。サイト中央のマイコン/ボードタグをクリックすると、8/16/32bit処理ビットとベンダ毎に分けられたマイコンが表示されます。

一覧表が以下です。緑色がARM仕様のマイコン、青色がベンダ仕様マイコン、赤囲みがテンプレート対応マイコンで、現在4種のテンプレートを1000円(税込)で販売中です。

入手性の良いマイコンとテンプレート提供状況
入手性の良いマイコンとテンプレート提供状況

表中NXPはARM Cortex-M0のみですが、Cortex-M0+のLPC8xxも供給しています。
32bitマイコンの主流は、緑のARMマイコンです。表内のARMコアの特徴をまとめたものが下表です。

ARMコア 名称 概要
Cortex-Mx エンベデッド プロセサ 32bitの高い処理効率を維持し、業界最先端の動作と最小限のスリープ/ダイナミック電力、最小限のダイ面積を目指し設計。以下の4サブ構成。
Cortex-M0:低消費電力マイコン
Cortex-M0+:超低消費電力マイコン
・Cortex-M3:汎用マイコン
・Cortex-M4:デジタル信号制御マイコン
Cortex-Ax アプリケーション プロセサ 高度なオペレーティングシステム:OSが実行可能なメモリ管理ユニットMMU搭載マイコン
ARMx Classic プロセサ ARM11、ARM9、ARM7などコスト効果の高いマイコン

 

32bitマイコンのテンプレート対象は、Cortex-M0/M0+です。
Cortex-M3クラスになると、高価なうえに動作周波数も70MHz以上でControlよりもComputeが得意になります。IoT向けPCのEdisonRaspberry Pi 2(Cortex-A7搭載)と競合する可能性もあります。Cortex-M0/M0+は、16bitマイコン市場の置換えも視野に入れたマイコンですので、今後の普及も期待できます。
16bitマイコンは、ルネサスの超低消費電力マイコンRL78に、RL78/G1xテンプレートを販売中です。

4種テンプレートに付記した動作電圧からみえるのは、そのマイコンの想定アプリケーションです。
FreescaleのKinetis Eは、5V耐性やノイズ耐力を高めたマイコンです。また、NXPのLPC8xxは、バッテリ駆動ができ、小ピンですがスイッチマトリクスによりピン配置の自由度が高く、LPC111xも同じくバッテリ駆動可能で、第3世代でアクティブ消費電流が116uA/MHzまで低下したマイコンです。ルネサスのRL78は、広い動作電圧がセースルポイントのマイコンです。

以上が現状マイコンテンプレートの状況です。「16bitのHigh Performanceマイコンから32bit Entry+alphaのマイコンで、容易に入手できメジャーなもの」へテンプレートを提供し、「対象マイコンの速習と早期アプリ開発」が誰でもできます。テンプレートの詳細は、マイコンテンプレートサイトを参照してください。

IoTアプリケーション向きの超低消費電力マイコンと次期テンプレート

開発アプリケーションに適したマイコンを選ぶこと、これが最も重要です。汎用マイコンでも、想定した応用の範囲内で能力を発揮するように設計されているからです。
次期テンプレートは、よりアプリケーション指向の強いマイコンを選びます。当りハズレはありますが、当たればより多くのテンプレートが売れる可能性があるからです。

プログ記載の2015年1月~2月に集中して最新マイコンドレンドを分析した結果、各ベンダは、巨大マーケットを持つ「IoTアプリと車載アプリ」へのマイコン開発に力点を置きつつあることが解りました。特に車載マイコンでのこの動きの結果、NXPとFreescaleの合併となったとも言えるでしょう。

次期テンプレートもこのドレンド:IoTアプリ向けの超低消費電力マイコンに開発します。例を挙げると、ARM Cortex-M0/M0+コアでは、より低い消費電力、高エネルギー効率と低コストを狙ったFreescaleのKinetis LシリーズやNXPのLPC82x、ルネサスRL78:S3コアでは、RL78/I1Dなどです。

これらには、従来テンプレートに添付したシンプル/メニュードリブンテンプレートに加え、IoTアプリ開発の重要なポイントになる省電力テンプレート(仮称)も加える予定です。

 

IntelシニアフェローStephen Pawlowski氏によると、「これからの10年は、エレクトロニクスのイノベーションの歴史で最もエキサイティングな時代になるだろう。」だそうです。弊社マイコンテンプレートが、このエキサイティングな時代に活躍する技術者/開発者の方へ、少しでもお役立てれば幸いです。

最新マイコンのドレンド考察

IoTに向けて汎用マイコンも変化しつつあります。今回は、この変化について考えます。

ADC分解能12ビット

最近のマイコンADC分解能は、汎用タイプでも12ビットが標準的です。例えば、LPC824(NXP、2014/10発売)、RL78/I1D(ルネサス、2015/02発売)などです。従来10ビットに比べ4倍の分解能です。
接続されるセンサの性能向上や、マイコン向きの分解能として12ビットが選ばれたと思います。これ以上の分解能になると、キャリブレーションや測定誤差への対応が必須となり、ADC専用ICの領域となるからです。

CPU代替データ転送

DMA:Direct Memory Accessや、DTC:Data Transfer Controllerは、CPUに変わってデータを転送する機能です。CPU転送より低電力で動作するため、ADCとペアで使われるのが一般的です。ADC変換データをDMA/DTCを使ってRAMへ転送し、この間はCPUを休ませる、その目的は、消費電力の低減です。

CPU消費電流低下

マイコンCPU本体の消費電力が改善される好例が、LPC1114(NXP)です。トラ技2012年10月掲載のLPC1114評価ボードのCPUは、LPC1114/301でした。LPC1114/xx1 → xx2 → xx3(xx1の数字が世代を示し、現在は第3世代)で180uA/MHz → 140uA/MHz → 116uA/MHzと世代が進む毎にアクティブ消費電流が36%も低下しました。

これらの変化は、5Vレギュレータ動作から、バッテリーなどのより低く、しかも変動する電圧でも長時間動作する省電力マイコンが目的です。

基本動作モードと省電力動作モード

RL78カタログ資料より抜粋したRL78ファミリの動作モードを示します。

RL78ファミリの動作モード
RL78ファミリの動作モード

通常動作(MAIN RUN、ARMマイコンの場合はRUN)と低電力動作(HALT、ARMの場合はSLEEP)、動作停止(STOP)の基本3モードに加え、第4の新しい省電力動作モード(SNOOZE)があります。

SNOOZEは、HALTよりも更に低い電力で動作しますが、以下の点に注意が必要です。

  1. SNOOZE動作するには、STOP動作モードから入る必要あり。
  2. SNOOZE中に動作する周辺回路は機種によりに異なりRL78/G13、G14の場合は、ADC、CSI00スレーブ受信、UART0データ受信の3機能のみ。
  3. HALT → MAIN RUNに復帰する時間に比べ、起動時間がかかる。

これらに注意して、開発アプリでSNOOZEが有効に使えるか否かの判断が必要です。

例えば、RL78/G13でADCデータをDMAでRAM転送する場合には、SNOOZEは使えず、HALTで行う必要があります。あるいは、ADCはSNOOZEで行い、データ転送はCPUで行う方法もあります。
どちらが開発するアプリに適しているか、消費電力はどちらが低いか、SNOOZEからの復帰時間は問題ないかを検証し、決める必要があります。
最新マイコンRL78/I1Dは、RL78/G1xに比べこの制約が緩く、より簡単に広い条件で適用できる工夫も施されています。
また、さらに細かい省電力アプリへ対応すべく、10個もの動作モードを持つKinetis Lシリーズ(Freescale)などもあります。

Kinetis Lシリーズの動作モード
Kinetis Lシリーズの動作モード

ポイントは、各省電力動作モードの制約条件と復帰時間を考慮したうえでモード選択することです。

現行テンプレートの動作モード

販売中のテンプレートは、通常動作:MAIN RUNと低電力動作:HALT(SLEEP)の2動作モードに対応しています。これは、

  • この2動作モードは、全マイコンにあり、機種に依存しないテンプレートとして実現できること
  • 省電力化に最も効果があり、通常動作への復帰も高速なので確実(バグなし)に動作すること

が理由です。

省電力動作モードの注意点と裏ワザ

省電力動作モードには、多くの制約条件があります。言い換えると「動作するアプリや環境を想定した動作モード」とも言えます。この省電力動作モードの注意点をまとめます。

  • 想定したアプリや動作環境を見極め、それに沿って開発しないと徒労になる
  • 通常動作への復帰時間を吟味した上で使わなければ、取れにくいバグを生むリスクがある
  • 苦労して省電力動作モードを実装しても、そのモードの全体動作に対する相対時間が少なければ、得られる効果も少ない

実は、前述のLPC1114進化のように、マイコンそのものを初めから低消費電力版へ変えることが一番簡単で確実だったりします(裏ワザ?)。

省電力テンプレートの方針

テンプレートとしても新しい省電力動作モードへの対応が必要です。以下の方針で開発予定です。

  • 省電力アプリを特定し、その上で、応用範囲の広い適用例で開発
  • 省電力アプリの有効性を確実に示せるマイコンに実装(そもそも省電力動作モードそれ自身に、想定動作があるので機種依存性が生じるのも仕方がないかも…)

シンプル/メニュードリブンテンプレートに続く第3のテンプレート:省電力テンプレート(仮称)とは、
「通常時は現行テンプレートと同様MAIN RUNとHALT(SLEEP)で処理を行い、一定時間入力が無い場合は、STOPまたはSNOOZEになり、何らかの外部入力で通常動作へ戻る」
などでしょうか?

方針提案に対する、ご意見、ご希望など何なりとお気軽に、info@happytech.jpへお寄せください。参考にさせていただきます。

無償mbed OS 10月15日リリース予定

mbed OSリリーススケジュール(記事より抜粋)
mbed OSリリーススケジュール(記事より抜粋)

弊社ブログ記載のARM無償提供mbed OSのリリーススケジュールが、“ARM 「mbed OS」とは何か?その詳細と動向”記事にあります。本年2015年10月15日以降には、mbed OSを試せそうです。

mbed OS層構造

mbed OSの構造(記事より抜粋し加筆)
mbed OSの構造(記事より抜粋し加筆)

ARM Cortex-M0/M0+のマイコンに無償で使えるmbed OSは、図のように各種標準通信プロトロルを提供します。ROM容量の少ないマイコンは、この中の一部を選択して実装できるそうです。

CMSISとIPv4、IPv6実装済み無償OSがC++ APIで使える10月15日が待ち遠しいです。弊社テンプレート提供中のARMマイコン、LPC812、LPC1114/5、Kinetis Eにも適用できそうです。

実物を診ないと断言はできませんが、テンプレートもこのmbed OSの上(Applicationsの層)に配置できる気がします。超うすいテンプレートだからです。勝手にライバル視してきましたが、実は、CMSISと同じ感覚でネット接続APIが使える可能性もあり、ますます待ち遠しいです。
一方、IoT向けPC:Raspberry Pi 2に無償提供されるWindows 10にとっては、強力ライバルソフトになりそうです。Raspberry Pi 2は、ARM搭載ですので、当然このmbed OSが実装できると思うからです。

マイコンテンプレート利用法ページ追加

販売中の4種マイコンテンプレート説明資料に、テンプレート利用法ページを追加しました。
既にテンプレートご購入の皆様へは、近日中に追加済みのテンプレート説明資料をメールにて送付いたしますので、しばらくお待ちください。

テンプレート利用法ページの内容一部抜粋

テンプレート利用法ページには、ソースコードを見やすくするための記述の工夫テンプレート機能とその処理関数どこにユーザ関数を追加した結果、シンプル/メニュードリブンテンプレートになるのかを3ページにわたって示しております。
説明資料の全ページ内容は、テンプレートサイトの各テンプレート説明資料右下のもくじを参照して下さい。P1とP2は、サイトからダウンロード可能です。

RL78/G1xテンプレートの内容を一部抜粋します。他の3種LPC8xx、LPC111x、Kinetis Eテンプレートも同様です。

テンプレート機能とその処理関数
テンプレート機能とその処理関数(RL78/G1xテンプレートの例)
テンプレートに追加するユーザ関数の場所
RL78/G1xテンプレートに追加したユーザ関数:LedBluToggle()の例

これらのページにより、より具体的にテンプレート使用方法がお判り頂けると思います。

テンプレートご購入者様、ご検討中の方にとって一番知りたいことは、「テンプレートが簡単に使えるかどうか」です。追加したページが、このご参考になることを期待しております。

マイコン消費電力低減の検証

2015年2月号のトラ技特集4章、5章にマイコン消費電力の低減手段が列記されています。良く整理された記事で、No1~No10までの消費電力低減手段と、マイコン仕様の例が示されています。

弊社のマイコン消費電力を減らすアプローチは、2014年3月1日弊社ブログの“システム最大動作設定の目的”の項に書きました。今回は、このマイコンテンプレートに実装済みの電力低減方法とアプローチを、上記トラ技の内容で検証します。

マイコンテンプレート消費電力低減の仕組み

最も簡単かつ効果的な消費電力低減方法は、トラ技No5手段の低消費電力モード:スリープの導入です。無処理時のCPUクロック供給を停止し、周辺回路はクロック供給を継続します。問題は、具体的にどのようにプログラムすれば、この手段がソフトウエアで実現できるかです。

弊社マイコンテンプレートは、対象マイコンのアクティブ最大速度で、アプリを時分割起動します。そして、処理終了時と処理が無い時間は、スリープする仕組みをテンプレート自身にプログラム済みです。また、未使用の周辺回路には、クロック供給をしません(トラ技No7手段適用済み)。

従って、素のテンプレートは、時分割の最大周波数動作です。3月1日の再掲になりますが、先ずこの状態で目的のアプリを開発します。

電力低減へのアプローチ

電力低減のために動作周波数を下げる(トラ技No1手段)のは、テンプレートを使ったアプリ完成後です。これは、アプリが出来ていないうちに、周波数を下げるのは、自分で自分の首を絞めるのと同じだからです。

アプリ完成後なら、周波数を下げられます。但し、設定できる周波数は、限られています。同様に、供給電圧を下げるのも(トラ技No2手段)、5V/3.3V/1.8Vなどに選択肢が限定されます。これらの周波数/電圧の選択肢のうち、どれが効果的かを比較し決定するアプローチをテンプレートは想定しています。これら決定に、動作アプリ自身も反映する必要があるかもしれないからです。

また、テンプレートは、250us/1ms/10ms/100ms/1s起動の計9か所の起動箇所と、スリープ起動箇所が明確に別れた時分割起動なので、どの部分の処理に時間が掛っているか、時分割動作が出来ないのかが解析しやすいのもの特徴です。従って、問題部分の処理分割や見直しも可能です。これは、トラ技No5手段の動作プロファイル最適化を、実際に検討する際に役立ちます。

例を示します。RL78/G13やG14スタータキットは、マイコンの平均消費電流をテスタで簡単に計測できます。RL78/G1xテンプレートのHALT()(スリープ相当)処理をコメントアウトすると、消費電流が倍になることが確認できます。

HALT有無で電力消費変化を検証
HALT有無で電力消費変化を検証

ハードウエア関連の留意点

トラ技No3、No4、No6、No7手段は、マイコン機種選定時に考慮すべき内容です。また、No8、No9、No10手段は、マイコン周辺回路設計・動作時の留意点です。ソフトウエアのマイコンテンプレートとは切り離して考えます。

トラ技内容をあまり記述すると“ネタばらし”になるので、No1~No10の詳細は、トラ技を購入して参照して下さい。

 マイコンテンプレートの検証結果

今回は、トラ技の内容で、弊社マイコンテンプレートにインプリメントされている消費電力低減方法と、アプローチ方法を示しました。結論は、主だった低減手段は、テンプレートに組込み済みです。テンプレートを使ってアプリ完成後、さらなる電力消費低減アプローチも示しました。販売中の4種のマイコンテンプレートは、全てこの低減方法を実装済みです。

マイコン開発ツールの考察

最近のマイコン開発環境の動きと、その効果的な習得方法について考察します。

一人でできる最新マイコン開発環境習得の経費

一人でできる最新マイコン開発環境習得の経費
一人でできる最新マイコン開発環境習得の経費

マイコン本体選定と頻度

最重要は、システムに使うマイコン本体の選定です。私は、入手性、価格、性能、開発のし易さの順に選びます。個人利用可能な電子部品サイトは、秋月通商、マルツ、DigiKey、Mouserなどがあり、1個当たりのマイコン本体価格比較も簡単です。性能と使い易さは、日頃マイコン記事などをチェックして見当をつけます。

使用マイコンが会社で決まっている場合もあるでしょう。しかし、たまには個人で選定することも大切です。会社で決まったまま数年たって気が付くと、浦島太郎状態になるからです。1マイコン精通もアリですが、最近の環境変化対応は必須です。

マイコン本体は、端的に言うとARMマイコン以外は各社各様で、その変化幅と世代の変化量も大きいです。車のポルシェのように、最新版が常に最高!とは言いませんが、半導体の変化スピードもこれに近いものがあります。1件当たりの開発期間を半年~1年と仮定すると、2~3回開発が終わる度に最新状況チェックは必要です。

本内容がこの状況のご参考になれば幸いです。

評価ボード選定の留意点

主要マイコンには、性能や使い方を試す評価ボードが必ずあります。この評価ボードには、マイコン本体と電源、デバッグ回路、スイッチやLEDなどの最低限ハードが実装されたシンプルなCPUボードから、UARTドライバやLCD、ブザーなどの周辺回路が実装された制御系ボードまで様々です。

例えば、ルネサスのRL78/G1xならBB-RL78G13-64が後者:制御系ボードになり、G13スタータキット、G14スタータキット、QB-R5F100LE-TB、QB-R5F104LE-TBなどが前者:CPUボードです。

初期投資を抑えるならCPUボードです。しかし、アプリ動作テスト時にそのままでは使えません。結局、周辺回路を後付けすることになり、その手間と接続ミスの可能性などを考えると、ある程度の周辺を含んだ制御系ボードがお勧めです。

制御系ボードと被制御対象間のインタフェース

この制御系ボードは、マイコン本体の発売から数年以内に発売されるものが殆どです。このような制御系ボードの種類が多いものが、チマタで(世界的に)流行しているマイコンと考えても良いでしょう。多くの周辺回路を含んで¥2000以内と、驚異的な低価格で販売しているfreescaleのFRDMシリーズボードなどもその1つです。

実アプリ動作には、この制御系ボードに、被制御対象が接続されたものが必要です。被制御対象とは、例えば、モータ、ソレノイド、LED照明本体などです。汎用性がある制御系に対して、被制御対象は、アプリの依存性があるハードです。

制御系と被制御対象間のインタフェースとして、Arduino Unoやmbedなどの業界インタフェースがあります。被制御対象をこれら業界インタフェースで開発すれば、制御系が高性能化しても被制御対象はそのまま対応できるというメリットがあります。

開発環境IDEと業界インタフェース

マイコン開発は、高速開発が要求されます。ソフト的にこれをサポートするために、ルネサスのコード生成や、freescaleのProcessor ExpertなどのRAD: Rapid Application Development ツールがIDEに付属します。また、IDEの慣れの問題を解決する手段として、対象マイコンのコンパイラを変えればいろいろなマイコンに対応できるIARやKEILなどの商用IDEもあります。これらIDEとツールを使えば、素早いソース作成が可能です。

ただし、ソース作成のみではソフト開発では、道なかばです。実機動作テスト、ハードとの結合デバッグが必須だからです。実機テストには、制御系は最低限必要です。被制御対象は、ソフト開発と並行して進められることが多く、経験上、ソフト側へのリリースは遅れます。ソフト開発者は、これに留意したうえで開発スケジュールの立案が要求されます。

この立案の助けになるのが、開発速度を上げることをハード的にサポートする制御系と被制御対象間のインタフェースです。業界標準のArduino Unoやmbedを採用していれば、被制御対象の市販ボード代用も可能です。

マイコン開発環境の狙い

制御系デバッグ効率は、経験やツールが活かされる分野です。Eclipse IDEは、多くのデバッグアドオンツールで、だれもが効率的にデバッグできる環境を提供しています。開発分業(専業)体制にマッチします。

開発規模が大きくなると分業は必要です。人間、一度に集中できるエリアは、そんなに広くないからです。各種IDE付属ツール(コード生成、Processor Expert)や業界標準IDE(Eclipse)、インタフェース(Arduino Uno、mbed)が生まれる背景、目的はこの高速分業体制です。

個人レベルの技術習得

個人レベルでこれらの高速分業マイコン開発環境への慣れや備えは、必要です。例えれば、数学を解くには、ツールとして算数や暗算、時には電卓を使うと役に立つのと同じです。

限られた時間とお金に余裕がない個人レベルで、これら最近のマイコン開発全体を俯瞰し、効率的に速習するには、評価ボードで実動作する弊社マイコンテンプレートを使うのも1つの方法です。必要経費を、最初の表に示しました。この程度の金額であれば個人でチャレンジすることも容易だと思うのです。

Kinetis Eテンプレート発売

ARM Cortex-M0+ Kinetis Eテンプレート発売開始

freescaleのKinetis Eテンプレート、Processor Expert自作サンプル添付版を¥1000(税込)で販売します。テンプレート解説資料の、P1:概要とP2:仕様を示します。

Kinetis Eテンプレート説明資料P1
Kinetis Eテンプレート説明資料P1
Kinetis Eテンプレート説明資料P2
Kinetis Eテンプレート説明資料P2

Kinetis Design Studio自作Processor Expertサンプル添付

テンプレートは、LED出力とSW入力のみを組込んだ「シンプルテンプレート」と、組込み必要機能をほぼ全て盛込んだ「メニュードリブンテンプレート」の2つに、Kinetis Design Studioと評価ボードで動作確認済みの「自作Processor Expertサンプルソフト(ADCやTimerなどの17種)」を添付し、もくじ内容の説明資料付きで¥1000です。

購入ご希望の方は、メール(宛先:info@happytech.jp)にてお知らせください。銀行振込口座を返信いたしますので、税込代金¥1000円を振込でください。入金確認後、全もくじページとテンプレート、PEサンプルを一式にしてZIP圧縮ファイル(約30MB、PEサンプルなどを含むため、サイズが大きいです)をメールにてお送りします。後は、ご自由にテンプレートに変更や修正を加えて頂いて、Kinetis E早期習得、アプリ開発に役立てて頂ければ幸いです。

KDS IDE Tipsを豊富に記述

マイコンテンプレートサイトには、テンプレート添付の自作Processor Expertサンプル一覧(もくじP7)とシンプルテンプレート写真(もくじP13)も掲載中です。今回は、特に2014年夏新リリースのKinetis Design StudioのTips(もくじP9-12)にも重点をおきました。現在KDSは、2.0.0ですが、新開発のEclipseベースIDEなので、これらTipsがあると、開発ステップの最初のつまずきが無くなります。その他3種類のマイコンテンプレートの記事も掲載していますので、合わせてご覧ください。

テンプレート対象者は、初級~中級のソフト開発者です。上級者は、これに似たテンプレートを既に持っており、IDEの使い方にも慣れているからです。本来は、上級者がテクニックを含む自分のテンプレートを初級~中級者へ教え、教えられた側でさらに、テンプレートに修正を加えれば、技術継承も容易です。しかし、この継承は、習得済みの者にとっては、オーバーヘッドになり、未習得の者にとっては、理解困難な面が多いものです。

販売テンプレートは、詳細なもくじ資料付きですので、だれにでもその内容が理解できます。また、テンプレートソースには、「判りにくい英語ではなく、日本語コメント」を豊富につけていますので可読性も高いと思います。対象マイコンの早期習得、アプリ開発に最適です。

マイコンテンプレートのサイト立上げのお知らせ

マイコンテンプレート関連の情報を、1ページにまとめた専用サイトを2つ立上げました。

ブログは、マイコンテンプレートの開発情報や開発経緯、Tipsなどを時系列で記載します。
ブログを最後まで読んでいただく手間を省くため、重要内容を抽出し再編しました。
紆余曲折の検討結果が、最新版テンプレートの状況になり、専用サイトにまとめられたと考えてください。

マイコンテンプレートサイト

マイコンテンプレート専用サイト
マイコンテンプレート専用サイト

記載マイコンテンプレートは、下記です。

  • Cortex-M0/LPC111xテンプレート
  • Cortex-M0+/LPC8xxテンプレート
  • S2/S3コア RL78/G1xテンプレート
  • Cortex-M0+/Kinetis Eテンプレート

サイトの「もくじ」をクリックすると、記載位置へジャンプします。スマホなどの小さい画面でも観やすいように、解像度の高いテンプレート動作中写真も掲載しております。

アプリケーション開発手順サイト

マイコンアプリケーション開発手順サイト
マイコンアプリケーション開発手順サイト

マイコンアプリケーションの開発手順を1ページにまとめました。
マイコンテンプレートを使ってアプリを開発する時の、10手順と、2補足を掲載しています。

Kinetis Design Studio 2.0.0リリース

11月24日Kinetis Design Studioの新版2.0.0がリリースされました。Kinetis Eテンプレートもこの新しいKDS2.0.0で開発します。このKDSにも期待した評価ボード:FRDM-KE02Z40MのProcessor Expert: PEサンプルソフトは付属していません。このことは、テンプレートに自前PEサンプルソフトをつけて販売するというKinetis Eテンプレートの狙いには好都合です。

今回は、KDS2.0.0の簡単な使い方を説明します。

コードサイズ制限なしのKDS

freescaleのIDEには、Code Warrior: CWとKDSの2つがあります。KinetisシリーズはKDSでサポートされ、CWは今サポートしているKinetisのみで打ち切りです。CWは、無償版128KB制限がありますが、KDSは、コードサイズ制限なしで無償版のみです。どちらもEclipseベースですが、細部は異なります

KDSインストール

インストールは簡単です。サイトからWindows版インストーラをダウンロードし、実行すれば完了です。Cドライブ直下のC:\Freescal\KDS_2.0.0\にインストールされます。

起動すると、最初にワークスペースの場所指定が必要です。Cドライブのデフォルトワークスペースを使う場合は、そのままですが、私は、Dドライブのマイドキュメント内にワークスペースを作成します。これにより、KDS再インストやUpdateでも、自作したプロジェクトファイルは影響をうけません。ワークスペース指定後は、別プロジェクトのインポート、または、新プロジェクト作成の作業をします。

サンプルソフトのインポート

KDSの評価ボード:FRDM-KE02Z40Mのサンプルソフトが少ないことは以前記載しました。そこで、別ボードサンプルを使う場合や、CWサンプルをインポートする場合は、「Copy projects into workspaceのチェックを外す点」に注意してください。☑したままでインポートすると、インポートソースの表示ができません。

CodeWarriorサンプルソフトのインポート例
CodeWarriorサンプルソフトのインポート例

新プロジェクト作成

自前のプロジェクト作成時は、File>New>Kinetis Design Studio Projectを選択します。プロジェクト名を入力後、BoardsかProcessorsを選択します。Boardsとは、FRDMなどの評価ボード、ProcessorsとはKDSでサポートしているKinetisシリーズのことです。残念ながらFRDM-KE02Z40MはBoards選択肢にありませんので、Processors>Kinetis E>MKE0x/KEA>KE02Z/KEAZN(20MHz, 40MHz)>MKE02Z64xxx4を選びます。この後、コード生成ツールとしてProcessor Expert: PEを使うか否かの選択をします。

Processor Expertt利用の選択肢
Processor Expert利用の選択肢

PEを選択しないと殆ど何もないmain.cを持つプロジェクトができます。一方、PE選択時は、main.c/Event.c/Event.hの3ファイルから成るスケルトンプロジェクトが生成されます。main.cは、スタートアップ処理後の最初に起動される関数main()を含むファイルで、Event.cとEvent.hは、割込み処理ファイルです。

PE利用時のユーザコード追加

Processor Expert利用のユーザコード追加場所
Processor Expert利用のユーザコード追加場所

main.cとEvent.c/Event.hの一例を示します。ユーザコードを追加できる場所は、/* Write your…*/の後です。この指定場所にPEで作成したコンポーネントのAPI関数を使ってユーザコードを追加していけばソースコード完成です。PEでコンポーネントを変えてAPIを再生成した場合でも、指定場所に追加したユーザコードはそのまま保存されます。

PEを利用しない場合は、これらAPI関数や割込み処理ファイル分割も自分で設計する必要があります。

ソースコード完成後は、ビルドとデバッグの繰返しです。ビルド、デバッグの一連作業は、EclipseベースのIDEならどれも違いはありません。これが、Eclipse IDEが開発者に好まれる理由です。

Kinetis Eテンプレートとは、

KDSを使った、ワークスペース設定>プロジェクト作成>ユーザコード追加>ビルド>デバッグ作業を簡単に説明しました。何回かプロジェクト作成を経験すると、いつも同じようなユーザコードやファイル構成に出合います。Kinetis Eテンプレートは、この同じようなコードとファイル構成を纏めてテンプレート化したものです。つまり、PEが作成したスケルトンに、より完成アプリに近いユーザコードを肉付けし、ファイル構成に工夫を加えたものです。そして評価ボードで動作確認済みで提供します。

PE出力のスケルトンファイルは、どのようなアプリにでも対応できる基本形ですが、API関数を除くと殆どゼロのコーディングスタートです。テンプレートを使えば、このゼロスタートをかなり改善できます。また、時分割の簡易マルチタスク処理も行いますので、OSを使うほどではないマイコンアプリには最適です。結果として、アプリの早期開発、問題点抽出ができます。テンプレートに関する詳細な情報も添付しますので、初心~中級レベルの開発者にとっては有用です。

さらに、評価ボードで動作確認済みの多くの自作PEサンプルソフトをKinetis Eテンプレートに添付します。これで、KDS付属サンプルソフトが少ないことを補完できます。PEサンプルとテンプレートを合わせて使うと、より早くKinetis E理解、アプリ開発ができます。販売開始は、2014年末予定です。

 

現在販売中の他マイコンのテンプレート一覧は、コチラをご覧ください。