LPC820 vs. RL78/G13 割込みコントローラ比較

NVICとRL78/G1xの割込みコントローラ比較

LPC820やCortex M0/M0+マイコンは、割込み処理性能を強化した新しいNVIC: Nested Vectored Interrupt Controllerを持っています。RL78/G1xは、4バンク構成の従来型割込みコントローラです。NVICは、これまでソフトで行っていた割込み 処理を、殆どNVICハードで行います。頻繁な割込みに対する効率化(テール・チェイン)などにより、割込み応答時間が均一になり、高速処理が可能です。

CPU LPC820 RL78/G13、RL78/G14
割込み回路 NVIC: Nested Vectored Interrupt Controller Interrupt Controller
レジスタバンク なし 4バンク(RB0/1/2/3)
レジスタ待避場所 スタック バンク
バンク使用時はスタック
PUSH/POP動作 ハード:NVIC処理(ソフト比、応答時間が均一で高速 ソフト処理
多重割込み受付 デフォルト許可 デフォルト禁止(受付はソフトでEI設定要)
テール・チェイン機能 あり なし
割込み優先レベル 4(高0/1/2/3低)、デフォルトレベル0 4(高0/1/2/3低)、デフォルトレベル3
ISR記述 規定ISR名でCソース記述(オーバーライド可能) __interruptを付加し、規定ISR名記述(オーバーライド不可)

 

割込み起因のバグは、再現性が低く、デバッグが厄介なものです。定量的な評価はできませんが、NVICの謳い文句やこの比較表以上に、割込み処理に対して、有効になると思います。

LPC820 vs. RL78/G13 I2C API比較

マイコンによるI2C APIの差

API比較
API比較

マイコンのI2CにEEPROMを接続する例でAPIを比較します。RL78/G13、RL78/G14、LPC820のI2C関連APIの関数名だけを抜き出して列挙しました。太字は初期化関数です。

RL78/G13とRL78/G14は、CubeSuite+のコード生成を使うと、両マイコンとも同じAPI関数でEEPROM制御ができますが、ここでは、あえて出典のアプリケーションノートを使った場合を示しました。これらアプリノートは、最近リリースされたものです。

この表からマイコン、メーカでAPIとアプリの切り口が、かなり異なることが判ります。例えば、RL78/G13の場合は、SCLのHigh/Low出力など、プリミティブなAPIがあります。RL78/G14は、上位/下位の2階層構成(_EepMdl_と_Drv_で分離、各層に初期化があるので太字関数は2つ)で、マルチスレーブが容易です。LPC820は、3つの中では最もシンプルなAPIでCubeSuiteのコード生成出力に近いものです。

一方、最もアプリに近いAPIは、似ています。例えば、R_EEPROM_R、R_IIC_EepMdl_Read、I2C_MstReceiveやR_EEPROM_W、R_IIC_EepMdl_Write、I2C_MstSendなど。

このように比較的よく使われるEEPROM接続でも、APIは様々です。従って、APIを利用するアプリケーションも、残念ながら異なるものとなります。マイコン選定に当たって、デファクトスタンダートや、開発者の経験で選ばれる理由がここにあります。

テンプレートは、市販の入手容易なボードと無償ツールを使って、結局はオーダーメードになるマイコンアプリの初期立ち上がりを加速するためのものです。人気のあるマイコン機種と使い方を厳選し、トリッキーな手法なしに、素のマイコン性能を引出せるテンプレートを目指します。テンプレートに対するご意見、ご希望などは、info@happytech.jp へお寄せください。

RL78/G13とRL78/G14の推薦開発ボード

RL78/G1x開発用に最適な市販ボードを見つけましたので紹介いたします。

RL78/G1x開発推薦ボード
RL78/G1x開発推薦ボード

秋月電子通商の、印)NGX社BlueBoard-RL78/G13_64pin、3800円です。LCD、UARTドライバ×2、ADC用ポテンショメータ、LED、ブサー、E1インタフェースなどが実装済みで、単独のRL78/G13CPUボードにブレッドボードなどでLCDやUARTドライバを追加するよりもお得です。また、RL78/G14も同じ基板で動作します。NGXサイトではRL78/G14用BlueBoardも販売中ですが、自信がある方は、ご自分でCPU載せ替えもできるでしょう。

