LPCXpresso824-MAXでデバッガ接続NG時の回復方法

スイッチマトリクス:SWMを持つLPC8xxは、入出力ポートとマイコン周辺回路信号を柔軟に設定できる特徴があります。しかし、デバッグに重要なSWDIO/SWCLK信号の誤ったポート割付けなどが原因で、下図に示すLPCXpresso IDEデバッガと接続できないエラーが発生します。今回は、この対処方法を示します。

LPCXpresso824-MAX as not debuggable
デバッガ接続できないLPCXpresso824-MAX

LPC810対処

トラ技2014年2月号p85に、LPC810の同様問題への対処方法が掲載されています。SWMをもつマイコン特有の問題かもしれません。

LPCXpresso824-MAX対処

私の場合は、SWMとは関係のないLPCXpresso824-MAXのシステムクロック周波数を変更するプログラムでこの現象が発生しました。このエラーが発生すると、mbedプログラミングもできなくなります。因みに、mbedのファームウエアは、最新版Version0221 2015/03/03です。回復するまでは、LPC824への変更ができない状態となります。

この状態からの回復手順は、以下です。

  1. 念のため、mbedサイトを参照し、mbedファームウエアを最新版に更新完了しておく
  2. LPCXpresso824-MAXをパソコンと接続後、ボードのISPボタン押下げ後、リセットボタンを押す。リセットボタンを放し、最後にISPボタンを放す(→ ISPモードでデフォルトピン割付に回復)
  3. LPCXpresso824-MAXとパソコンを再接続し、LPCXpresso IDEを起動
  4. LPCXpresso IDEのProgram Flashアイコンをクリックし、Mass eraseを実行(原因プログラム消去)
Program Flash実行で回復
Program Flash実行で回復

今回の原因が、SWMに起因するか、または、main実行前に設定すべきシステムクロック周波数変更を、誤ってmain実行後に行ったことに起因するかは不明ですが、同じプログラムで現象が再現しますし、上記手順で回復しました。
LPCXpresso824-MAXとLPCXpresso IDEのデバッガ接続ができない時は、ご参考ください。

LPCXpreeso824-MAXのCMSIS-DAP使用法

今回は、次期マイコンテンプレートのLPCXpresso824-MAXボードを、無償IDEのLPCXpressoで動作させる方法を示します。無償IDEでも、ROM 256KBまで開発できますので、LPC8xxには十分です。
LPCXpressoのインストールからアクティベーションの方法などは、トラ技サイトを参照してください。ここでは、LPCXpresso824-MAXボードとインスト済みのLPCXpresso IDEの設定を解説します。

LPCXpresso824-MAX and LPCXpresso IDE
LPCXpresso824-MAXとLPCXpresso IDE

mbed動作のLPCXpreeso824-MAX

LPCXpresso824-MAXボードは、mbed動作がデフォルトです。つまり、ボードとパソコンを接続すると、USBメモリとして認識され、このUSBメモリへmbedネット環境で作成したオブジェクトをダウンロードしさえすれば、LPC824が動きます。この時に必要なツールは、ネットアクセスのブラウザのみです。

このように手軽にネットでオブジェクトが作成できるのがmbedの利点です。しかし、デバッグ環境としては、今後の進展を待つ必要があります。効率的なデバッグを行うには、IDEデバッガは必須です。

mbed動作からCMSIS-DAPへの変更

ボードユーザマニュアルUM108304~5章にも方法が書かれていますが、要点を示します。この手順で、オブジェクト作成とLPCXpresso IDEデバッグができるローカル環境が整います。
1.mbed-windows-serial-portドライバをWindowsパソコンへインストール
2.LPCOpenのLPC824用サンプルプロジェクトv2.15 Release Date:01/08/2015をダウンロードし、LPCXpressoへインポート
※2015年3月最新版LPCXpresso v7.6.2_326をインスト済みならば、C:\nxp\LPCXpresso_7.6.2_326\lpcxpresso\Examples\LPCOpenフォルダ内に同じサンプルがあるので、ここからインポートしても良い。
3.periph_hello_worldプロジェクトをビルドし、デバッガ起動。起動時、下図CMSIS-DAP認識要

