マイコンIDE習得のポイント

Windows 10 Home Update制御

販売中のマイコンテンプレート説明資料は、テンプレートについて重点的に説明しています。しかし、ご購入者様から頂く質問には、テンプレート動作環境、つまりマイコンIDEに関するものも多くあります。
今回は、このマイコンIDE使い方のコツ、ポイントを説明します。

Windows 10発売を機に、皆さんは今新しいOSの機能や利用方法を習得中だと思います。マイコンIDEと、このWindows 10を関連付け解説を試みます。

マイコンIDEは、OSと考えるべし

Windows 10、旧Windows 7や8と比べると、新ハードウエアやネットワーク、セキュリティ対応に機能満載です。多くの設定項目がありますが、最初はデフォルト設定で動かすのが良いでしょう。慣れてくれば、設定をいろいろに変えて、自分好みにカスタマイズもできます。

マイコンIDEも同じです。IDEは、多くのマイコン機種、使用言語、デバッグ方法に対応できるよう多くの選択肢:プロパティを持ちます。ユーザマニュアルにも、多くのページを使ってプロパティの説明があります。しかし、IDEを使う時に、これら多くのプロパティを、全部知るのは無理ですし不要です。

Windowsと同じく最初はデフォルトで使用し、徐々にカスタマイズするのがIDEやOSなどの環境ソフトの使い方です。

初心者にとって、デフォルト設定でIDEが使えればありがたいのですが、多くのIDEは、中級~上級者へも対応する、いわば「初心者と中級者以上の二兎を追う方式」のため、多少のカスタム設定が必須です。
このカスタム設定が最も少ないのが、IDEベンダ提供の標準評価ボードを使ったマイコン開発時です。弊社テンプレートが、この評価ボードで動作確認しているのもこのためです。

  • マイコンIDEのプロパティ設定が多いのは、しょうがない。
  • カスタムプロパティ設定の少ないIDE+標準評価ボードが、マイコン初心者には適す。

マイコンIDEの使い方ポイント

使用するマイコン、開発言語(C/C++ または アセンブラなど)、IDE(コンパイラやデバッガなどの開発環境)は選定済みとします。この時のIDE設定手順が下記です。3段階から構成されます。

マイコンIDE設定手順
マイコンIDE設定手順

IDEへ使用マイコンとデバッガなどの環境ツール設定が、最初の段階です。ここでは、Rapid Application Development: RADツールを使用するか否かなども選択肢になります。MCU:マイコン本体クロック設定と周辺回路の設定が、次の第2段階です。最後が、IDEが出力したスケルトンソースへ、ユーザソースを追加し、ビルド&ボードデバッグを繰り返し行い、アプリケーションを完成させます。

ポイント1:IDE生成スケルトン理解

直ぐにユーザソースを追記したい気持ちは解ります。しかし、使用するRADツールに応じてIDEが生成するスケルトンが異なることがよくあります。例えば、FreescaleのKinetis Design Studioの場合、RADツールにProcessor Expertを選ぶ場合と、Kinetis Software Development Kitを選ぶ場合とでは、スケルトンが異なります。ルネサスのCS+でも、コード生成の有無でスケルトンは全く異なります。

先ず、IDEが生成する「スケルトン動作を把握することが最重要」です。このために、RAD選択肢を変えることも必要でしょう。殆どのIDEの場合、第2段階のMCUクロックは、デフォルトで安全動作周波数に設定済みです。従って、周辺回路なしでも生成されたスケルトンコードでボードデバッグができます。

スケルトン動作把握とは、「マイコン電源投入後、順番にどの処理を行い、main()を呼出しているか、次に、割込み処理の記述はどこで行っているかを知ること」です。

main()呼出しまでの処理(スタートアップ処理)は、MCU動作クロックを変更する場合などを除けば、大体把握できればOKです。また、マイコン機種による違いも少ないです。

一方、割込み処理記述は、使用マイコンやIDEにより様々です。経験的に、IDEと標準評価ボードの組合せで用いる記述方法が、解りやすさや柔軟性に優れます。素直に、この方法でユーザ処理を追加することをお勧めします。

  • IDE生成スケルトンは、使用RADツールにより異なる。
  • 生成スケルトンの動作を把握することが最重要。

ポイント2:デバッガ接続

最初は、MCUクロックはデフォルト設定、周辺回路なし、スケルトンコードのみでビルドします。このビルドは、IDE生成分のみですので100%成功するハズです。

問題は、デバッガ接続です。

