CC-RL対応コンパイラコースの新テキストリリース

ルネサス主催マイコンセミナーのRL78コンパイラコースで使うCC-RLコンパイラ対応テキストがリリースされました。

CA78K0Rコンパイラのテキスト要約と同様、新テキストについても要約版を作成する予定です。セミナーに参加できると一番ですが、大阪か東京の2日間セミナーなので、弊社の場合、費用が悩みです。

CC-RLに関しては、5月18日時点で多くのFAQも追加掲載されています。つまづいている方が多そうです。
CC-RL対応済みのRL78/G1xテンプレート活用も、これらつまづきからの1解決策として有効です。
テンプレートは、CS+で実際に動作するプロジェクトで提供します。FAQの回答より具体的につまづきを解決できます

CC-RLコンパイラ対応RL78/G1xテンプレートv4.0

RL78/G1xの習得、アプリ早期開発に使えるRL78/G1xテンプレートv3.1を、CC-RLコンパイラとCR78K0Rコンパイラの両方に対応したRL78/G1xテンプレートv4.0(税込1000円)に更新しました。

コンパイラ別テンプレート提供

RL78/G1xテンプレートv4.0は、新しいCC-RLコンパイラと従来のCA78K0Rコンパイラ、それぞれにテンプレートを提供します。テンプレート全体像を説明資料P3に示します(マイコンテンプレートサイトより説明資料P1~P3ダウンロード可能)。

RL78/G1xテンプレート説明資料P3より抜粋
RL78/G1xテンプレート説明資料P3より

テンプレートを使ったアプリ例として、推薦開発ボード:BlueBoard-RL78/G13_64で動作確認済みのメニュードリブンテンプレート、4種CPUボード:RL78/G13-Stick、RL78/G14-Stick、QB-R5F100LE-TB、QB-R5F104LE-TBで動作確認済みのシンプルテンプレートを添付しております。RL78/G1x習得やアプリ開発が、ゼロから始めるよりも早くスムースに、しかもボードで実際に動作を確認しながら可能です。

テンプレート応用例 動作確認ボード 動作概要
メニュードリブン BlueBoard-RL78/G13_64 LED, SW, ADC, LCD, データフラッシュ, UART処理等
シンプル RL78/G13-Stick LED D2を1秒毎に点滅
RL78/G14-Stick SW1押下げでLED D2トグル点滅、または
1秒毎に点滅
QB-R5F100LE-TB LED1を1秒毎に点滅、SW1押下げでLED2トグル点滅
QB-R5F104LE-TB

テンプレートですので、ボードのIO割付けを変更すれば、お好きなボードへの移植も簡単です。また、両コンパイラ版ともにボード動作は同じです。
※ルネサス提供のデータフラッシュライブラリは、各コンパイラ専用ですので注意してください。

コンパイラCA78K0RからCC-RLへの移行リスク評価

新CコンパイラCC-RLは、CA78K0Rに比べ、「3倍の処理性能、割込み応答時間1/6、コードサイズ1割減」など、良い事ばかりです。今後のRL78開発にCA78K0Rを使い続けるメリットは少なそうです。

但し、これら数値は、最高値です。処理によっては、高速化の程度やコードサイズ削減効果はまちまちです。既に開発済みのアプリケーションの一部、または全部をテンプレートへ組込むことで、コンパイラ差が実際どの程度かが判ります。コンパイラ移行のリクス評価にも本テンプレートが使えます。

CA78K0RコンパイラからCC-RLコンパイラへのプロジェクト移行方法については、コチラの記事を参照ください。

マイコンテンプレートサイトに詳細記載

RL78/G1xテンプレート詳細情報は、マイコンテンプレートサイトにまとめております。もくじ説明資料P1~P3は、無料でダウンロードできますので、是非ご検討ください。このサイトには、RL78/G1xテンプレート以外にも、3種類のマイコンテンプレートを掲載中です。

ご購入方法

RL78/G1xテンプレートv4.0ご希望の方は、メール(info@happytech.jp)にてお知らせください。銀行振込口座を返信いたしますので、この口座へ代金1000円(税込)を振込んでください。
ご入金確認後、RL78/G1xテンプレートv4.0一式(CC-RL版テンプレート+CA78K0R版テンプレート+説明資料全ページ)ZIP圧縮、合計約4MBをメールにてお送りします。