1点だけ残念なのは、LCDインタフェースが、使用頻度の高い4ビットインタフェースではなく8ビットインタフェースになっている点です。実装マイコンが64ピンなので余裕があるためでしょう。弊社RL78/G1xテンプレートは4ビットインタフェースで開発しましたが、この8ビット版へも、sfr設定、LCD初期設定、LCDコントローラへ書込みの3関数の一部のみを変更して対応できました。

テンプレート最大動作クロック設定の目的

LPCOpenライブラリのスタートアップ処理変更

スタートアップ処理は、本来変更不要です。但し、唯一変更したい箇所が、デフォルト24MHzのシステム動作クロック設定:SystemSetupClocking()です。テンプレートは、CPU最大速度の30MHz動作にします(目的は、後述)。このシステム動作クロックは、ユーザプロジェクト処理のHdwInit()で再設定も可能です。しかし、一旦設定したクロックを再度設定するのは、なんとも気持ちが悪いです。このクロックはマイコン全ハードの動作を決めるので、SleepやPower_Downで止める以外は、安定発振が無難だからです。

LPCOpen APIとCubeSuite+コード生成の違い

LPCOpenサンプルソフトのシステム動作クロック設定関数SystemSetupClocking()を観ると、API関数に、やたらと1や2などの数値パラメタを代入しています(L103と112)。これは、CubeSuite+コード生成ではGUIで設定するパラメタを、LPCXpressoでは、API関数に直接代入して動作を変えるからです。GUIか、パラメタ代入か、どちらが簡単かは、意見の分かれるところですが、私はGUIが好きです。パラメタの場合は、マニュアルを読みながら値を設定する必要があるからです。

SystemSetupClocking()
SystemSetupClocking()

私のようなGUI好きな人向きに、システム動作クロックのパラメタを算出するExcelツールがあります。

システム動作クロックパラメタ算出ツール

Excelツールの使い方
Excelツールの使い方

Excelツールは、内臓PLLのMain CLKとFinを設定すると、システム動作クロック設定に必要となるMSEL、SPEL、DIVの3パラメタを算出します。2ページ構成で、1ページ目にPLL outのMain CLKとFinの入力セルがあります。ここへ60MHz、12MHzを設定します。するとPLLが安定動作する(緑エリア)MSELとPSELが4,1と判ります。また30MHz のSystem Clockには、SYSAHBCLKDIV=DIVのラジオボタンで2を選択すれば良いことも判ります。マニュアルを読むよりも簡単です。算出パラメタをAPI関数へ代入して、デバッガでSystemCoreClockをプローブすると、30MHzに変わったことが確認できました。

SystemCoreClockの確認
SystemCoreClockの確認

システム最大動作設定の目的

テンプレートは、システム最大動作速度の30MHzで開発します。これは、最短で処理を行うためです。そして、処理後はCPUをSleep(RL78/G1xはHALT)させます。この時は、周辺回路だけが動作します。Tick割込みでCPUのSleepは解除され、再び同じ動作を繰り返します。CPU最大速度とSleepの時間割合で最終的な消費電力が決まるわけです。つまり、CPUは時分割動作します。

例を示します。表示デバイスとして良く使うLCDの初期化には、数msec以上の待ち時間が必要ですが、この時間をCPUが待つのはムダです。そこで、この間はSleepし、数msec経過後に起き上がってLCD処理を行うなどです。これは、RL78/G1xテンプレートに添付したLCDアプリ例で実施しています。

テンプレートを当該アプリへ適用した後に消費電力を調整します。LPC8xxの場合は、Excelツールを使ってシステム動作クロックを徐々に下げ、時分割処理が達成でき、かつ、消費電力も低くなるシステム動作クロックを探します。システム動作クロックを下げればCPU消費電力は下がりますが、逆に処理時間は長くなりSleepが短くなるので、この方法で、両者のバランスがとれたクロック速度を探します。