IDEがサポートするデバッガは、通常4~6種類もあります。デバッガに応じてさらに詳細設定が必要ですので大変です。ここは、ユーザマニュアルの「対応デバッガ部分のみ」を注意深く読んで、設定する必要があります。ユーザマニュアルが分厚いのは、このように対応種類が多いためです。使用するデバッガのみに絞って読めば、恐れるに足りません。

IDEとデバッガを接続後、ビルド出力をボードへダウンロードし、デバッガで動作確認します。何もユーザ処理を追加していない時の動作、例えばスタートアップ処理後のRAMクリア状態などが確認できます。

ユーザ処理は追加していませんが、これでIDEの処理全体を一通り試すことができます。

  • IDEとデバッガ接続は、ユーザマニュアルの対応部分を拾い読み。
  • 最初のビルドは、スケルトンコードのみでデバッガ接続しIDE全体処理を体験。

ポイント3:サンプルソフトAPI利用例を活用

スケルトンは、骨組みです。この骨組みに、ユーザ処理を追記すれば、アプリケーションが完成します。

骨組みには、IDEが使用周辺回路に応じてライブラリを生成します。このライブラリへのインタフェースがAPIです。IDEの役割は、APIの中身を作ることです。

ユーザソースは、このAPIの使用順序を記述するのみと考えても良いです。少し前までは、このライブラリもユーザが開発していました。しかし最近は、ライブラリはベンダが提供します。ベンダ提供ライブラリを使えば、ユーザソースは、API使用順序のみですので、移植性やメインテナンスも楽です。

APIの使用法は、これも分厚いAPIレファンスマニュアルに記述されています。しかし、真面目にこれを読む前にサンプルソフトを参照します。典型的な周辺回路APIの使い方、これがサンプルソフトです。サンプルに出てくるAPIのみをレファレンスマニュアルでチェックすれば十分です。サンプルソフトの選び方は、コチラを参照ください。

  • IDEは、スケルトンと、使用周辺回路に応じたAPIを生成。
  • サンプルソフトを参照し、典型的なAPIの使い方を学ぶ。

まとめ

多くのプロパティがあり、付属マニュアルも厚いので取っ付きにくいマイコンIDEですが、ここで示した方法を用いれば、早く効果的にIDEを習得できます。

具体的な話が少ないので、皆様のお叱りを受けそうですが、少しでもご参考になれば幸いです。

* * *

Windowsには、様々なTipsがあります。各マイコンIDEのTipsも少なからずありますが、ここでは個々のIDEによる違いは無視して説明しました。実は、IDEで差が生じるのはRADです。RADに対しては、初心者の方は、少し力を入れてマニュアルを読む必要があるかもしれません。
但し、これも必要な周辺回路の箇所のみを拾読みすれば、事足ります。分厚いマニュアルは、読む箇所を間違わないように、拾読みで対処しましょう。

Windows 10 Home UpdateコントールTips

マイコンIDEで具体例が無かった代わりのTipsです。
Windows 10 HomeでOS Updateをユーザが制御できない問題に対し、フリーソフト: Winaero Tweakerが役立つかもしれません。Technical Preview対応ですが、製品版にも使えそうです。

Windows 10 Home Update Control
Windows 10 Home Update Control

NXPのFreescale買収、株主承認取得

NXPによるFreescaleの買収に進展があり、7月2日株主承認が得られました。後は、規制当局の承認を得て、予定通り今年の終わりまでに完了するようです。

気になる両社のCortex-M0/M0+マイコンの今後については、未だ不明確です。
個人的には、統合開発環境IDEは、NXPのLPCXpresso、Rapid Application Development : RADツールは、FreescaleのProcessor Expertが好みなので、折衷的なIDEができると嬉しいです。両社同じEclipseベースIDEですが、異なります。

ルネサスの新マイコン:Renesas Synergy MCUも、EclipseベースIDE(E2Studio?)でARM Cortex-M0+/M3/M4コアと予想しています。この新マイコンの詳細発表は2015年4Qで、NXP買収完了とほぼ同じタイミングです。

RL78/G10テンプレート開発最終回:RL78/G1xテンプレートVer5発売

QB-R5F10Y16-TBボードで動作中のTinyテンプレート

ROM/RAM=2KB/256Bまたは4KB/512BのRL78/G10

売れ筋RL78/G10マイコン2種
売れ筋RL78/G10マイコン2種

2015年6月現在、入手性が良く低価格なRL78/G10マイコン、2品種を示します。