保証期間の対応

旧RL78/G1xテンプレートご購入後、1年以内の無償バージョンアップ期間内の方は、弊社よりRL78/G1xテンプレートv4.0を、1週間以内に送付致しますのでお待ちください。

1年以上経過された方は、customerservice@happytech.jpへメールを頂ければ、50%OFFの500円(税込)で提供致します。よろしくお願い致します。

CC-RL移行支援機能オプションのRAM/ROMサイズ検証

RL78開発に使っていたCA89K0Rコンパイラから、新登場のCC-RLコンパイラへの移行に関して、コンパイラ表記混在が可能で、多くの既存ルネサスサンプルソフトや、将来のCC-RLサンプルソフトも使える「CS+移行支援機能を使った方法2が適している」ことを前回示しました

方法2では、移行のために多くのオプションを設定しました。これらを設定しないCC-RLネイティブオプションとRAM/ROMサイズを比較し、移行オプションの設定が、サイズや処理速度に影響を与えないことを検証しました。

CC-RLネイティブオプションプロジェクト

最も基本的なオプションのみを設定したネイティブオプションのプロジェクトとして、CS+ for CC付属のサンプル・プロジェクトRL78_G13_Tutorial_Basic_Operation_CCを使います。

RL78_G13_Tutorial_Basic_Operation_CCプロジェクト作成
RL78_G13_Tutorial_Basic_Operation_CCプロジェクト作成

これは、CPUボードQB-R5F100LE-TBで動作可能なプロジェクトです。GOボタンを押すと、指定フォルダにRL78_G13_Tutorial_Basic_Operation_CC プロジェクトが作成されます。ネイティブのままでは、RAM/ROMサイズ出力がありませんので、合計セクション・サイズ表示のみを追加設定します。

ネイティブオプションへの追加設定
ネイティブオプションへの追加設定

リビルト・プロジェクト実行で、ネイティブオプションでのRAM/ROMサイズが出力されます。

RAMDATA SECTION:  00000002 Byte(s)

ROMDATA SECTION:  00000298 Byte(s)

PROGRAM SECTION:  000001b4 Byte(s)

移行支援機能オプションのプロジェクト

ネイティブオプションプロジェクト作成時と別フォルダを指定しGOボタンを押し、もう1つ別のRL78_G13_Tutorial_Basic_Operation_CC プロジェクトを作成後、下記移行支援機能オプションと、前回プログ設定のオプションを追加設定します。

  • コンパイラの移行支援機能:-convert_ccオプション
  • アセンブラの移行支援機能:-convert_asmオプション
  • セクションの自動配置:いいえ
  • メモリモデル:スモール・モデル
  • 合計セクション・サイズ表示:はい

コンパイラ表記の混在可能を試すため、CC-RL表記をCA78K0R表記へ変更します。

コンパイラ表記混在テストソース
コンパイラ表記混在テストソース

リビルト・プロジェクト実行で、移行オプションでのRAM/ROMサイズが出力されます。

RAMDATA SECTION:  00000002 Byte(s)

ROMDATA SECTION:  00000298 Byte(s)

PROGRAM SECTION:  00000 1af Byte(s)

PROGRAM SECSIONに5バイト差分、減少が生じますが、これは、セクション自動割付けを行わなかったためです。
コンパイラ表記が混在してもビルドできますし、移行オプションを追加設定しても、RAM/ROMデータサイズは変わりません。ネイティブ1b4=436バイトに対して、5バイト程度の増減であれば、処理速度への影響もないことが確認できます。もちろん、CPUボードQB-R5F100LE-TBで正常動作します。

CA78K0RからCC-RLへのプロジェクト移行

新CコンパイラCC-RLは、処理スピード重視でRXやRHマイコンなどのコンパイラノウハウを応用した結果、従来のCA78K0Rコンパイラに比べ、

  • 処理性能…………..3倍高速化
  • 割込み応答性能…..6倍高速化
  • コードサイズ……..1割削減 → 低消費電力化

を実現しています。従って、今後RL78開発にCA78K0Rを使い続けるメリットは少なさそうです。弊社RL78/G1xテンプレートもCA78K0RプロジェクトからCC-RLを使ったプロジェクトへ移行を行います。