RL78/G1xテンプレートの場合も同じです。CubeSuite+コード生成は、GUIで動作クロック速度を選択し、コード生成をクリックすると、ユーザプログラムに上書きされるので、作成ソースをいじることなく簡単安全にクロック速度の変更ができます。やはりGUIの方が楽ですね。

携帯やスマートフォン搭載のマイコンは、バッテリを長持ちさせるために、あらゆる方法を駆使して消費電力を下げる工夫をしています。ここで示したシステム動作クロックを下げるのも、その方法の1つです。

システム最大動作クロックをテンプレートに適用した後にアプリを開発すれば、消費電力を削減する方法が明確になりますし、その方法も簡単です。後は、この方法を成功させるように、CPU時分割処理向きのアプリを開発すれば良いのです。

サンプルソフトの構造

LPC8xxテンプレート開発時に参考にするサンプルソフトの構造について説明します。

サンプルソフトの構造
サンプルソフトの構造

RL78/G1xの無償IDEは、CubeSuite+、GUIで周辺回路のパラメタを設定すると、使用分の周辺回路APIが生成される優れものです。詳しくは、コチラの記事などを参照してください。一方、LPC8xxの無償IDEが、EclipseベースのLPCXpressoです。パソコンへのインストとアクティベーションなどは、トラ技2014年2月号やLPCXpressoサイトを参照してください。LPCXpressoもCubeSuite+と同様、サンプルソフトがIDEに付属しています。

スタートアップ処理とユーザプロジェクト処理

LPCXpressoをインストし、付属サンプルNXP_LPC8xx_SampleCodeBundle.zipをIDEへ展開後、そのソースを読む際のポイントは、サンプルソフトの構造です。構造の解説文が少ない(見あたらない)ので、説明を加えます(付属LPCXpresso User GuideはIDEの使い方解説書です)。

Blinkyを例に示します。組込みソフトは、2つの処理から成ります。「スタートアップ処理」と「ユーザプロジェクト処理」です。スタートアップ処理は、電源ONで自動的に実行されるResetISR()で、メモリなどの初期設定を行います。次にSystemInit()で、動作クロックなどのシステム関連の設定を行います。その後、ユーザプロジェクト最初の関数main()をコールします。

ユーザプロジェクト処理は、無限ループの前に2関数をコールします。HdwInit()で、使用する周辺回路の初期設定を行い、UserInit()でその他の初期設定を行った後に無限ループします(HdwInit()とUserInit()は、説明の都合上作成した関数名です)。

各関数は、NXP社提供のLPC8xxライブラリと、ARM社提供のCortex-M0+コアライブラリを使っています。またユーザが作成する関数も、これらライブラリを使って作成します。つまり、これらのライブラリがAPIを提供しているのです。ライブラリで初めから全てのAPIを提供しているところが、CubeSuite+と違う箇所です。

スタートアップ処理は、全てのサンプルプロジェクトでほぼ共通ですが、ユーザプロジェクト処理は、サンプルにより使う周辺回路が違いますので異なります。普通は、1個のサンプルプロジェクトで、1種類の周辺処理を紹介しますので、無限ループは文字通り簡単な無限ループで終わるものが殆どです。

スタートアップ処理の要は、最低限の動作ができる環境を作成するのが目的で、ブートストラップと呼ばれるゆえんです。パソコンのBIOSに相当する部分と言えば解り易いでしょうか? IDEのデバッガ動作時には、この部分は飛ばしてメイン関数の入口からデバッグを開始します。つまり、本来は、必要性が無い限り、変更不要と考えても良いでしょう。

ユーザプロジェクト処理も、無限ループ前を「周辺回路の初期設定:HdwInit()」と「その他のユーザ初期設定:UserInit()」に分けて考えると、参考にする部分がより明確になります。HdwInit()は、周辺回路の使い方が同じならそのままコピー利用もできます。但し、CubeSuite+と違って、LPCXpressoの場合はAPIパラメタで回路動作が変わるので、APIソースを解読する必要もあります。

