CS+のCS78K0Rコンパイラ消える?

ルネサスツールニュース2016年4月1日号で、CcnvCA78K0Rが発表されました。

これは、RL78の統合開発環境CS+のCA78K0RコンパイラCソースを、CC-RLコンパイラCソースへ変換するツールです。58ページからなるユーザーズマニュアルも公開中です。

コンパイラ一本化への布石

統合開発環境:IDEのコンパイラが2本あるのは、使う側、提供する側双方にとってメリットはありません。

まして、CC-RLが性能では優れているので、CA78K0Rを使い続けるのは既に顧客へ提供済みのCソースを使うからでしょう。

本ツールは、そんなCソースをCC-RL Cソースへ変換します。CA78K0Rコンパイラは、半導体デバイスでは良くあるディスコン(discontinue)にして、CC-RLコンパイラへ一本化するための布石だと思います。

IDE

ルネサスは、統合開発環境IDEも独自開発のCS+と、ワールドワイドで一般的なEclipseベースのe2 studio、さらにRenesas Synergy™ 開発環境(ISDE)やHewなども提供中です。

要は、デバイス開発に使いやすいIDEが良いのですが、誰とどのように開発するか等の条件によりルネサスは、様々な解を提供しているのです。Synergyは別物としても、何種類も提供するのは大変でしょう。他ベンダがEclipseベースで一本化されているのとは、対照的です。

ベースとなるのがEclipseでも、各社IDEのAPI関数を生成するツールは全く異なります。ルネサスのAPI生成ツールが慣れもあって使いやすいので、この特徴を活かした発展を望んでいます。

マイコンIDEを早く効果的に習得するコツは、コチラのページにまとめています。

ブログカテゴリ修正

マイコンのサブカテゴリを、6種のマイコンとIoT向けPCに修正しました。

ARM Cortex-M0+またはM0コアのマイコン、FreescaleのKinetisマイコン、NXPのLPCマイコン、ルネサスのRL78マイコンとR8Cマイコンです。
IoT向けのPCは、Windows 10 IoTコアを実装できるCPUボードを対象としました。

KinetisとLPCマイコンは、Cortex-M0+/M0マイコンと重複しています。
これは、Cortex-M0+/M0を重視したためで、このカテゴリから、今後新しいマイコンが発売されることを想定しています。

この基になった記事がコチラです。「Cortex-Mプロセッサを軸にしたARMのIoT戦略」の項で、市場早期対応にARMコア利用が優れていること、小さな実装面積と少ない電力要求のIoT市場にはCortex-M系が良く、Bluetoothなどの無線IPをSoC実装した新マイコン発表の可能性を示しています。

正式版がリリースされた無償Windows 10 IoTコアは、Wi-FiとBluetoothサポートなので、この新マイコンとの相性も良さそうです。

ブログ記事検索は、キーワード短縮表記をお使いください

カテゴリ修正に合わせて、過去の記事のタグ追加と修正も試みましたが、記事数が多いので断念しました。従って、記事の検索にタグを使うと、検索漏れが生じます。

ブログ記事のタグ検索
ブログ記事のタグ検索

対策として、関連記事の検索は、「検索窓にキーワードの短縮表記」をお使いください。例えば、LPC812とLPC824の記事を検索するときは、“LPC8” を入力するなどです。タグ検索よりは遅いのですが、検索漏れは防げます。よろしくお願いいたします。

ブログ記事のキーワード検索
ブログ記事のキーワード検索

RL78常設セミナテキスト改版

2014年5月30日発行のルネサスサポート情報 vol.197で、ルネサス常設セミナテキストの改版がレポートされました。レポートでは、「新規公開」とありますが、ダウンロードして旧版と比較した結果を示します。

セミナテキスト改版内容

コース名 レポート記事 旧版との比較結果
R8Cマイコンコース テキスト新規公開 2012年3月21日 Rev. 2.20と同じ
RL78マイコンコース テキスト新規公開 2013年12月18日 Rev. 1.30へ改版
RL78コンパイラコース テキスト新規公開 2014年3月13日 Rev. 1.07へ改版
RL78リアルタイムOSコース テキスト新規公開 2014年3月31日 Rev. 1.02へ改版

※R8Cマイコンコーステキストは、改版内容が不明で、公開テキストは前版と同じでした。

テキストの変更履歴がないので、具体的にどこを変更して改版したのかは不明です。しかし、どのテキストも内容が濃く、一読に値します

テキストですので、重要項目を1~10まで記載しています。初心者には、読むだけで大変で、理解にかけられる労力が不足することも多いと思います。そんな時は、各テキストの最重要箇所のみを抽出したコレに先ずザット目を通してください。特に、コンパイラコースのその1~3を理解した後に、テキストに戻ると理解が捗ると思います。

テンプレート活用のマイコン開発

限られた時間で効率的にマイコンを習得するには、手軽に用意できる開発環境と、テンプレートを活用するのも一つの方法です。ワードやパワーポイントには多くのテンプレートが提供されますが、組込みマイコンのテンプレートは少ないようです(サンプルソフトは、あくまでサンプルでテンプレートとは、別物です)。