CMSIS-DAP認識
CMSIS-DAP認識

4.Tera Termなどのシリアル通信ソフトを1でインストしたmbed Serial Portと接続(115200bps, 8-Non-1)
5.デバッガでResume (F8)実行。シリアル通信ソフトのTerm画面にHello World!が2秒毎に表示

Hello world!表示とCMSIS-DAP、USB Com LEDs
Hello world!表示とCMSIS-DAP、USB Com LEDs

この時、ボードCMSIS-DAP LED緑が点灯し、シリアル通信時にUSB Com LED青が点灯します。これがCMSIS-DAP (Cortex Microcontroller Software Interface Standard – Debug Access Port) デバッグ状態のボードです。CMSIS-DAP認識は、プロジェクトデバッグ初回のみで、次回起動時はありません。

LPCOpenライブラリ

2でインポートしたLPCOpenは、LPCXpresso以外のKeilやIAR開発環境でも同じAPIを提供するなど、適用範囲が広く、可読性も優れたライブラリです。また、3で使用したperiph_hello_world プロジェクトを含め、LPC824周辺回路30種以上のサンプルソフトも付属しています。

mbed環境も多くのサンプルソフトがありますが、NXPのLPCOpenサンプルソフトは高品質で、NXP Forumサイトで情報共有もできます。

販売中のLPC812用テンプレートと同じく、LPC824用テンプレートもこのLPCOpenライブラリを使って開発します。

LPCXpresso824-MAXボードの留意点

LPCXpresso812やLPCXpresso1114/5ボードは、パソコンとの接続に一般的なUSBケーブルを使います。しかし、LPCXpresso824-MAXの接続には、スマートフォンの充電、データ転送に使われるMicro-USBケーブルが必要です。このケーブルは、ボードに付属していませんので別途必要です。

2でインポートした最新のLPCOpenライブラリv2.15は、LPCXpresso v7.5.0以降で動作確認されています。古い版使用時は、v7.5.0以降へ更新が必要です。
※私のパソコンのみの可能性もありますが、Windows8.1(無印)でLPCOpenライブラリをビルドすると本来発生しないハズのエラーが発生します(互換モード変更でも同じ)。Windows8.1ProとWindows7ではこの問題は発生しません(いずれも64bit版)。同じ現象の方は、Windows8.1 ProかWindows7のご使用をお勧めします。

LPC824向けLPC82xテンプレート開発着手

次期マイコンテンプレートの3候補マイコン、NXP LPC824、Freescale Kinetis L、ルネサスRL78/I1Dのうち、LPC824とmX-BaseBoardとの接続方法について検討します。

IoT向きマイコンの要件

2015年1月~2月の集中調査の結果、IoT向きのマイコンは、以下の要件を持ちます。
・バッテリ駆動可能な動作電圧(1.8~3.6V)
・12ビットADC
・DMA/DTCと省電力動作モード
・低価格(¥500以下目安)
3マイコンは、いずれも要件を満たしており、2015年3月現在のマイコンと評価ボードの価格は下記です。

マイコン
(パッケージ)
価格(入手先) 評価ボード(価格、入手先)
LPC824 (32HVQFN) ¥259(DigiKey) LPCXpresso824-MAX(¥2800、秋月電子)
Kinetis L04 (48LQFP) ¥220(チップワン) FRDM-KL05Z (¥1747、DigiKey)
RL78/I1D (48LQFP) ¥430(マルツオンライン) RTE5117GC0TGB00000R(価格不明)

 

IoT向き省電力マイコンテンプレート開発着手