サイズが大きいプログラムも、結局は無限ループ部分が大きいだけで、構造は同じです。大きな無限ループ部分の流用性や可読性を上げるために、ファイル分割などの技術を使っているだけです。

テンプレート工夫箇所

この構造が理解できると、サンプルプロジェクトの見通しが良くなります。そして、せっかく提供されているサンプルを上手く利用し、複数処理を実行するには、「無限ループ箇所を工夫すれば良さそうだ」、ということも判ります。組込み用のリアルタイムOSなども、この工夫の結果できたものと理解しても良いでしょう。但し、リアルタイムOS利用時は、OSの理解や面倒なオーバーヘッドも生じます。販売中のRL78/G1xテンプレートやLPC8xxテンプレート(近日発売予定)は、もっと手軽に複数処理を実現するものです。

入手性の良いマイコン分類図

入手性の良いマイコン一覧(チップワンサイトより抜粋)
入手性の良いマイコン一覧(チップワンサイトより抜粋)

組込みマイコンの分類図を、チップワンストップサイトで見つけました。この図は、チップワンストップで販売中のマイコンですので、「入手性が良いマイコン」と言えるでしょう。新規マイコン開発にあたり、どの機種を選択するかの残りの指標は、「入手価格」と「開発のし易さ」、「将来にわたる入手性」です。緑がARMコアマイコン、青がオリジナルコアマイコンを示しています。

コア差別から周辺回路差別へ

8/16ビットマイコンは、過去、現在と各社からいろいろな機種が発売されてきました。全て青のオリジナルコアマイコンで、開発手法やIDEも各社ハラバラでした。より性能の良いオリジナルコアにより、囲い込み戦略がとられていました。これら従来機の製造は、米)ロチェスター社との連帯により、将来にわたる入手性を保証する方法が、ルネサスなどで取られています。

一方、32ビットマイコンは、緑のARMコアが大半です。米)マイクロチップとオン・セミコンダクターを除く各社が、ARMコアのラインアップを提供しています。マイコンは、従来のコア差別から、周辺回路差別戦略へシフトしているといえます。実際、各社の周辺回路は、(少なくとも見た目は)16ビット機でも32ビット機でも同じものを使っています。米)サイプレス社などは、アナログ周辺回路を実装し、同じARMコア機でありながら十分な差別化も達成しています。

IoT時代の新マイコン

全ての機器がネットに繋がるIoT時代のマイコンには、通信制御は必須で、それなりの能力は必要です。これには、既存8/16ビット機で頑張るよりも、32ビット機が適しています。低消費電力と高速化の両方を追求し、IoT要求にマッチするコストパフォーマンスを満たすコアの解として、ARMコアは優れているのでしょう。また開発環境もほぼ同じなので、開発のし易さも(慣れれば)Betterです。さらにARM社は、32ビット機でありながら、8/16ビット市場を狙う低価格なCortex M0+を投入しましたので、新製品マイコンコアは、ARM独占になる可能性もあります。

ARM対Non ARMを記事へ

ARM派にとっては当たり前のことですが、世界標準と言われるCMSISを使ったアクセスやEclipse IDEなど、Non ARM派にとって「?!」を感じる箇所は多くあります。このブログではこの違和感を記載していきます。Non ARM派がARMを知る時、各自の取得技術側からARMを診ると、より効率的にARM習得ができるからです。

世界定番マイコンと日本産マイコン

ハード単体の制御に比べ、ソフトで柔軟に処理変更ができるマイコンは、優れた制御手段です。柔軟であるがゆえに、デバッグなどがリスクになることもあります。

所望の制御ができれば、どのマイコンでも構わないハズですが、実際は入手性や価格、開発環境の問題で数種類のマイコンが市場では優性です。トランジスタ技術2014年2月号によると、ARMは、「世界の定番マイコン」としての情報が豊富で、高速な32ビット動作、入手性や価格も問題なさそうです。今回は、この世界定番マイコンについて考えます。

日本産マイコン:RL78とCuteSuite+