そんな時は、販売中のRL78/G1xテンプレートを活用下さい。業務に使えて、テキストの重要箇所エッセンスをプログラムへ盛り込んだテンプレートになっています。世界標準のARM 32ビットマイコンLPC8xxテンプレートも販売中です。

サンプルソフトの構造

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年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年以上のライフに比べると、短い気もしますが…。大手が独り勝ちする半導体の世界では、会社自体がいつ消えるかも判らない状況ですので、ルネサスエレが存続する限りは、安心して使えそうです。

マイコンセミナーテキストの概要

2013年4月2日発行のルネサスエレクトロニクスセミナーニュースVol.83によると、マイコンセミナーのテキストをPDFで公開しており、セミナー受講に関係なく閲覧ができます。そこで、RL78とR8Cのテキストをダウンロードしましたので、その概要を示します。

セミナーテキストは、1ページに“スライド+解説”の構成で、網羅的記述のユーザーズマニュアルよりは、理解しやすいものです(但し、下記に示すように結構ページ数がある)。また、ユーザーズマニュアルの重要項目のみを抜き出して解説しているので、この内容を理解していれば、RL78、R8Cマイコンを使用するには十分な内容と推測されます。機種は、RL78/G14に限定して解説していますが、G13にもほとんどそのまま適用できます。

テキスト名 概要
RL78マイコンコース2013/2/26 Rev.1.22

(全243ページ)

RL78/G14のユーザーズマニュアル・ハードウエア編のサブセット。

G14特有のイベント・リンク・コントローラ、データ・トランスファ・コントローラの記述あり。第6章の割込み制御は、理解しやすく良くできている。CubeSuite+のコード生成を利用する際に、割込み優先順位とバンク設定の考え方の参考になる。

RL78コンパイラコース2013/3/18 Rev.1.05

(全194ページ)

ユーザーズマニュアル・RL78、78K0Rコーティング編のサブセット。

共用体を配列として宣言する場合は、全体が偶数サイズとなるようにメンバ調整が必須などの注意事項記述。第3章の効率アップ手法と、第6章のスタックサイズの算出は、必読。

R8Cマイコンコース2012/3/21 Rev.2.20

(全238ページ)

R8C/25のハードウエアユーザーズマニュアルと、Cコンパイラユーザーズマニュアルのサブセット。

R8Cは、3/x、5/xと性能と使いやすさを追求して展開中であるが、本テキストは、R8C/25に限定して解説しており、個人的にはうれしいし、役立つ。全体の目次ページが無いので、各章目次を抜き出したものを以下に添付。

 

R8Cマイコンコーステキスト全体目次

第1章 概要

1.1 R8Cファミリの特徴

1.2 R8Cファミリのシリーズ展開

1.3 R8C/25グループ概略仕様

1.4 開発ツール

第2章 R8C/2xシリーズのハードウェア

2.1 アドレス空間

2.2 リセット動作と電圧検出回路

2.3 発振回路

2.4 パワーコントロール

2.5 プロテクト機能

第3章 R8Cファミリのアーキテクチャ

3.1 SFR領域と固定ベクタテーブル

3.2 レジスタセット

3.3 扱えるデータタイプ

3.4 メモリとレジスタ上のデータ配置

3.5 アドレッシングモード

3.6 命令セット

第4章 NC30の実装仕様

4.1 概要

4.2 データ型と修飾子

4.3 絶対番地へのアクセス

4.4 メモリ配置

第5章 スタートアッププログラム

5.1 役割と構成

5.2 プログラム例

5.3 スタック使用量の算出

第6章 R8Cファミリの割り込み制御

6.1 割り込みの動作と使用方法

6.2 INT割り込み

第7章 割り込みプログラムの記述

7.1 割り込みを使うには

7.2 スタートアッププログラム

7.3 割り込みの初期化

7.4 割り込み関数

第8章 R8C/25グループの内蔵周辺機能

8.1 プログラマブル入出力ポート

8.2 タイマ

8.3 ウォッチドッグタイマ

8.4 シリアルインタフェース

8.5 A/Dコンバータ

8.6 フラッシュメモリ

付録

A. NC30起動オプション一覧

B. アセンブリ言語レベルの最適化

マイコンセミナーテキストの概要

2013年4月2日発行のルネサスエレクトロニクスセミナーニュースVol.83によると、マイコンセミナーのテキストをPDFで公開しており、セミナー受講に関係なく閲覧ができます。そこで、RL78とR8Cのテキストをダウンロードしましたので、その概要を示します。

セミナーテキストは、1ページに“スライド+解説”の構成で、網羅的記述のユーザーズマニュアルよりは、理解しやすいものです(但し、下記に示すように結構ページ数がある)。また、ユーザーズマニュアルの重要項目のみを抜き出して解説しているので、この内容を理解していれば、RL78、R8Cマイコンを使用するには十分な内容と推測されます。機種は、RL78/G14に限定して解説していますが、G13にもほとんどそのまま適用できます。