ルネサス提供資料

CA78K0RからCC-RLへの移行方法については、ルネサスから4月20日時点で4移行資料が示されています(リンクページ一番下の4資料)。資料内容は、詳細ですが解りにくいので、弊社RL78/G1xテンプレートを例に、その移行手順やTipsなどを記載します。

移行方法の比較結果

移行方法は、2つあります。
1つが、新規にCS+でプロジェクトを作成し、これに、旧CA78K0Rで作成したソースを手動で移植する方法1。もう1つが、CS+の移行支援機能を使う方法2です。両者比較結果を示します。

CA78K0RからCC-RLへの移行方法比較
CA78K0RからCC-RLへの移行方法比較

方法2が、コンパイラ表記混在でもビルト成功し、多くのルネサス既存サンプルソフトと、将来のCC-RLコンパイラサンプルソフトを活用、流用できることから優れています

移行方法具体例

2つの方法をRL78/G1xテンプレートへ適用した例とTipsを示します。

方法1:CA78K0R環境の手動移行

方法1で、CA78K0Rで作成したRL78/G1xテンプレート移行を行った例です。そのデメリットが明らかになります。

手順1:CC-RL環境のファイル構成

5月1日時点の、ルネサスFAQを「RL78 CC-RL」で検索しました。よくある質問に対して回答が示されるので、参考にします。
この中で、メモリ・モデルをスモール・モデルにすると、生成コードサイズが小さくなることが示されています。RL78/G1xテンプレートは、無償評価版CS+で動作するので、ROM≦64KBのスモール・モデルで適合します。そこで、新規プロジェクト作成後、CC-RLのコンパイル・オプションでスモール・モデルを選択します。

CC-RLコンパイラ・オプション設定
CC-RLコンパイラ・オプション設定

その他は全てデフォルトとし、コード生成(設計ツール)>クロック発生回路>端子割当て設定も、デフォルトのまま確定ボタンを押します。
これで、コード生成ツールが使えますので、コード生成(G)ボタンを押すと、プロジェクト・ツリーに緑囲いファイルが生成されます。これが、新コンパイラCC-RLネイティブの出力ファイルとファイル構成です。

この状態で、ビルドをすると、当然ですがエラーなしでビルド成功します。ここへ、CA78K0Rで作成したファイルを手動で移植し、エラーフリーの状態までもっていけばプロジェクト移行完了です。

手順2:コード生成設定

コード生成は、周辺回路をGUIで設定し、ソースコードと端子配置へその結果を出力します。しかし、逆のソースコードから周辺回路の設定を出力するツールはありません。仮に、このリバースツールがあれば、プロジェクト移行が簡単になるだけに残念です。

しかたありませんので、CS+ for CA,CXとCS+ for CCの両方を起動し、CS+ for CA, CXのRL78/G1xテンプレートのコード生成のパラメタを、CS+ for CC側へ手動で移設します。
方法2の移行支援機能を使うと、コード生成パラメタが新しいプロジェクトへそのまま移植されます。方法2のメリットです。

シンプルテンプレートのコード生成パラメタをCS+ for CCへ手動で移設し、コード生成(G)実行結果が下図です。CPUボードは、RL78/G14 Promotion Board(RL78G14-Stickとも言う)を使いました。

CC-RLコンパイラのコード生成結果
CC-RLコンパイラのコード生成結果

チャタリング対応済みのSW入力とLED出力を実装し、テンプレート動作理解と、ユーザ処理追加時のスタートプロジェクト提供を目的としたシンプルテンプレートは、WDTを停止させています。

※この他に、3種のCPUボード、RL78G13-Stick=RL78/G13 Promotion Board、QB-R5F100LE-TB、QB-R5F104LE-TBでRL78/G1xシンプルテンプレートは動作確認済みです。また、メニュードリブンテンプレートは、弊社推薦評価ボードBB-RL78G13_64で動作確認済みです。テンプレートですので、他ボードでもポート定義などの変更のみで動作します。

手順3:ソースファイル登録

シンプルテンプレートで必要となるソースファイルは、SW入力処理、LED出力処理、ユーザ追加マクロ、テンプレート本体main.cの4つです。「ユーザ追加」カテゴリを作成し、これらCA78K0Rのソースファイルをコピーした後、登録した結果が下図です。