日本産マイコンは、ルネサスエレクロトニクスに集約されました。個人的には、このルネエレの新しいマイコンRL78を応援しています。日本語情報の質、豊富さ、無償IDE:CubeSuite+、入手性、価格、性能どの項目でもRL78は優れています。特に、CubeSuite+のコード生成は、周辺機能のGUIによるパラメタ設定とAPI(Application Programming Interface)の生成により、マイコンプログラミングを変えたとも言えます。つまり、ユーザは、API利用と制御に重点を置いたプログラミングが可能となりました。「コード生成があるCubeSuite+があるのでRL78を使う」と言っても過言ではないでしょう。IDEは、世界標準のEclipse IDE版も提供し始め、グローバル化に努めていますが、コード生成なしでは使う気がしません。しかし、半導体は、大手が独り勝ちするビジネスです。今後どのようになるかは、誰にも判りません。

世界定番マイコン:ARMとEclipse IDE

一方、ARM搭載で国内入手性、価格が優れたマイコンは、トラ技にあるようにオランダNXPセミコンダクタ社のLPC8xxやLPC11xxです。秋月電子通商やマルツパーツ館で多くのLPCマイコンボードが販売中で、価格もデバッガ込みで2000円程度、Eclipseベースの無償IDEで開発します。プログラミングに便利な共通規約CMSIS(Cortex Microcontroller Software Interface Standard)使用、割込み専用回路NVIC(Nested Vectored Interrupt Controller)による高速多重割込み、32ビットなのに16ビット並みの消費電力、SWD(Serial Wire Debug)デバッグ機能など、世界定番たる実力を持っています。

英国ARM社の戦略の優れた点は、自らマイコンを製造せずに、半導体メーカにARMマイコンの設計図:コアを販売した点です。半導体各社は、このコアに独自周辺回路を付けてマイコン応用機器を開発/販売します。コアが同じARMなので、開発環境や使いこなし方はどれも同じ技術が使えます。その結果、32/64ビットのマイコンコアでは圧倒的なシェア(Wikipediaによると2004年で61%)を占めています。但し、コード生成機能は無く、ドライバはARM/NXPから提供されますが、CubeSuite+のように洗練はされていません。結局、ドライバを自作や改造する従来のマイコンソフト開発と同じです。

ところがCortex-M0+搭載のLPC8xxは、8/16ビットマイコン市場を狙ったデバイスで、低価格、更なる低消費電力で小型(8ピンから20ピン)、IOポートとペリフェラルを自由に割当てるスイッチ内臓、しかもUARTやI2CなどのAPIはROMで提供など、魅力的です。NXP社は、8/16ビット組込みマイコンキラーとも呼んでいます。全ての機器がネットで繋がる時には、このようなマイコンが使われるような気がします。

トラ技2014年2月号のLPC810も、8ピンマイコンとしては魅力的です。しかし、電源とSWDが専用ピンですので、汎用IOは4本になります。IOピン数が少ないので、18本の汎用IOピンを持つLPC820を診てみます。

LPC820とRL78/G13

LPC820とRL78/G13を比較し、世界定番マイコンの特性を考えます。

  LPC820:M101JDH20 RL78/G13:R5F100LEAFB 備考
入手性と価格 NXP直販、DigiKey等200円 ルネエレ直販、秋月電子等290円 (個人的に)入手性良いサイトの1個あたり価格(2014年1月現在)
チップ性能 32bit/30MHz動作ROM16KB,RAM4KB,Data Flash:なし汎用IO数:18 16bit/32MHz動作ROM64KB,RAM4KB,DataFlash4KB汎用IO数:48 ・LPC820はADCの代わりにアナログコンパレータ実装。・R5F100LCAFBは250円(ROM32KB,RAM2KB,DataFlash4KB)
IDE Eclipse:API自動生成なし言語:英語 CubeSuite+:API自動生成あり言語:日本語 ・LPC820は、UART、I2CはROMでAPI提供。・EclipseはGNUソフト。ルネエレも提供中。
レジスタアクセス CMSIS ルネエレ規定あり 機能的には同じもの
製造 蘭)NXP、英)ARM 日)ルネエレ ARMコアは、Cortex M0+

 