RL78/G13やRL78/G14と比較すると、ROM/RAMがかなり小さくIOピン数も少ないことが判ります。データフラッシュはありません。10ピンのR5F10Y16(最初の写真)は、2015年6月現在、Star Productです。

そこで、S2/S3コア用RL78/G13やG14のRL78/G1xテンプレートを、S1コアRL78/G10向けに改良し、21%小さいサイズのTinyテンプレートを開発、S2/S3コア版テンプレートにS1コアもカバーするRL78/G1xテンプレートVer5として発売します。テンプレートは、全てC言語です。

Tinyテンプレート

ROM/RAMが小さいRL78/G10では、テンプレート自身もサイズが小さい方が適します。
S2/S3コアのテンプレート機能から、重複機能を削除したS1コア向けのTinyテンプレート概要を示します。ROM/RAM数値は、テンプレートのみのサイズです。ROMは、PROGRAM SECTIONのサイズ(Tips参照)です。

テンプレート実装機能 S2/S3コア向けテンプレート
ROM/RAM
使用量=439/8バイト
S1コア向けTinyテンプレート
ROM/RAM
使用量=345/6バイト
周辺機能のStartAPI起動 実装 実装
ドライバ関数起動 実装 実装
アプリ関数起動 実装 削除
HALT起動 実装 実装
メイン暴走監視 実装 削除
周期割込み暴走監視 実装 削除
WDTリセット 実装 実装
マニュアルリセット 実装 実装

 

Tinyテンプレートは、アプリ/ドライバを区別せず全てドライバ関数起動で起動し、アプリ関数起動は削除しました。また、アプリ暴走監視や周期割込み暴走監視も、WDT満了でカバーできるので削除しました。

このTinyテンプレートは、S1コア専用ではなく、従来テンプレートの代わりにS2/S3コアのRL78/G13やG14へ使うことも可能です。むしろ実装機能を整理した結果、より解り易いテンプレートになりました。このTinyテンプレートCソースを読んだ後に従来テンプレートCソースを読むと、テンプレート理解が容易になります。

RL78-S1/S2/S3全コア対応RL78/G1xテンプレートVer5発売

RL78/G1xテンプレートにこのTinyテンプレートを追加し、RL78/G1xテンプレートVer5として発売します。ご購入方法は、コチラをご覧ください。Ver5は、RL78-S1/S2/S3コア全てに対応したRL78/G1xテンプレートになりました。

QB-R5F10Y16-TBボードで動作中のTinyテンプレート(1秒毎にLED点滅、SW1押下げでトグル動作)
QB-R5F10Y16-TBボードで動作中のTinyテンプレート(1秒毎にLED点滅、SW1押下げでトグル動作)

RL78/G1xテンプレートご購入者様で、無償Ver. UP権をお持ちの方へは、本日より10日以内にVer5をメール発送いたします。メール発送まで、しばらくお待ちください。

 * * *

RL78/G10 Tips

RL78マイコンで唯一のS1コア:RL78/G10は、S2/S3コアのRL78/G13やG14と異なり8ビットマイコンです。ルネサスは、コア差をあまり強調しませんが、いくつかの差が生じますのでこれに関するTipsを示します。

S1コア用スタートアップ

S1コアのスタートアップは、RAM全体を区別せずに全て0で初期化します(ハードウエアマニュアル8.2.9)。

RL78/G10のCS+ for CCは、cg_srcフォルダを自動生成

CS+の生成ファイル
CS+の生成ファイル

フォルダ構成は、RL78/G10時のみ他のRL78/G13やG14と異なります。

セクションサイズ

前回ブログのCC-RLリンクオプションプロパティで設定したセクション合計サイズ出力と、ROM/RAMの関係を示します。

  • RAMDATA SECTION:16進数 Byte(s)…RAM使用量
  • ROMDATA SECTION:16進数 Byte(s)…ベクタテーブルなどのROM使用量(固定配置)
  • PROGRAM SECTION:16進数 Byte(s)…作成プログラムのROM使用量(コード生成分含む)

ROMDATA SECTIONは、0hからCEh番地にデバッグ・モニタ領域10バイトを加えた、0hからD7h番地の範囲に固定配置されます。プログラムで使えるROMは、この固定領域216バイトを引いた残り分です。

従って、RAMDATA  SECTION ≦ 0x100/200 (256/512)Byte、 PROGRAM SECTION ≦ 0x728/F28 (1832/3880) Byteが必須条件です。

RL78/G10テンプレート開発2回目:サンプルソフト問題