ルネサスRL78/I1D評価ボードは、現在、個人入手できませんので、価格不明です。
NXPとFreescaleは、合併の結果現状のARM Cortex-M0+マイコンの供給状況が変わる可能性もあり、リスクが少ないRL78/I1Dから着手したいのですが、上記のように評価ボードが入手不可で、同じS3コアのRL78/G14ともピンコンパチではないため基板流用もできません

そこで、発売日が新しいLPC824から省電力マイコンテンプレート開発に着手します。CPUボードと周辺回路が実装済みのmX-Base Board(後述)の両方が、秋月電子から簡単に入手できることも理由です。

LPCXpresso824-MAXとmX-Base Boardの接続

LPCXpresso824-MAXは、mbedとしても動作するCPUボードです。販売中テンプレートのLPC812やLPC1114では、制御系ボードとするため、mX-Base Boardと接続して動作させましたので、LPC824でもこのmX-Base Boardを使います。

LPCXpresso824-MAXは、BaseBoardとArduinoの両方のコネクタを持っています。しかし、BaseBoardコネクタを使う場合、mX-Base BoardのEthernetコネクタが接触して直接装着ができません。

LPCXpresso824-MAXとmX Base Board接続(BaseBoardコネクタ利用)
LPCXpresso824-MAXとmX Base Board接続(BaseBoardコネクタ利用)

そこで、もう一方のArduinoコネクタを使いmX-Base Boardと下図のように配線します。

LPCXpresso824-MAXとmX Base Board接続(Arduinoコネクタ利用)
LPCXpresso824-MAXとmX Base Board接続(Arduinoコネクタ利用)

これで、BaseBoard実装のLCD、リセットボタン、外部SW、ブザー、ポテンショメータ、EEPROMをLPCXpresso824-MAXから制御できます。

LPC8xxテンプレートV2.1をメジャーアップデートしV3リリース

従来LPC8xxテンプレートV2.1(2015/01/20更新)に、新たにこのLPCXpresso824-MAX向けの省電力テンプレートを追加し、合わせてLPC8xxテンプレートV3とする予定です。

これにより、NXPのLPC800シリーズマイコンへの弊社LPC8xxテンプレート対応は下表となります。

対象マイコン 推薦制御系ボード 対応テンプレート
LPC824 LPCXpresso824-MAX + mX Base Board LPC82xテンプレート(2015/04発売予定)
・シンプルテンプレート
・メニュードリブンテンプレート
・省電力テンプレート
LPC822
LPC812 LPCXpresso812 + mX Base Board LPC81xテンプレート(2015/01/20 V2.1)
・シンプルテンプレート
・メニュードリブンテンプレート
LPC811
LPC810

 

※シンプル/メニュードリブン/省電力テンプレートとは、弊社テンプレートの適用例を示すためのアプリケーションソフトです。
例えば、シンプルテンプレートは、テンプレートにチャタリング対応済みのSW入力とLED出力の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年は、エレクトロニクスのイノベーションの歴史で最もエキサイティングな時代になるだろう。」だそうです。弊社マイコンテンプレートが、このエキサイティングな時代に活躍する技術者/開発者の方へ、少しでもお役立てれば幸いです。

NXPがFreescaleを買収

弊社マイコンテンプレート提供中のNXPが2015年下半期までにFreescaleを買収、合併します。これにより、自動車向け、汎用マイコンのシェアが一社(NXP?)にまとまります。

両社提供のARM Cortex-M0/M0+マイコンの見直しや統合、新ブランド発表の可能性もあります。ARMマイコンの世界も集約されつつあるのでしょうか?
結果的として弊社マイコンテンプレートは、全ての上位陣をカバーするので、喜んで良いのかな?

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

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が実装できると思うからです。

マイコン技術者必読情報

PC Watchサイトの2015年1月1か月集中講座:「IoTの波に乗るマイコン事情」という記事を紹介します。PC用のCPUからスマホ、マイコンまで、全てのプロセサ事情が網羅され、まとめられた記事です。マイコン開発の技術者は、必読です。