CC-RLコンパイラのソースファイル登録
CC-RLコンパイラのソースファイル登録

手順4:ソース修正

ビルド時、シンプルテンプレートでソース修正が必要となった内容とその箇所(一部抜粋)を示します。

内容 修正前(上:CA78K0R表記)と修正後(下:CC-RL表記)の実例(一部抜粋)
割込み関数宣言 #pragma interrupt INTTM02 r_tau0_channel2_interrupt RB3
#pragma interrupt r_tau0_channel2_interrupt(vect=INTTM02, bank=RB3)
sreg使用宣言 sreg ubyte_t              SwRedReg;
__saddr ubyte_t         SwRedReg;
ポート定義 #define SW_SW1        P7.6
#define SW_SW1        P7_bit.no6

これら修正後、コンパイルエラー無しになりましたので、プロジェクト移設完了です。

手順5:セクション配置設定

CC-RLコンパイラのセクション自動配置を「いいえ」にする必要があります。

CC-RLコンパイラのセクション設定
CC-RLコンパイラのセクション設定

手順6:RL78/G14 Promotion Board動作テスト

CC-RLでコンパイルしたソースを、RL78 EZ Emulatorへダウンロードする際に、下記エラーが発生します。

  • オンチップ・デバッグで使用する予約領域への書き込みはできません。

対策に、EZ Emulatorプロパティの上書きチェックを「いいえ」にします。

デバッグ・ツール予約領域の設定
デバッグ・ツール予約領域の設定

これでRL78/G14 Promotion Boardにダウンロードでき、シンプルテンプレートの正常動作を確認しました。

以上が、方法1:新規プロジェクトを作成し、手動にてCA78K0R環境を移植した例です。

方法2:移行支援機能を使った移植

CS+の移行支援機能を使うと、手順2のコード生成設定と手順4のソース修正を省けます。また手順3のソースファイル登録もmain.cを除いて自動化できます。自動生成のmain.cは、内容なしのスケルトンファイルですので、CA78K0R側からmain.cを手動コピーして上書きが必要です。
方法2では、CC-RLを使っていても、ソースコードはCC-RL表記とCA78K0R表記の両方が使えます。

但し、今後CC-RLを使う時には、移行支援機能が設定したオプションを、毎回必ず設定する必要が生じます。この目的のため「現在のビルト・オプションをプロジェクトの標準に設定する(S)」があります。

ビルト・オプションのプロジェクト標準設定
ビルト・オプションのプロジェクト標準設定

ルネサス提供のRL/G1xサンプルコードも、今は全てCA78K0R表記です。今後追加されるサンプルコードがCC-RL表記になるとサンプル流用時に、コンパイラ表記の混在問題が生じます。この問題を回避するためにも、このビルド・オプションの設定は必要でしょう。

CA78K0RからCC-RL移行方法のまとめ

CA78K0Rコンパイラ環境から、CC-RLコンパイラ環境へ移行するには、CS+移行支援機能を使う方法2が良いことを示しました。この方法2をまとめると、以下になります。

  1. CS+ for CCで、CA78K0R既存プロジェクトのファイルを流用(S)&構成ファイルをコピーして流用(O)でプロジェクト作成(作成時、メッセージ表示のコピー失敗ファイルは手動コピー必要)。
  2. ビルド・ツールプロパティ>コンパイル・オプション>メモリ・モデルを「スモール・モデル」へ設定
  3. ビルド・ツールプロパティ>リンク・オプション>セクション>セクション自動配置を「いいえ」へ設定
  4. 「現在のビルド・オプションをプロジェクトの標準に設定する(S)」を実行
  5. ファイル>すべてを保存(L)で一旦CS+終了し、CS+を再起動
  6. コード生成>コード生成(G)実行
  7. CA78K0R環境のmain.cをCC-RL環境のmain.cへ上書きコピー
  8. 既存ファイルを追加(F)でコピーしたmain.cをソースファイル登録
  9. 使用するデバッグ・ツール選択後、ダウンロード・ファイル設定>予約領域の上書きチェックに「いいえ」を設定
  10. ビルド&デバッグ・ツールへダウンロード(B)を実行し、デバッガと実ボードで正常動作を確認

※一旦CS+を終了するのは、無用なコード生成カテゴリの生成を防ぐ目的です。これをしないと、2つコード生成カテゴリが生じます。