前回、初心者が起こしがちなRL78/G10ソフト開発時の2つのつまずき

  • 第1つまずき:CS+設定パラメタの多さ
  • 第2つまずき:サンプルソフトが実務ソフトにそのまま使えないこと

を示し、第1の対策に、パラメタ設定を示しました。今回は、第2つまずき具体例と、弊社テンプレートの対策を示します。

R01AN2668JJ0100をC言語へ

サンプルソフトは、RL78/G10初期設定CC-RL R01AN2668JJ0100(アセンブラ記述)を、C言語で書直したものを使います。2015年6月時点で、適当なC言語サンプルソフトが見当たらないからです。

ルネサス提供サンプルソフト R01AN2668JJ0100
ルネサス提供サンプルソフト R01AN2668JJ0100

処理概要を示します。

初期設定(アプリノートより抜粋)
初期設定(アプリノートより抜粋)

前回作成したソースコードは、メイン処理に何も追加していないものに相当します。これに、アプリケーションノートPage23の図4.5 メイン処理フローチャートに沿ってC言語でSW入力とLED出力処理を追加したものが下記です。

C言語書直しのメイン処理
C言語書直しのメイン処理

Cソース追加後、コンパイル:F7 → ボードダウンロード:F6 → 実行:F5を行いQB-R5F10Y16-TBボードで動作させてください。アセンブラ記述と同じSWを押すとLED1(黄)が点灯し、離すと消灯の動作がボードで確認できます。

サンプルソフトに処理追加

このサンプルソフトに、さらに別処理を追加することを考えます。例えば、圧電サウンダを1秒毎にピッと鳴らすなどです。実務ソフトでは、良くある事柄です。

QB-R5F10Y16-TBボードに圧電サウンダを追加するのは面倒ですので、代りにボードのLED1を1秒毎に点滅させる処理を追加します。もちろん、実装したSWとLED1点灯サンプルソフト処理は、そのままで追加します。

LEDを1秒毎に点滅させるフローチャートは、下記です。問題は、実装済みサンプルソフトに、これをどうやって追加するかです。

追加LED点滅処理
追加LED点滅処理

サンプルソフト問題点:処理追加が困難

マイコンで複数の処理を行う方法、それは「時分割処理」です。オペレーティングシステム:OSを使ったとしても、この時分割処理の手法は同じです。
ある時間は処理1を、別のある時間は処理2を、別けて実行するのが時分割処理です。この分割を、早く細かく行うことで処理を仮想的に並列実行します。イメージとしては、こんな具合です。

マイコンの時分割メイン処理イメージ
時分割メイン処理イメージ

サンプルソフトは、「1つのサンプル処理」を説明するためのソフトです。従って、別処理追加の必要がありません。これが、サンプルソフトが時分割処理を持たない理由です。
サンプルソフトが実務ソフトとしてそのまま使えない理由も、この処理追加の概念が無いからです。
実務ソフトは処理が複数あり、かつ、処理の追加/削除が発生するので、処理の独立性や、追加/削除が容易なことが求められます。

実務ソフトの骨組マイコンテンプレート

マイコンテンプレートは、この時分割処理と、処理独立、追加/削除が容易となる仕組みを持っています。
テンプレートに組込んだフローチャートは下図になります。青がテンプレートです。

マイコンテンプレートのメインフローチャート
テンプレートのメインフローチャート

テンプレートでは、サンプルソフトのSW入力とLED出力も時分割起動します。これは、SWチャタリング対策を行うためです。この対策後のSW状態をSW1_RAMへ保存し、LED出力は、このSW1_RAM値でON/OFF制御します。
SW1_RAMを使うことで、処理独立性が高まります。例えば、LED点灯の代わりに、ブザー音出力などの追加/変更も簡単になります。出力側を変更しても、SW入力側の処理は変わりません。

複数処理と処理独立性を提供する実務ソフトの骨組がテンプレートです。
例えると、パソコンのランチャーソフトに近いです。ランチャーは起動のみですが、テンプレートは、さらにランチされたアプリケーション同志がRAM経由で情報をやり取りすると思ってください。

テンプレート応用例:シンプルテンプレート

簡単なテンプレートの応用例として、ここで示したSWとLEDの実務ソフトをシンプルテンプレートと名付けRL78/G1xテンプレートに添付します。
※シンプルテンプレートは、全ての弊社テンプレートに添付しており、各マイコン対応のCPUボードでハード追加なしに動作します。