マイコン技術者は第4回から読むと良いかも?

8ビット、16ビット、32ビットと変わってきたマイコンの歴史や、位置づけ、現状入手可能なマイコン開発で押さえておくべき特徴などが解りやすく解説されています。この第4回に自分が担当するマイコン記載がない場合には、第2回のARM Cortex記事にくわしく解説されています。

ベンダによるCortex特徴記事は、他社と差別化点のみを強調する傾向があります。Cortexの変遷や特徴などを、ベンダを跨いで解説したARMコア特集の第2回記事を読めば、よりARMコアの理解が深まります。

過去、現在、そして将来

マイコンの機種選定は、難しいものです。現在の価格、入手性は簡単に評価できますが、一旦開発すると納入先での長い運用が始まり、将来の拡張性や動向などを考慮することは、不可能な気もします。しかし、本記事記載の過去の経緯や変遷から、ご自分が開発したマイコンとその開発技術が、将来どうなるか、そして何が本質的に重要な要素かを考えてみるのも良いと思います。

IoTへのヒント

私は、この記事から多くのヒントを得ました。その中の1つを示し、今後のマイコン開発に役立てたいと思います。

第1回より:IoTやセンサーにはMCUが必須で、切っても切れない関係にある。理由はコストと効率性である。MPUは「何でもできる」が「何をさせるのにも適している」わけではない。用途によってはMCU:マイコンを外付けにして、ここに作業をオフロードした方が賢明というケースは少なくない

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

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種のマイコンテンプレートは、全てこの低減方法を実装済みです。

LPCOpen v2.15対応LPC8xxテンプレート発売

LPC8xx用LPCOpenライブラリのv2.15バージョンアップに対応した、LPC8xxテンプレートVersion2を発売します。テンプレート概要と仕様は、こちらのサイトをご覧ください。

LPCOpen v2.15とv2.01の相違点

LPCOpen v2.15は、評価ボードにLPCXpresso824が新たに追加されました。これにより、対応ボードは、LPCXpresso812(テンプレート使用中)、LPCXpresso824、812-MAXの3種になりました。このボード関連で、v2.15には、プロジェクト名とBOARD層名、readme内容に変更があります。主な相違内容をまとめます。

相違点 内容
LPC812ボードプロジェクト名 CHIP層は、”lpc_chip_8xx”に変更

BOARD層は、”lpc_board_nxp_lpcxpresso_812”に変更

BOARD名変更 BOARD_NXP_LPCXPRESSO_812に変更
デフォルトIRC システム動作クロック源供給元が、デフォルトでIRCに変更
I2C I2c_common_8xx、i2cm_8xx.c(マスタ)、i2cs_8xx.c(スレーブ)の3つに分離

APIは不変

APIは、v2.15とv2.01は同じですので、LPC8xxテンプレートは、そのまま使えます。例外は、I2C初期化のみで、Chip_I2C_Init(void)が、Chip_I2C_Init(LPC_I2C)に変更が必要です。

追加されたLPC82xとは

LPC81xで搭載していなかったDMAとADCを搭載(12-bit, max 12ch )し、SCTimer(ステート・コンフィギュアブル・タイマ)/PWMという、ステートマシンとタイマを組み合わせ、イベントや状態遷移、割込み発生ができるタイマを搭載したLPC800シリーズの新マイコン。

 

今回のLPCOpenバージョンアップは、対応ボード追加が主目的と思われます。外部Xtal使用が、デフォルトでIRC使用に変わったことや、I2Cのマスタ/スレーブ分離は、評価ボードを実際のボードへ移植する際には役立つと思います(LPC8xxテンプレートv1では、既にIRC利用に変更済みです)。

個人的には、LPC81xでLPCOpen v2.01ご利用中の開発者様は、あえてv2.15対応にせず、そのまま継続利用することをお勧めします。