CC-RL対応RL78/G1xテンプレートv4.0発売予定

販売中のRL78/G1xテンプレートv3.1は、CA78K0Rコンパイラ版です。方法2を使って新CC-RLコンパイラに対応したRL78/G1xテンプレートv4.0は、近日中に販売予定です。
テンプレートのご購入方法は、RL78G1xテンプレート購入方法を参照してください。

RL78新Cコンパイラ 「CC-RL」リリース

新CコンパイラCC-RLの特徴
新CコンパイラCC-RLの特徴

2015年4月16日、処理性能3倍、コードサイズ1割減が可能な、新コンパイラ「CC-RL」がリリースされました。今回は、この新コンパイラの速報を示します。

コンパイラ別にCS+も2本立てへ

注意が必要なのは、CS+もコンパイラ毎に変わる点です。
CS+ for CA,CXをお使いの方が、UpdateしてもCC-RLは取得できません。新しいCC-RL取得には、これまでRX、RH850開発用だったCS+ for CCを起動し、Updateすることが必要です。これにより、CC-RLがインストールされ、CS+ for CCでもRL78開発ができるようになります。

マイコン コンパイラ Windowsスタートメニュー
RL78 CA78K0R CS+ for CA, CX  (78K、RL78V850)
CC-RL CS+ for CC  (RL78RX、RH850)

結局CS+を最新版へ更新すると、WindowsスタートメニューのCS+両方にRL78が表示されます。

CC-RLの特徴

リリース資料は、特徴を3つ記載しており、また掲載図から「割込み応答時間1/6へ向上」が解ります。

  1. 処理性能が従来比3倍
  2. コードサイズが従来比1割削減、消費電力も削減
  3. MISRA-Cガイドラインチェック機能搭載(Professional版のみ)

従来比とは、CA78K0R作成のコードです。MISRA: Motor Industry Software Reliability Association Cチェックとは、主として車載用ソフトのC言語コーティングガイド確認機能です。

RL78/G1xテンプレートのCC-RL対応

普通は、良いことがあると、反面、悪いこともあるハズです。しかし、特徴からすると今後RL78開発に、従来CA78K0Rコンパイラを使うメリットは、無さそうです。また、スタンバイモードが長くなることから、弊社RL78/G1xテンプレート動作にも好適です。

開発環境が、CS+ for CA, CXからCS+ for CCへ変わるなど、面倒ですが、CC-RLへの移行ガイドなどの資料を取得し、弊社RL78/G1xテンプレートもCC-RLへ対応していく予定です。
移行スケジュールや詳細情報、コンパイラ移行のメリット/デメリットなどは、今後記載予定です。

ルネサスの作田会長退任

マイコン業界の動きが激しい今日この頃ですが、ルネサスに関して気になる記事がBusiness Journalにありましたので紹介します。

「顧客重視か、収益重視か」、マイコン半導体業界の苦しい内情が良く解る記事です。ルネサス業績を黒字回復へ導いて頂いた作田会長、お疲れ様でした。

アナログ機能内蔵マイコンの開発ポイント

ルネサス業績回復後の最初のマイコンが、RL78/I1Dでした。そして第2弾マイコンが、RL78/G1Gです。
2015/4/9発行のルネサスサポート情報 vol.240、「RL78ファミリ カタログ」最新版から、これら両マイコンの位置づけが良く解ります。

RL78ファミリカタログ

最新版2015.03と旧版を比較すると、「RL78/G1G」と「RL78/I1D」が、機種ページの最初に搭載されています。お薦めマイコンのSTAR ProductであるRL78/G13やG14よりも前のページです。ルネサスの力の入れ様が表れているのでしょう。

RL78/G1G

RL78/G1G(RL78ファミリカタログP8より抜粋)
RL78/G1G(RL78ファミリカタログP8より抜粋)

RL78/G1Gは、RL78/G14とソフト互換性を持ちます。従って、開発にG14のサンプルソフトが使えます。つまり、RL78/G1xテンプレートも使えると言うことです。

このRL78/G1Gのように、ADC以外のPGA:プログラマブル ゲイン アンプや、コンパレータなどのアナログ回路をマイコンに内蔵するのがIoT向け汎用マイコンのトレンドです。モータ制御向きアナログ機能内蔵機、これがRL78/G1Gです。