テンプレートを使えば、第2のつまずきも回避できます。サンプルソフトを見つけ、テンプレートへ必要部分の処理を肉付けし、RAMを処理間に使えば、拡張や変更に対応できる実務ソフトが完成です。

テンプレートを使ったアプリケーションの開発方法は、コチラのページにも詳しくまとめていますので参考にして下さい。

* * *

RL78/G10テンプレート開発の2回目は、サンプルソフト問題対策としてテンプレートの仕組みを示しました。
次回は、小ピンマイコンRL78/G10特有の問題、RL78/G13やG14と比較するとROM/RAMが少ないことへのテンプレート対処を示します。

RL78/G10テンプレート開発 1回目:テンプレート利点

数回に分けて、RL78/G10テンプレート開発の経緯を、「初心者向け」に示します。あえて初心者向けとしたのは、テンプレートを開発・販売してきて、初心者~中級者向けに作ったテンプレート付属資料が、初心者の方には、多少解りにくい箇所があったことの反省に基づいています。

1回目は、RL78/G10とCC-RLコンパイラのC言語ソフト開発で、CS+ for CC設定とユーザ処理を何も追加していない時のソースコード、QB-R5F10Y16-TBボード動作を示します。

テンプレートご購入者様は、ブログを参照済みですから、この初心者内容をご理解頂いた上で、付属資料をご覧になれば、解りにくさが解消されると思います。最終回後には、RL78/G10が加わったRL78/G1xテンプレートを発売しますので、ご検討いただければ幸いです。

中級以上の方々にとってもお役立てばうれしいのですが、蛇足になる可能性が大です…_| ̄|〇。

RL78/G10特徴

RL78/G10は、ルネサススタープロダクトで入手性も良く、低価格高性能な汎用マイコンです。小ROM/RAMで10/16ピン構成、ADCやUARTなど内蔵回路も少ないので把握し易いでしょう。評価ボードも安く、RL78マイコンに興味がある方やIoTセンサマイコンなどに適しています。

開発環境CS+ for CC設定

RL78/G10をCS+のCC-RLコンパイラを使い、QB-R5F10Y16-TBボードとE1使用時のCS+設定を示します。
この組合せが、最も標準的な開発環境です。

RL78/G10開発環境
RL78/G10開発環境
  1. CS+ for CCのスタート(S)を押して、新規R5F10Y(10pin)プロジェクトを作成し、デバッグツールからE1を選択します。最初に、E1のプロパティを矢印に設定します。

    RL78/G10プロジェクト作成とデバッグ・ツール設定
    RL78/G10プロジェクト作成とデバッグ・ツール設定
  2. CC-RL(ビルド・ツール)のプロパティを矢印に設定します。CC-RL V1.01.00時です。改版で変わる可能性もあります。

    RL78/G10ビルド・ツール設定
    RL78/G10ビルド・ツール設定
  3. コード生成の周辺機能>共通/クロックを選択し、端子割当て、クロック設定、オンチップ・デバッグ、リセット要因設定を矢印に設定します。RL78/G10の標準的な設定です。

    RL78/G10共通/クロック設定
    RL78/G10共通/クロック設定
  4. ウオッチドックタイマとセレクタブル・パワーオン・リセットを矢印に設定します。E1でデバッグする時の設定です。

    RL78/G10ウオッチドックとセレクタブル・リセット設定
    RL78/G10ウオッチドックとセレクタブル・リセット設定
  5. 使用QB-R5F10Y16-TBボードに合わせてポート機能を矢印に設定します。

    RL78/G10ポート設定
    RL78/G10ポート設定

ここまでの設定後、「コード生成する」をクリック → ビルド:F7 → ボードダウンロード:F6 → Run:F5してください。
何も処理を追加していませんので、QB-R5F10Y16-TBはPOWER LED(赤)のみが点灯し、ソースコードの無限ループが実行され続けます。

RL78/G10の無限ループ処理
RL78/G10の無限ループ処理

マイコンソフト開発とは、この無限ループに必要な処理を追記することです。ユーザ処理を何も追加していない開発環境を動かすだけで多くの設定が必要なことが判ります。

マイコンテンプレートの利点

マイコンソフト開発には、2つの要素が必要です。1つが、ソフトそのものの開発能力。もう1つが、開発環境IDE:Integrated Development Environmentの設定能力です(RL78/G10の場合は、上記CS+ for CC)。

ソフト開発能力は、アプリ構成や処理手順などを開発するもので、マイコン機種の依存性はありません。一方、開発環境は、マイコン機種やコンパイラ、デバッグツールなどにより様々に異なります。