少ないIO対応の内蔵スイッチ、アナログコンパレータ、低価格設定など8/16ビットマイコン置換えを狙ったLPC820の戦略が判ります。Eclipseは、マイコンに限らずソフト開発の標準IDEになりつつありますし、LPC8xx情報の多くは英語で、API生成が無いことは残念です(GNUツール探すとあるかも…)。ルネエレは、RL78/G13以外にも多くの(日本向け)マイコンを国内製造していますので、この品種のみで評価するのはかわいそうですが、世界定番になるには不利な気がします。

良い物を戦略的に製造するグローバル企業連合に対して、様々なしがらみに縛られるルネエレの構図が現れていると言えそうです。国内自動車メーカはよく比較されますが、海外生産や現地モデルにより稼いでいるので威勢が良いです、しかし、国内資源で世界を相手にするルネエレは、とても頑張っていると言えます。

NXPマイコンのテンプレート

世界定番ARMマイコン:LPC820対応のテンプレートを開発するのも良さそうです。これには、既存RL78/G1xテンプレート機能を移植する予定です。その他、こんな機能を実装してほしい、というご要望などがございましたら、お気軽にお知らせください。

マイコンの長期供給情報を提供開始

2014年1月21日、ルネサスエレクトロニクスは、自動車、産業機器向けの長期安定供給が求められるマイコンなどの製品を対象に、今後10年/15年/20年以上の3パターンで、供給(予定)期間のサイト掲載を始めました。

RL78/G1xの供給期間

本ブログ記載のRL78/G13: R5F100LEAFBは、20年以上、RL78/G14: R5F104LEAFBは、15年の予定に属しています。R8C/25: R5F21256SNFPは、10年です。先日のJake Dyson Products LED照明の37年以上のライフに比べると、短い気もしますが…。大手が独り勝ちする半導体の世界では、会社自体がいつ消えるかも判らない状況ですので、ルネサスエレが存続する限りは、安心して使えそうです。

ADC変換精度向上方法

2013/12/16発行のルネサスエレクトロニクス アプリケーションノートに「A/Dコンバータの精度を向上させる方法」:R01AN1843JJ0100がありましたので解説します。
このアプリノートは、Smart Analog内臓のRL78/G1Aを対象デバイスとしていますが、「RL78/G13やG14などの普通デバイス」にも適用できる内容が記載されています。そこで、この普通デバイス:RL78/G1xのADC変換精度向上方法のみを抽出します。

RL78/G1xのADC変換精度向上方法

精度向上方法 内容
ハードウエアのノイズ対策 アナログ基準電圧端子:AVrefp/AVrefmの使用
アナログ入力端子に10pF~0.1uFのコンデンサ実装
アナログ信号とデジタル信号の分離、近接回避
基板アナログ領域とデジタル領域の分離、両者の1点グランド接地
ソフトウエアのノイズ対策 ADC実行中のアナログ端子近傍デジタル入出力の停止
ADC変換直後のHALT実施
ADCデータ平均化

全てA/D入力信号に対するノイズ対策です。アナログ端子に高精度チャネルと標準チャネルがあるRL78/G1Aに対し、(おそらく)全てが標準チャネルのRL78/G1xでも、できうる範囲でこの対策に沿ってADCを使うと精神的には安心できそうです。アプリノートには、定量的な対策実施済みのADCデータ平均化なしと5回平均の精度差、他社マイコンとの誤差比較も記載されています。

RL78/G1xテンプレートのADC評価

販売中RL78/G1xテンプレートでも評価したいところですが、評価設備が無いのと、(おそらく)ハードの依存性が高いでしょうから、定性的にADCを診てみます。AVrefp/AVrefm端子の使用、これらに一番近いANI2端子の使用、100ms周期の2回取得値一致によるアナログ値確定、ADC変換直後ではないがHALT利用など、完璧と言えませんが可~良の判定でしょうか。