RL78/I1D

RL78/I1D(RL78ファミリカタログP9より抜粋)
RL78/I1D(RL78ファミリカタログP9より抜粋)

一方、センサ制御向きアナログ機能の内蔵機が、RL78/I1Dです。センサ信号増幅用のオペアンプやウィンドウモード対応のコンパレータを持ちます。

SNOOZEモード動作例のCPU起動要否判定を行うDOC:データ演算回路で、ADCデータのノイズ除去後に、SNOOZEからRunへ復帰させます。SNOOZEで全処理を実行する主役、それが「DOCとDTC」です。

RL78/I1DもS3コアなので、RL78/G1xテンプレートの対象機種です。残念ながら、評価ボード:RTE5117GC0TGB00000Rが、前回ブログ記事と同様、現在も入手できません。

アナログ機能内蔵マイコンの開発成功には?

RL78/G1GとRL78/I1D、ともにアナログ機能内蔵なので、実際に使用するアナログ機器と接続した実機テストは、デジタル単独の場合と比較して、より複雑で難易度も高くなります。High/Lowの2値のデジタル信号と異なり、アナログ信号だからです。

だからこそ、デジタル部分の制御ソフトウエアの開発は、より早くする必要があります。そして、アナログ実機信号に対応して調整する時間を多く取ることが成功のポイントです。この為に、弊社RL78/G1xテンプレートのご検討をお勧めします。テンプレートを使ったアプリケーション開発の手順は、こちらのページにまとめています。ご参照ください。

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

マイコンテンプレートを使ったアプリケーションの開発方法(後半)は、手順4:サンプルソフトのテンプレートへの組込みとデバッグ、複数サンプルが同時に動くしくみを解説します。

アプリケーション開発手順(再掲)

アプリケーション完成までの手順1~3の詳細は、(前半)に記述済みです。

  1. 対象動作の明確化
  2. サンプルソフト獲得
  3. サンプルソフトを初期設定とループ処理の2つに分けて解読し、部品化
  4. 部品のサンプルソフトをテンプレートへ組込み、デバッグ

サンプルソフトとテンプレートの構造

サンプルソフトを組込んだテンプレート構造
サンプルソフトを組込んだテンプレート構造

ルネサスのRL78/G13アプリケーションノート:R01AN0451JJ0301をサンプルソフトにした例で説明します。サンプルソフトは、初期設定とループ処理から成ります。hdwinit()が初期設定、main()がループ処理です。このアプリノートでは、無限ループ内でスイッチ入力:P0と、LED出力:P1を同時に行っています。詳細は、R01AN0451JJ0301を参照して下さい。

サンプルソフトのループ処理
サンプルソフトのループ処理

このサンプルをテンプレートへ組込んだテンプレート構造が右側です。テンプレートでは、スイッチ入力処理と、LED出力処理は、別々に起動します。このテンプレート構造から、これら以外の別サンプルN処理や、割込み起動のサンプルX/Y処理が追加可能なことが判ります。例えば、ブザ音の発生処理などをここへ追加すると、簡単に処理の追加ができます。
つまり、テンプレートは、「複数処理を起動する仕組みを、初めから持っている」のです。ここがサンプルソフトと最も異なる点です。
スイッチ入力とLED出力を分離したのは、スイッチの入力スキャンタイミングを、チャタリング対応で簡単に変更することが目的です(補足参照)。

テンプレートに付属している「シンプルテンプレート」が、このスイッチ入力とLED出力を組込んだテンプレートに相当します。また、更に、LCD表示やI2C入出力などの、組込みマイコンに必要となる処理をほぼ全て加え、完成形の形にしたのが、「メニュードリブンテンプレート」です。

マイコンテンプレートの仕組み

  • サンプル初期設定は、丸ごとそのままテンプレート初期設定へ流用 → 複数サンプルの初期設定は、挿入順にそのまま実行
  • 時分割で複数の無限ループ生成 → サンプルの起動関数追加により、複数処理を実行
  • サンプル割込み処理は、そのままテンプレート割込み処理へ流用 → 複数の割込み処理時は、割込み優先順位に注意
  • 関数の引数は、インタフェースRAM経由 → 関数入出力確認がRAMでできるので、単体/結合デバッグ、処理の部品化が容易