初心者やマイコン機種変更時に手間取るのは、むしろこの開発環境設定の方です。ソフト開発に早く着手したい時に設定に手間取ると、せっかくのアイデアやひらめきも、スタートでつまずいてしまいます。

環境設定は、デフォルト設定で動くか、またはダイアログなどを使って簡単に設定、できれば自動的に整うのが理想です。しかし現状のIDEは、多くのプロパティ=パラメタで全ての設定に対応する方式のため、簡易ダイアログは使えず、結果、パラメタ設定を1つでも間違うと不具合が生じます。

マイコン理解が深まると、環境設定も自然にできるようになります。これは、卵と鶏の関係と同じです。どちらも必要ですが、理解に手間取って開発が遅れるよりは、早く成果物ソフトを得たいと思うのは当然です。
CS+ for CC設定の多くは決まり文句ですが、マニュアルをリードして初心者がこれを一発で設定できるかは疑問です。多くの場合は、つまずいてしまうでしょう。

サンプルソフトを使うと、最初のつまずきが多少解消されますが、複数の処理を組合せる実務ソフトには、サンプルソフトはそのままでは使えません。これが、第2のつまずきの原因です。

マイコンテンプレートは、これらの対策に、開発環境設定のパラメタが済みで、複数処理が並列実行できる実務ソフトの骨組を提供します。この骨組に、サンプルソフト流用や自作ソフトを肉付けすれば、成果物が出来上がります。テンプレートには、複数の肉付けを簡単に追加できる工夫が初めから備わっています。従って、つまずくことなく、ソフトそのものの開発に労力を割くことができる、これがテンプレートの利点です。

* * *

誤解を恐れずに言うと、「ソフト開発に必要な理解項目 開発環境のパラメタ設定に必要な理解項目」、です。ソフト開発をしていけば、自然に理解項目が増えていきますが、最初は少ないでしょう。
ボードも含めた開発環境があるのなら、ボードを使ってデバッグしながら徐々に理解項目を増やせば良いのです。ところが、開発環境を初めて動かすのに結構な理解項目が必要なこと、これが、マイコン開発の敷居を高くしている原因です。

ソフトの開発能力と、開発環境の設定能力は、(多少は関係しますが)別です。開発環境は、慣れの問題です。EclipseベースIDEは、この問題を解決する1方法です。弊社マイコンテンプレートは、RL78/G1x以外にも3種のマイコン対応テンプレートを提供中です。ご検討ください。

RL78/G10でCC-RL使用時のTips

RL78-S1コアのRL78/G10をRL78/G1xテンプレートに追加すべく開発中です。CC-RLとRL78/G10開発時にのみ発生する問題の対処方法を示します。

デバッグ・モニタ領域設定

RL78/G10開発時のデバッグ・モニタ領域設定
RL78/G10開発時のデバッグ・モニタ領域設定

CC-RLコンパイラを使ったRL78/G10開発時のみ、デバッグ・モニタ領域設定をハイにする必要があります。これをデフォルトのイイエとすると、ダウンロード時、下記エラーが発生します。

エラー(E0204001) : ダウンロードに失敗しました。
オンチップ・デバッグで使用する予約領域への書き込みはできません。

CA78K0Rの場合や、RL78/G13やRL78/G14でCC-RLを使う場合は、デフォルトのイイエのままでビルド&デバッグ・ツールへダウンロード(B) F6が可能です。

RL78-S3コアにアナログ機能強化RL78/G1F追加

モータ制御をFeatureとするRL78-S3コアに、RL78/G14上位互換でアナログ機能を強化したRL78/G1Fが追加されました。

RL78/G1Gとの差

DCブラシレスモータ制御に最適なマイコンとして先に登場したS3コアRL78/G1Gとの周辺回路差が、赤囲みで示されています。

RL78/G1FとG1Gの機能差(G1F資料より抜粋)
RL78/G1FとG1Gの機能差(G1F資料より抜粋)

強化アナログ機能

RL78/G1F強化アナログ機能(G1F資料より抜粋)
RL78/G1F強化アナログ機能(G1F資料より抜粋)

増幅率をソフト制御できる3.0V/μs以上の高スルーレートPGA: Programmable Gain Amplifierや、RL78/G14ではROM96kB以上でしか搭載されなかった8ビットD/Aコンバータに加え、0.07us高速コンパレータも内蔵しています。

RL78/G1Fパッケージ
RL78/G1Fパッケージ