RL78/G1xテンプレートの移植(その3)

仮想お客様開発ボード:BlueBoard-RL78/G13_30pin-Hへのテンプレート移植の3回目は、その2で示した移植手順3以降を解説します。

レジスタ・バンク設定

マイコンで複数処理をシステムとして上手く動作させるポイントの1つが、割込み処理です。この割込み処理を効率的に使うために、レジスタ・バンクの設定をします。詳しくは、コチラをご覧ください。移植ボードで使うレジスタ・バンク設定は、テンプレートの設定をそのまま使います。

userdefine.h修正

移植ボード回路図からテンプレートのuserdefine.hポート番号の論理名定義を変更します。

userdefine.h変更
userdefine.h変更

移植ボード動作

移植ボードの動作は、1. 電源ON後、uart1へ起動メッセージ出力、2. uart1経由で1文字コマンドを受信し、コマンドに応じてA:ADC値をuart1へ出力、B:ブザートグル出力、L:LEDトグル点滅、3. User SW押し下げでLEDとブザーのトグル動作とします。

移植ボードの動作
移植ボードの動作

テンプレート移植例なので、簡単な動作にしました。関数間の入出力データは、マイコンRAMを使っていますので、関数間の独立性や単体試験は容易です。

テンプレートの移植機能

Version2テンプレート提供中の全機能と、開発ボードへ移植する機能を示します。User SWは、INTP1に接続しているのでコード生成のINTP1割込み処理、Buzzerは自励式なので、LEDドライバで対応します。

ファイル名 機能概要 備考 ボード移植
main.c 起動処理 アプリとドライバ起動 あり
userdefine.h ユーザ追加マクロ ハードウエア割付修正 あり
uart.c uart1ドライバ 受信コマンド解析修正 あり
sw.c swドライバ チャタリング対応済み なし
led.c ledドライバ ブザー出力へ修正 あり
adc.c adcドライバ ノイズ対応済み あり
lcd.c lcdドライバ HD44780互換品対応 なし
pfdl_user.c データフラッシュドライバ RL78_FDL_LIB_VERSION_T04_REN: V1.05使用 なし
pfdl.h ライブラリヘッダ なし
pfdl_types.h ライブラリ追加マクロ なし
pfdl.lib ライブラリ本体 なし
LcdTest.c Lcdテスト用アプリ 1s周期起動 なし

 

動作テスト

移植ボードをパソコンに接続し、コマンドを送受信して動作中のボードを示します。

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

RL78/G1xテンプレートのメリット

BlueBoard-RL78/G13_30pin-Hを仮想お客様開発ボードとし、テンプレートの移植手順と、その方法を説明しました。テンプレート移植が簡単であることがお判り頂けたと思います。殆どがCubeSuite+の再設定と、ハード割付の変更です。ボード動作に関しては、動作に応じた追加や修正は必要になります。しかし、テンプレートで枠組みが決まっているので簡単です。処理の入出力データは、RAM経由なので、他のアプリやドライバの動作タイミングを考えずに、単独の動作タイミングで開発できるからです。

新規ボード開発時には、ボード周辺ハード/ソフトの単体テストソフトを作り、徐々に結合し、最後にシステム全体として動作させます。本テンプレートを開発当初から活用頂けると、関数間データ送受にRAMを使っていること、アプリやドライバ起動が時分割で複数あること、割込み処理効果を上げるバンク・レジスタ設定があること、などの本テンプレートの特徴を活かして、単体テストや結合テストも容易で、かつ、テストソフトそのものも活用できるので、実用プログラムの早期開発に役立ちます

メリットは、早期開発だけではありません。開発から時間がたってプログラムを見直す時に、プログラム解読が容易です。時間経過するとフローチャートなどに も目を通しますが、結局、動作理解には、ソースの解読が必要です。この時、テンプレートで枠組みが決まっているのと、そうでないのとでは、解読の困難さが 大幅に異なります。枠組がシンプルで、関数間がRAMで分離される本テンプレート方式は、単純なソースで記述できるので解読も簡単です