インタフェースRAMのメリットは明らかです。例を示します。上記テンプレートに、スイッチに応じてブザ音発生処理を追加するとします。

スイッチ入力処理で、スイッチ入力結果をRAMへ出力します。ブザ音発生処理は、このRAMを参照し、音を発生させます。RAMインタフェースを使えば、どちらの処理もRAMで動作が分離され、そのRAM値により処理が正しく動作しているかが解ります。RAM値は、デバッガで変更やモニタもできますので、処理単体デバッグが簡単です。仮に、片方の処理が未完成であっても、RAM設定/モニタで結合デバッグもできます。

ブザ音処理の追加前と後で、スイッチ入力処理には影響が無いことも判ります。つまり、処理の部品化も可能です。

割込み処理は、優先順位に注意が必要です。テンプレートは、時分割ループ生成のために、SysTickタイマと呼ばれるタイマを使います(その名が示すように、システムのチックタック動作タイマ)。SysTickタイマの割込み優先順位は高く、サンプルで割込み処理が使われても、このSysTickタイマよりは低い優先順位です。

注意が必要なのは、複数サンプルの割込み処理をテンプレートへ追加する場合です。割込みには、デフォルト優先順位があります。このデフォルト順位で処理できるか、変更が必要かの検討が必要です。
デフォルト順位でOKなら、そのままテンプレートへ流用します。変更する場合は、マイコンに依存しますので、データシートを参照して順位を変更してください。

RL78/G1xタイマの検討優先順位設定に関しては、過去のブログ記事を参照してください。

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

  • サンプルソフト初期化関数は、そのまま丸ごとテンプレート初期設定へ挿入
  • サンプルソフトのループ処理は、サンプル起動関数を適切なテンプレート時分割ループへ挿入
  • サンプルソフトの割込み処理は、割込み優先順位に注意し、テンプレートの割込み処理へ挿入
  • 関数間は、部品化のため、RAMインタフェースを使い、単体/結合デバッグを行う

テンプレートですから、部品化した関数の挿入でアプリが完成します。また、部品の再利用を容易にするため、部品単位でファイル化します。複数の割込み処理は、優先順位に注意し、必要なら設定を変更します。関数間は、RAMで切り離し、関数単位でのデバッグを容易にします。

テンプレートを使うと、開発者毎に異なるアプリ開発手法が統一でき、また、処理がファイル単位で部品化できますので、流用性や可読性も良くなります。

マイコンテンプレート販売中

前半、後半と長い説明になりましたが、マイコンテンプレートを使ったアプリケーション開発手順を示しました。シンプルテンプレート、メニュードリブンテンプレートが付属した、4種類のマイコンテンプレートを、各1000円(税込)で販売中です。

IoT向き省電力マイコンのLPC824は、2015/04Eに加わる予定です。