パッケージは、64ピン以下で64/32kBのROMです。前回掲載のスタープロダクトG14は、比較的大きなROMのものでしたが、このサイズならCS+無償版で開発可能です。従って、RL78/G1xテンプレートも使えます。

モータ制御マイコン選択チャート

RL78/G1Fが登場した結果、ルネサスのモータ制御マイコン選択チャートは下図になりました。G1Gとの価格差が気になります。

モータ制御マイコン選択チャート(G1F資料より抜粋)
モータ制御マイコン選択チャート(G1F資料より抜粋)

RL78/G14とピンコンパチなので、G1Fの入手性が良ければ、汎用G14スタープロダクトR5F104BCAFPの代わり、またはQB-R5F104LEーTBに載せ替えて使いたいです。IoT向けの少ピンマイコンとしても有用と思うからです。

RL78/G1x名称

G1Fが加わり、ルネサスRL78汎用G1xマイコンも10/12/13/14/1A/1C/1D/1E/1F/1Gとラインアップが増えています。名称とFeatureが一致しないのが悩ましいところです。汎用ベースで少しASSP的な色付けありと考えれば良いのでしょうか?
今後G2x、G3xと開発されるでしょうから、ますます判りにくくなりそうです。

RL78マイコンテンプレートの今後

CC-RLコンパイラを使ったRL78マイコンサンプルソフトの公開が始まりました。そこで、RL78マイコンの現状を俯瞰し、今後のRL78テンプレートの方向性を検討します。

スタープロダクト

2015年5月のルネサススタープロダクトからRL78マイコンのみを取出し、CPUコア分類を追加したのが下表です。

Group P/N Package ROM RAM Flash Feature CPUコア
RL78/G10 R5F10Y16ASP 10-LSSOP 225mil 0.65p 2KB 256B Low-Pin Count S1
RL78/G12 R5F1026AASP 20-LSSOP 225mil 0.65p 16KB 2KB 1.5KB Low-Pin Count S2
R5F1027AANA 24-HWQFN 4mm 0.50p 16KB 2KB 1.5KB Low-pin Count
RL78/G13 R5F100ACASP 30-LSSOP 300mil 0.65p 32KB 4KB 2KB General
R5F100GEAFB 48-LFQFP 7mm 0.50p 64KB 4KB 4KB General
R5F100LEAFB 64-LFQFP 10mm 0.50p 64KB 4KB 4KB General
R5F100LGAFB 64-LFQFP 10mm 0.50p 128KB 8KB 12KB General
R5F100MJAFB 80-LFQFP 12mm 0.50p 256KB 8KB 20KB General
R5F100PJAFB 100-LFQFP 14mm 0.50p 256KB 8KB 20KB General
RL78/G14 R5F104BCAFP 32-LFQFP 7mm 0.80p 32KB 4KB 4KB Motor Control S3
R5F104FFAFP 44-LFQFP 10mm 0.80p 96KB 8KB 12KB Motor Control
R5F104LGAFA 64-LFQFP 12mm 0.65p 128KB 8KB 16KB Motor Control
R5F104PJAFB 100-LQFP 14mm 0.50p 256KB 8KB 24KB Motor Control
RL78/L13 R5F10WLGAFB 64-LFQFP 10mm 0.50p 128KB 4KB 8KB LCD S2
R5F10WMGAFB 80-LFQFP 12mm 0.50p 128KB 4KB 8KB LCD

RL78マイコンロードマップ

RL78マイコンロードマップに、スタープロダクトGroupと、S1コア、S3コアを追記しました。これら以外は、全てS2コアです。CPUコア差は、表1-1です。

RL78マイコンロードマップとCPUコア差
RL78マイコンロードマップとCPUコア差

これらから、RL78マイコン状況を俯瞰した結果が下記です。

  • スタープロダクト:☆は、汎用G1xに集中。小ピン小ROMのG10は、発売後すぐにスター化。
  • RL78マイコンは、殆どS2コア。S1コアは、G10のみ。S3コアは、G14とG1Gの2Groupのみだが、G14がスター化。
  • 業績回復の2015年は、ASSPマイコンを発売。アプリ機能内蔵がスター化のポイントか?

RL78/G1xテンプレートのカバー範囲拡大

現状RL78/G1xテンプレートは、汎用S2/S3コアをカバーしています。が、S1が外れています。

いまさら8ビット?と思うかもしれませんが、CC-RLコンパイラでS1コアも性能向上します。さらにS1コアのRL78/G10は、低価格で入手性も良い(秋月電子で☆R5F10Y16ASPが60円、R5F10Y47ASPが100円)ので、IoTマイコンセンサにも向いています。

