CC-RLコンパイラテキストから得るRL78開発指針

CC-RLコンパイラコーステキストの要約を作成するつもりでしたが、要約は自ずと得られるものですし、条件により要点箇所も異なります。効率的に知るには、索引ページからの逆引きもお勧めです。

そこで、CC-RLテキストとCA78K0Rテキストの差分から、主催者ルネサスがセミナーでCC-RLコンパイラのために補強した箇所を明らかにします。

RL78コンパイラセミナーテキスト差分

CC-RLコンパイラコーステキスト2015年5月19日 Rev.1.00と、これまで使われたCA78K0Rテキスト2014年6月24日 Rev.1.08の目次を比べたのが下表です。

RL78コンパイラコーステキスト比較
RL78コンパイラコーステキスト比較

RL78/G14 (256kB ROM、24kB RAM、8kB データフラッシュ)のトレーニングボードMT-RL78を使うCC-RLセミナーは、CA78K0Rと同じ1.5日間です。同じ期間で、テキスト内容が増えています(空欄は記述なし)。

新CC-RLが、CA78K0Rなどの既存記述(CPU)からの移植に関して多くの分量が割かれているのは当然として、ルネサスがCC-RL向けに変更した箇所が判ります。

CC-RLテキストで唯一削除された節が、リンク・ディレクティブです。CC-RLでは、このリンク・ディレクティブの代わりに、セクション関連の説明が増えており、セクション理解がより重要性を増したようです。

また、最適化も、最適化抑止やモジュール間最適化の節が追加されており、使いこなしのポイントと言えるでしょう。

RL78開発指針

RL78コンパイラコースがCC-RL対応へ代ったことは、RL78開発の今後を見極める上で重要な出来事です。

提供側のルネサス、使用側の開発者、双方ともに2つのコンパイラへリソースを割くより、1つの方が効率的なのは明らかです。過渡期の問題を除くと、CC-RLの方がCPUパフォーマンスを引き出せるのです。

Windows10リリースの今年は、ベース環境も変わります。サービスを得る側は、Win10やワード、エクセル、パワーポイント等のツールの使い方を詳しく知っているよりも、ワード、エクセル、パワーポントでどんな内容の資料が作れるかが大切です。マイコン開発も全く同じです。

開発ソフトのサービス内容を、素早く、手軽に、より深く検討するには、両コンパイラで動作確認済みのCS+プロジェクトで提供されるRL78/G1xテンプレートが役立ちます。

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円(税込)で提供致します。よろしくお願い致します。

Kinetis Design Studio V3.0.0リリース

FreescaleのKinetisマイコン無償開発環境KDSの新バージョンV3.0.0が2015年5月5日リリースされました。関連資料から、特徴を探ります。

ポーティングガイトが詳しくなった

以前は、Code Warriorからの移行ガイドのみでしたが、これに旧KDSからの移行も加わりました。つまり、KDS V3.0.0で旧版プロジェクトを変更すると、変更後は、旧版では、Openできないということです。KDS V2.0.0を継続して使われる方は、注意が必要です。

Processor Expert V3.0.0へ更新

旧PEで、TSS_LibraryがFRDM-KE02Z40評価ボードで正常動作しない不具合が解消されたかは、後日報告します。

Kinetis SDK v1.2.0でサポート評価ボードが増えた

KSDK v1.2.0サポートボード一覧
KSDK v1.2.0サポートボード一覧

残念ながら、Kinetisテンプレートで使用したKシリーズマイコンのFRDM-KE02Z40Mボードは、V3.0.0でもSDKサポートはありません。SDKメリットは、ボード動作確認済みのサンプルソフトが、Freescaleから提供されることです。
次期Kinetisテンプレート候補のLシリーズは、多くの低価格評価ボード(FRDM-KLxxx)がサポートされていますので、この中らか対象マイコンと評価ボードを選定する予定です。

以上、KDSV3.0.0リリースの速報でした。

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テンプレート購入方法を参照してください。

LPC824のSWM設定手順

SWM:スイッチ マトリクスは、LPC8xxに特徴的な機能です。
このSWMを上手く使うこと、これがLPC8xx使いこなしポイントです。パッケージの物理ピン数が少なくても、多くの周辺回路の入出力を割付けることができ、また、その自由度が高いことが普通のマイコンとの一番の違いです。

このSWM設定手順を、LPC824を例に、解説します。LPC812は、以前の記事を参照してください。

周辺回路とパッケージ物理ピンを割付けるSWM

デフォルトピン、固定ピン、可動ピン