テンプレート名
(MCUコア)
対応マイコン
(ベンダ)
評価ボード:動作確認ハードウエア ブログタグ
RL78/G1xテンプレート v3.1
(RL78-S2/S3
RL78/G13
RL78/G14
(Runesas)
・BB-RL78G13-64(推薦ボード)
・G13スタータキット
・G14スタータキット
・QB-R5F100LE-TB
・QB-R5F104LE-TB
RL78/G13
RL78/G14
LPC8xxテンプレート v2.1
(Cortex-M0+
LPC812
LPC824
(NXP)
・LPCXpressoLPC812 + Baseboard
・LPCXpresso824-MAX + Baseboard
LPC812
LPC824
LPC111xテンプレート v1.1
(Cortex-M0
LPC1114
LPC1115
(NXP)
LPCXpressoLPC1114 + Baseboard LPC1114
Kinetis Eテンプレート v1.1
(Cortex-M0+
Kinetis E
(Freescale)
FRDM-KE02Z40M Kinetis E

 

テンプレートソースをご覧になれば、文書で示したものよりも、より直接的にテンプレートの処理内容がご理解いただけると思います。
また、テンプレート本体とサンプルソフト流用部分のソース間には、5行以上のスペースを入れ、視覚的にもテンプレートと流用部分の切れ目が判る工夫をしています。
サンプルソフト流用部分は、オリジナルの英語コメントですが、テンプレート本体は、日本語コメントで(冗長に?)説明を加えています

概要と仕様の説明資料は、マイコンテンプレートサイトから無料ダウンロードもできます。

テンプレートは、処理が何もない時は、Sleepする消費電力低減機能や、WDT:ウオッチドックタイマ処理、テンプレート本体の暴走監視機能など、アプリとして最低限必要な機能も実装済みです。

零から始めるアプリ開発に比べ、実務に直結した弊社マイコンテンプレートを活用して頂ければ、マイコンの習得と、可読性、流用性に優れたアプリケーションの早期開発ができます。是非、ご検討ください。

 

補足:スイッチ入力処理のチャタリング対応

サンプルソフト:R01AN0451JJ0301は、スイッチ入力処理にチャタリング対応がありません。マイコンの入力処理には、チャタリングに対するノイズ対策は必須です。ソフトウエア対策として、複数回スキャンし、入力が同値の時に、値を確定する方法が一般的です。弊社シンプル/メニュードリブンテンプレートは、この方法を採用しております。

この処理には、何回一致を判定するか、スキャンタイミングはどの程度か、の2パラメタがあり、使用スイッチに応じてこのパラメタを決める必要があります。弊社では、2回一致、10msタイミングで、タクトスイッチ入力処理を行っています。

テンプレートでご利用の実際のスイッチに応じて、これらパラメタ、特に回数のパラメタを変更すると効果が高いと思います。

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

マイコンのアプリケーション開発方法として、マイコンテンプレートを使った方法を前後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倍の余裕がマイコン設計には必要と思います。

ルネサスお薦めのRL78/G1xマイコン製品

RL78/G1xの売れ筋が一目で解るルネサスのサイトが公開されました。1年ごとの集計結果で、ルネサスのお薦めマイコンとして「STAR Product」マークが製品名とともに表示されます。

STAR Product mark
STAR Product mark

RL78/G1xテンプレートのマイコンはルネサスお薦め!

弊社RL78/G1xマイコンテンプレートのRL78/G13とRL78/G14、どちらもこのルネサスお薦めマイコンです。

GROUP P/N PACKAGE CODE FLASH DATA FLASH SRAM
RL78/G10 R5F10Y16ASP#V0 10-LSSOP 225mil 0.65p 2KB 256B
RL78/G12 R5F1026AASP#V0 20-LSSOP 225mil 0.65p 16KB 2KB 1.5KB
R5F1027AANA#U0 24-HWQFN 4mm□ 0.50p 16KB 2KB 1.5KB
RL78/G13 R5F100ACASP#V0 30-LSSOP 300mil 0.65p 32KB 4KB 2KB
R5F100GEAFB#V0 48-LFQFP 7mm□ 0.50p 64KB 4KB 4KB
R5F100LEAFB#V0 64-LFQFP 10mm□ 0.50p 64KB 4KB 4KB
R5F100LGAFB#V0 64-LFQFP 10mm□ 0.50p 128KB 8KB 12KB
R5F100MJAFB#V0 80-LFQFP 12mm□ 0.50p 256KB 8KB 20KB
R5F100PJAFB#V0 100-LFQFP 14mm□ 0.50p 256KB 8KB 20KB
RL78/G14 R5F104BCAFP#V0 32-LFQFP 7mm□ 0.80p 32KB 4KB 4KB
R5F104FFAFP#V0 44-LFQFP 10mm□ 0.80p 96KB 8KB 12KB
R5F104LGAFA#V0 64-LFQFP 12mm□ 0.65p 128KB 8KB 16KB
R5F104PJAFB#V0M 100-LQFP 14mm□ 0.50p 256KB 8KB 24KB
RL78/L13 R5F10WLGAFB#30 64-LFQFP 10mm□ 0.50p 128KB 4KB 8KB
R5F10WMGAFB#30 80-LFQFP 12mm□ 0.50p 128KB 4KB 8KB

 

特に、RL78/G13のコードフラッシュ32~64KB製品や、RL78/G14のコードフラッシュ32KB製品をご利用の方は、RL78/G1xテンプレートも合わせてご検討ください。
RL78/G1xテンプレートをお使い頂ければ、RL78/G1x習得容易で、アプリケーションの早期開発ができます。もちろん、容量が大きいコードフラッシュ製品でも適用可能です。