テキスト名 概要
RL78マイコンコース2013/2/26 Rev.1.22

(全243ページ)

RL78/G14のユーザーズマニュアル・ハードウエア編のサブセット。

G14特有のイベント・リンク・コントローラ、データ・トランスファ・コントローラの記述あり。第6章の割込み制御は、理解しやすく良くできている。CubeSuite+のコード生成を利用する際に、割込み優先順位とバンク設定の考え方の参考になる。

RL78コンパイラコース2013/3/18 Rev.1.05

(全194ページ)

ユーザーズマニュアル・RL78、78K0Rコーティング編のサブセット。

共用体を配列として宣言する場合は、全体が偶数サイズとなるようにメンバ調整が必須などの注意事項記述。第3章の効率アップ手法と、第6章のスタックサイズの算出は、必読。

R8Cマイコンコース2012/3/21 Rev.2.20

(全238ページ)

R8C/25のハードウエアユーザーズマニュアルと、Cコンパイラユーザーズマニュアルのサブセット。

R8Cは、3/x、5/xと性能と使いやすさを追求して展開中であるが、本テキストは、R8C/25に限定して解説しており、個人的にはうれしいし、役立つ。全体の目次ページが無いので、各章目次を抜き出したものを以下に添付。

 

R8Cマイコンコーステキスト全体目次

第1章 概要

1.1 R8Cファミリの特徴

1.2 R8Cファミリのシリーズ展開

1.3 R8C/25グループ概略仕様

1.4 開発ツール

第2章 R8C/2xシリーズのハードウェア

2.1 アドレス空間

2.2 リセット動作と電圧検出回路

2.3 発振回路

2.4 パワーコントロール

2.5 プロテクト機能

第3章 R8Cファミリのアーキテクチャ

3.1 SFR領域と固定ベクタテーブル

3.2 レジスタセット

3.3 扱えるデータタイプ

3.4 メモリとレジスタ上のデータ配置

3.5 アドレッシングモード

3.6 命令セット

第4章 NC30の実装仕様

4.1 概要

4.2 データ型と修飾子

4.3 絶対番地へのアクセス

4.4 メモリ配置

第5章 スタートアッププログラム

5.1 役割と構成

5.2 プログラム例

5.3 スタック使用量の算出

第6章 R8Cファミリの割り込み制御

6.1 割り込みの動作と使用方法

6.2 INT割り込み

第7章 割り込みプログラムの記述

7.1 割り込みを使うには

7.2 スタートアッププログラム

7.3 割り込みの初期化

7.4 割り込み関数

第8章 R8C/25グループの内蔵周辺機能

8.1 プログラマブル入出力ポート

8.2 タイマ

8.3 ウォッチドッグタイマ

8.4 シリアルインタフェース

8.5 A/Dコンバータ

8.6 フラッシュメモリ

付録

A. NC30起動オプション一覧

B. アセンブリ言語レベルの最適化

構造体と共用体

構造体と共用体は、マイコンのソフト作成時、初心者には必須技術です。既存ソースの理解や、コード生成ソースの解読に欠かせないからです。そこで、初心者も判りやすいシンプルな解説書を作成しました。

構造体は、“複数の既存型で、新しい型を作る”。共用体は、“複数の既存型で、メモリを共有する”。この2点を覚えてください。そうすれば、以下の例(R8C/25)が理解できます。RL78の場合は、”bit”が予約語になっているので、適当に変えれば(私の場合は、”b”を使用)使えます。

構造体の解説
構造体の解説
構造体の中身
構造体の中身

 

共用体の解説
共用体の解説
共用体の中身
共用体の中身

 

RL78/G14ワークショップ参加とその効用

2012730日、ルネサスエレクトロニクスRL78/G14ワークショップ:WS、大阪開催へ参加します。

RL78/G14は、このブログカテゴリRL78/G13の上位機種と思われがちですが、ハード的には、別物です。G14は、旧ルネサスR8Cの後継機、G13は、旧NECエレの78Kの後継機です。G14/G13両機ともに汎用マイコンですが、G14は、64MHz動作のタイマRD内蔵、剰余算命令と積和演算命令がコア部に追加された、より高性能マイコンです。

昨年のG13 WS参加に続いて、今年のG14 WSの参加目的は、R8C/25の置換え検討と、高性能化のポイント、データ・トランスファ・コントローラ;DTCと、イベント・リンク・コントローラ;ELCの習得です。実機Stickボード(RL78/G14 Stick、近日中にルネサスWEB販売予定、40005000円程度と推測)での動作と、CubeSuite+E1によるデバッグができるので、楽しみです。参加者は、このStickを、もれなくもらえる特典もついています。

このように、少し別の機種をスタディすると、ブログ記載のRL78/G13R8C/25を、より深く知ることができるというメリットもあります。本ブログも、記載カテゴリの機種に限らず、いろいろなマイコンの質問にも積極的にお答えしますので、ご質問は、コチラへお寄せください。