パッケージ物理ピンにSWMで設定可能なピンは、デフォルトピン、固定ピン、可動ピンがあります。

固定ピン一覧:Fixed Pins List

SWM Fixed Pins List(swm_8xx.hより抜粋)
SWM Fixed Pins List(swm_8xx.hより抜粋)

RESETなどの専用ピンの物理ピン位置は、SWMでも変更できません。これら専用ピンは、「固定ピン」と呼ばれ「SWM_FIXED_機能」で示されます。例えば、SWM_FIXED_ADC1は、ADCチャネル1の固定ピンで、LPCXpresso824-MAX評価ボードならば、#23:PIO0_6ピンです。

#23ピンは、データシートでは“PIO0_6/ADC_1/VDDCMP”の名称がついています。PIO0_6は、GPIOを示します。全てのGPIOは、デフォルトで「入力方向の固定ピン」です。SWMでこれらGPIOの有効/無効が設定でき、デフォルトでは、「全て有効」になっています。

つまり、#23ピン:“PIO0_6/ADC_1/VDDCMP”に対してデフォルト時は、GPIO入力のPIO0_6として機能します。このピンをADC1として使うには、SWM_FIXED_ADC1固定ピンの有効化処理が必要です。

デフォルトピン一覧:LPC824M201JHI33

LPCXpresso824-MAX評価ボード実装パッケージ:LPC824M201JHI33の、デフォルトピン割付けが下記です。

LPC824M201JHI33パッケージデフォルトピン割付け
LPC824M201JHI33のデフォルトピン割付け(SWMツールより抜粋)

可動ピン一覧:Movable Pins List

SWM Movable Pins List(swm_8xx.hより抜粋)
SWM Movable Pins List(swm_8xx.hより抜粋)

USART、SPI、 SCT、I2Cなどの通信機能やアナログコンパレータ出力などは、パッケージの物理ピン割付けをSWMで設定します。これらは、「可動ピン」と呼ばれ、「SWM_機能」で示されます。これら可動ピンは、割付ける固定ピン機能が無効になっている場合にのみ、そこへ可動ピンを割り当てることができます。

可動ピン種類が多く、割当て可能なピン位置も多いので、パッケージの少ないピンを状況に応じて有効に活用できます。

LPC824使用ピン設定手順

以上から、LPC824のピン設定手順は下記になります。

LPC824ピン設定手順
LPC824ピン設定手順

LPCXpresso824-MAX評価ボード実例

評価ボード実装済みの3色LEDに対してGPIO出力へ設定した例です。Chip_XYZ()は、LPCOpenライブラリ提供のAPIです。

ボード実装済みLEDのGPIO出力設定
ボード実装済みLEDのGPIO出力設定(board.cより抜粋)

可動ピン:UART1のTXD_OとRDX_Iを、P0_7とP0_18へ設定した例です。UART1は、評価ボードUSB経由のVirtual COMとして機能します。

可動ピン:UART1機能の設定
可動ピン:UART1機能の設定(board.cより抜粋)

WebベースのSWMツール

パッケージピンと周辺回路の接続をGUIで設定し、これ対応のSWMソースコードを出力するWebツールがあります。前述のピン設定手順は、ピン毎に設定が必要ですが、一括でSWMを設定するソースが生成されます。

割付け済み機能のみが、GUIパッケージピンに表示されるので重宝します。ピンリストなども出力可能です。

※個人的には、このツールと逆方向、つまり、ソフト設定に応じたパッケージ割付けを自動出力する検証ツールがあればと思いますが…。

Web SWMツールのGUI設定とソース出力例
Web SWMツールのGUI設定とソース出力例

LPC8xxテンプレートの対応

SWM出力ソースは、一括設定のため可読性が低くなります。弊社LPC8xxテンプレートは、LED出力やSW入力などの機能毎にソース分けて作成し、必要に応じて組合せて使います。そこで、このツールは使わずに、LPCXpresso824-MAX実例と同様、それぞれのソースで「必要ピン設定のみを行う」方法を採用しています。

* * *

LPC824対応のLPC8xxテンプレートは、2015年4Eを目標に開発してまいりました。しかし、LPCOpenライブラリv2.15、2015/01/08のGPIOのAPIに不具合がありますので、テンプレート開発を「一時停止」し、ライブラリ不具合の改版後に再開いたします。
LPC824対応テンプレートのリリース時期などは、今後掲載予定です。

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にありましたので紹介します。

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

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モードですが、クロックソースが高速/低速の系統があり、復帰時間への配慮が必要です。これらマイコンの動作モードについては、別機会に解説する予定です。