このRL78/G10のような小ピンマイコンは、ROM/RAM容量も小さいので、今後RL78/G1xテンプレートにもこれら対応に工夫を加え、カバーしたいと考えています。

IoTマイコンLPC824の5動作モード

IoT向き省電力マイコンNXP LPC824の動作モードを、消費電力の高い順に表にしました。

LPC824 Operation Mode List

LPC824 Operation Mode List
LPC824 Operation Mode List

出典は、ユーザマニュアル6章 電力管理のTable 59と64です。このTableは、詳細ですが解りにくいので、モード一覧表を作成しました。この表で概要を掴んだ後なら、Table59/64の理解が進むと思います。

※Runへの復帰時間は、ユーザマニュアル2014/09/18とデータシート2014/10/01、Cortex-M0+ Technical Reference Manualを参照しましたが不明でした。但し、不明でも問題はないと思います(後述)。

LPC824動作モード解説

LPC824動作モードは、Runを含めて5モードあります。

基本3モード:Run/Sleep/Power-down

「Run」と、MCUを停止し全周辺回路の動作/停止が設定可能な「Sleep」、全動作停止の「Power-down」、これら3モードは、LPC824に限らず全マイコンに共通の動作モードです。

低消費電力でマイコンを動作させる場合は、最も消費電力が大きいMCUを止め、必要な周辺回路のみを動作させるSleepを使います。そして、動作中周辺回路からの割込みによりSleepからRunへ復帰します。IRCは、動作させたままですので、SleepからRunへの復帰は非常に短時間で、通常は、問題にする必要はありません

省電力2モード:Deep-sleep/Deep power-down

ソフトで動作/停止を設定できるUSART、SPI、I2Cの通信系とWWDT:ウオッチドックタイマ、WKT:ウエイクアップタイマ、BOD:ブラウンアウトディテクト以外の周辺回路を停止するのがLPC824の「Deep-sleep」です。

Deep-sleepとPower-downの差は、IRCを止めるか否かです。このため、Deep-sleepの方が、Power-downよりも早くRunへ復帰できます。この復帰時間も今ところ不明ですが、Sleepと同様ですので、問題なしと思います。

これに対し、Power-downは、IRCも停止するのでRunへの復帰には、時間がかかります。

動作/停止を設定できるWKT以外は全てを停止するのが「Deep power-down」です。このDeep power-downが、消費電力最低のモードです。

Power-downとDeep power-downともに、バッテリ寿命が尽きて供給電圧が低下した場合などに使用するモードだと推測しました。

この状態からの復帰には、MCUリセットが必ずある通常起動手順か、または、この両モードで動作中ならば、割込みでRunへ復帰する2通りの方法があります。
割込み復帰の場合は、メモリに動作時のデータが残っており、これが活用できる可能性があります。MCUリセットでRunへ復帰する場合は、メモリも初期化されるので、ここが違います。

もちろん、バッテリを充電するなどの正常動作ができる環境を整えた後に、上記復帰手順の実施が必要です。結局、Power-downやDeep power-downは、メモリ初期化をスルーするために使うと考えて良いと思います。このため、復帰時間は、問題になりません。

* * *

LPC824の5動作モードを解説しました。LPC824は、クロックソースが、IRCか外部発振器/クロックのため、比較的シンプルです。また、復帰時間の絶対値は気になりますが、問題にする必要は無さそうです。マニュアル記載がないのは、このためと推測します。

LPC824のDeep-sleepは、新しい動作モードというよりも、USARTなどの特定周辺回路のみを動作/停止設定可能としたSleepの派生モードです。使い方も通常のSleepと同じです。または、復帰時間を気にする必要のないPower-downの派生モードと考えても良いでしょう。従って、省電力動作の理解やプログラミングには解りやすいマイコンと言えます。

LPC824と同じARM Cortex-M0+コアを持つFreescale Kinetis Lシリーズは、11モードもあります。ルネサス RL78/I1Dも5モードですが、クロックソースが高速/低速の系統があり、復帰時間への配慮が必要です。これらマイコンの動作モードについては、別機会に解説する予定です。

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

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年は、エレクトロニクスのイノベーションの歴史で最もエキサイティングな時代になるだろう。」だそうです。弊社マイコンテンプレートが、このエキサイティングな時代に活躍する技術者/開発者の方へ、少しでもお役立てれば幸いです。