RL78コンパイラコーステキスト要旨(2回目)

RL78コンパイラコーステキスト、2013年5月22日Rev.1.06版の要旨、2回目の今回は、スタック設定です。

スタック設定の要旨

スタックとは、RAM内にある特別な領域のことです。関数の呼出し時に、最低限必要なデータを、このスタック領域へ積み重ねて一時保存し、呼出された関数の処理が終わったら、そのデータを使って呼出し側の関数へ戻ります。使い終わったデータは、積み重ねから取り除きますので、スタック領域は、関数呼出し毎に使用サイズが増えたり減ったりします。

最低限必要なデータとは、1.関数の引数で汎用レジスタに割り付かないもの、2.関数の戻り番地、3.使用する汎用レジスタの退避領域、4.関数の局所変数で汎用レジスタに割り付かないもの、5.コンパイラ処理上必要になったワーク領域、などです。

関数を呼ぶだけで、これらデータの一時保存や、このような複雑な処理をしているのです。しかも、関数呼出し経路や、割込み順位に応じて使用サイズが変わるので、最大スタックサイズを求めるのも大変です。しかし、CubeSuite+では、スタック見積もりツールが用意されていて、自動的に(コンパイラ設定でアセンブル・ファイル出力の「はい」変更は必要)関数毎の使用サイズが求まります。このツールを使えば、プログラマが意図した関数の呼び出し経路かどうかの確認もできます。

マイコンソフトの出荷時には、「必ずスタックサイズを求め、必要サイズ分を1回目で説明したリンク・ディレクティブを使って確保すること。この確保値は自動的に更新されないので、スタックサイズを反映させるのは、プログラマの責任」とテキストには明記されています。例えば、再帰呼出し関数などを使ってスタックが不足するような場合は、異常終了などを引き起こしますので、スタック領域の不足は避けなければなりません。テキストには、スタックサイズを削減する方法も記載されています。

では、出荷時前のデバッグ時はこのスタックサイズがどのように確保されているかというと、リンカがRAM領域の一番大きいGap(空き領域)を見つけ、自動的にスタック領域を確保しています。確保領域は、ビルド・ツール生成ファイル:*.symファイルの、@STBGN~@STEND間です。@STBGN>@STENDなので、スタック領域が上位アドレスから下位側へ使われることが判ります。一方、コンパイラ領域は、下位アドレスから上位側へ使われます。RAMに両方の領域が隣り合わせに配置されても、領域侵犯の可能性が少ない方法です。

対象マイコンのスタック領域確保の必要性

RAM 4KB/5.5KBの対象マイコンを、シングル・チップで動作させるシステムでは、ここで解説したスタック領域確保は不要と思います。スタック見積もりツール算出のスタックサイズよりも大きければ、リンカが確保する最大Gapの場所が、スタック領域としては最適で、リンカ任せでも大丈夫と考えるからです。

システム拡張/変更に対して内臓RAMの空きが少なくなりスタックサイズを削減する場合、リンカの代わりにプログラマ自身でセクション配置をする場合の方法として知っておけば十分でしょう。対象マイコンでRAM空き領域が少なくなった時には、経験上、このような対処療法より、より大容量RAMを持つ機種への変更の方が安全、かつ、費用対効果も高いのでお勧めです。

RL78コンパイラコーステキスト要旨(1回目)

RL78コンパイラコーステキスト、2013年5月22日Rev.1.06版の要旨を3回に分けて解説します。

このテキストは、 ルネサス半導体トレーニングセンターの2日間セミナ「RL78 コンパイラコース」用に作成されたもので、RL78/G14を対象に、コンパイラとリンカ、周辺機器、割込み処理という盛りだくさんの内容です。セミナ参加が困難な私のような地方技術者にとっては、テキスト公開だけでもありがたいです。テキスト内容が濃いので、初心者向けにここでは、リンカとコンパイラに絞って解説します。

今回はリンク・ディレクティブ、2回目は、スタック設定、これら2回がリンカ関連、3回目がコンパイラ関連です。入手が容易で、評価キットにも良く使われる以下2種マイコンの具体例を示します。

対象マイコン

  RAM容量 ROM容量 データ・フラッシュ容量
RL78/G13:S2コア

4KB

64KB

4KB

RL78/G14:S3コア

5.5KB

 

リンク・ディレクティブ要旨

先ず、リンカとコンパイラを簡単に説明します。コンパイラは、ユーザ作成のプログラムを、変数や定数、プログラムコードなどの「種類別に1つのかたまり」にまとめ、リンカに渡すロードモジュールを作成します。この「かたまりをセクション」と呼び、変数のかたまりをデータセクション、プログラムコードのかたまりをコードセクションなどと呼びます。リンカは、コンパイラが作成した各セクションのロードモジュールを、マイコンのROMやRAMに割付け、オブジェクトを生成します。今回と次回は、このリンカ関連の説明です。

リンク・ディレクティブとは、リンカへのセクション単位の「追加ユーザ割付指示ファイル」のことです。「ユーザ」とわざわざ但し書きしたのは、CuiteSuite+のデフォルトのリンク・ディレクティブ:r_lk.drは、別のところ(場所は不明)にあり、このデフォルト指示に従ってリンクすれば、問題なくオブジェクトが生成できるからです。このため、CubeSuite+のプロジェクト・ツリーには、r_lk.drが表示されません。ユーザが指示を追加する場合は、「追加分のみを記述した」user.drを作成し、プロジェクト・ツリーに追加します。

追加ユーザ指示が必要になるのは、1.スタック領域の設定、2.saddr領域拡張の設定、3.データ・フラッシュ使用時、専用ライブラリ使用領域の確保、の3つの場合です。1と2については、2回目以降にそれぞれ解説します。

3のデータ・フラッシュは、RL78ファミリマイコンならば実装済みの周辺機能です。RL78/G13にはデータ・フラッシュ無しのデバイスもありますが、電源なしでもデータ保持ができる一種のROMです。プログラムで書き換えができるのでRAMでもあり、重要なパラメタなどを記録するのに便利な機能です。

データ・フラシュを使うには、ルネサス提供の専用ライブラリ:データ・フラッシュ・ライブラリ  Type04 Ver.1.05が必要で、このライブラリ動作のためにRL78/G13ならFEF00h ~ FF2FFh、RL78/G14ならFE900h ~ FECFFhのRAM下位アドレスから1KBを専有します。さらに、データ・フラッシュ利用に関係なくRAM上位アドレスは、汎用レジスタ、コンパイラ固定使用領域、saddr領域が合計で224バイトを専有します。そのため、RL78/G13とRL78/G14の全RAM容量から、これらの専有領域を引いた残りの2848/B20hバイトと4384/1120hバイトが、コンパイラにとって自由に使えるコンパイラ領域になります。つまり、ユーザ作成プログラムの変数などは、コンパイラがデータセクションにまとめ、リンカがこのRAM領域へ配置します。

RAMメモリマップ RL78/G13 RAM4KB(右)とRL78/G14 RAM5.5KB(左)
RAMメモリマップ RL78/G13 RAM4KB(右)とRL78/G14 RAM5.5KB(左)

従って、データ・フラッシュ利用時は、ユーザが、追加リンク・ディレクティブで、このことを追記する必要があります。データ・フラッシュ実装マイコンでも、これを使う/使わないはユーザまかせですので、使わない場合をデフォルトとして記述がないからです。このユーザ追記は、以下のようになります。

【 データ・フラッシュ利用時の追記リンク・ディレクティブ 】

MEMORY RAM : ( 0FF300H, 000AA0H ) ; RL78/G13 RAM4KB、ROM64KB、データ・フラシュ4KB

MEMORY RAM : ( 0FFD00H, 001020H ) ; RL78/G14 RAM5.5KB、ROM64KB、データ・フラシュ4KB

但し、上記は、さらにSTACK領域に128/256バイトを割当てた例で、これをuser.drファイルとしてプロジェクト・ツリーへ追加すれば、データ・フラッシュ・ライブラリが使えるようになります。

RL78/G13、G14の割込み処理設計

RL78/G1xの割込みは、様々なアプリに対応できるように設計されています。しかし、そのハード構成などから、最も適した使い方があります。ここでは、その使い方を解説します。

割込み処理は、マイコン開発にとって重要ポイントです。しかし、機種特定の解説書は、見あたりません。RL78/G1xのアプリケーション・ノートにも、2013年8月時点では無いようです。あまりにも当然の事として、ルネサスは、解説不要と考えているのかもしれません。

そこで、ハード構成やレジスタ・バンク個数などから、素直な、おそらく最もスジが良い割込み処理の設定について考察します。開発当初から、この設定でソフト開発していれば、後々のトラブル回避にも都合が良いと思います。

結論を示します。ハード構成から、多重割込み処理の最適なパラメタ設定は下図です。赤字は、デフォルト以外の設定値を示します。

最適な割込み処理パラメタ設定
最適な割込み処理パラメタ設定

割込み優先レベルとデフォルト・プライオリティ

マスカブル割込みには、各割込み要因に対して0から53までの、「デフォルト・プライオリティの割込み順位がハードで設定済み」で、0が最高位、53が最低位です。これとは別に、「プログラマが設定可能な割込みの順位が、優先レベル0/1/2/3」です。レベル0が最高、レベル3が最低ですが、CubeSuite+のコード生成ツールでは、レベル0を高、レベル3を低、レベル1/2はそのまま表記します。

デフォルト・プライオリティは、複数の割込み要因が、同じ割込み優先レベルで発生した場合に、優先する順番のことで、通信関連の要因は高く、次がAD、タイマ関連が低いなど、マイコン機種に依存せず大体同じ順番です。一方、割込み優先レベルは、CubeSuite+のコード生成ツールで、「低にデフォルト設定」されています。何も考えずに、コード生成すると、「割込み処理は、全てレベル3に設定」されます。割込み優先レベル、次にデフォルト・プライオリティの順番で優先判定しますので、結局、デフォルト・プライオリティ順位がそのまま割込み受付順位となります。

多重割込み

割込み処理中に、より高い優先レベルの割込みを受け付けるか否かを決めます。デフォルトは、「多重割込み禁止」なので、割込み処理内でEI();により明示的に許可が必要です。最高レベルのレベル0でも許可は可能ですが、レジスタ・バンクが4個のため、避けるのが得策です。

レジスタ・バンク

RL78/G1xの汎用レジスタ格納場所がレジスタ・バンクで、RB0/1/2/3の4個あります。スタートアップで「RB0がデフォルト設定」されており、通常プログラムは、RB0を、割込みプログラムが、残り3個のRB1/2/3を使えます。割込みプログラムでの、レジスタ・バンクの使い方は任意です。コード生成出力は、「全ての割込みプログラムのレジスタ・バンクをデフォルトのRB0に設定」します。

このように、割込み処理のパラメタデフォルト設定値は、全処理で割込み優先レベル3、多重割込み禁止、RB0のみ使用となります。この設定では、本来のハード実力を活かした割込み処理はできません。

割込み優先レベル、多重割込み、レジスタ・バンク、それぞれがともに4個の選択肢があることには、関連があり、最大で4レベルの多重割込みを処理できることを示しています。但し、その最高レベルの0だけは特別で、通常の割込み処理には、レベル3~1を使うのがハード構成に適した使い方です。

レベル0は、最低限の処理を実行後、リセットするような特別な割込み処理用で、例えば、電圧低下を検出して、低下直前の動作状態を保持する用途などが考えられます。従って、専用レジスタ・バンクも不要ですし、多重割込みもなしです。処理後は、リセットするからです。万一、EI();で多重許可した場合には、割込み処理中に、受付けた割込みを再受付するようなトラブルに見舞われます。このトラブルは、結構ありがちです。最優先レベル0の多重割込み処理は、避けるべきです。

割込み優先レベル3~1は、多重割込みを許可し、専用レジスタ・バンクを設定しさえすれば、簡単に、しかも高速に3レベルの多重割込み処理が可能です。スタックを使っても同じ事ができますが、レジスタ・バンクの方が高速ですし、その分スタック節約にもなります。3レベルの処理なら、割込みレベルの割当ても容易です。最高優先処理をレベル1、最低優先処理をレベル3に割付け、それ以外は、レベル2に割付けても問題が発生したことは経験上ありません

まとめ

割込み処理のトラブルは、処理ソフトのバグ以外にも、優先順位に起因するものもあり、難しいデバッグになりがちです。ソフト設計当初に、ここで示したハード構成に適した多重割込みパラメタを設定することがトラブル回避に役立ちます。

時分割処理切換えタイマの考察

販売中のRL78/G1x用のテンプレートは、タイマを使って、タイムシェアリング:時分割でタスク切換えを行います。RL78/G1xは、8チャネルのタイマ・アレイ・ユニットを最大2個持つので、8x2=16個のタイマの中から、どのタイマが時分割切替え処理に適すかを考察します。

※RL78/G13は、タイマ・アレイ・ユニットあたり8チャネル、RL78/G14は、4チャネルを持ちます。各チャネルは、同じ機能なので、ここでは、RL78/G13の場合で記述します。

タイマ・アレイ・ユニット1は、80ピン以上のパッケージで実装されます。テンプレートは、全パッケージで共通にしたいので、現在販売中の全パッケージに実装済みのタイマ・アレイ・ユニット0の中からから使用タイマを選びます。

次に、タイマ・アレイ・ユニット0の割込み要因デフォルトプライオリティ順位は、チャネル0が一番高く、チャネル7が最低です。時分割切換え処理のプライオリティは、低い順位の方が良いでしょう。より緊急度の高い処理などを先に実現できるからです。

また、チャネル0から2は、全パッケージでタイマ入出力端子があります。この端子がないと、インターバルタイマとして動作しますが、端子がある場合は、外部ペリフェラルとの同期動作が可能となります。

※RL78/G14は、全パッケージでチャネル0から3の入出力端子があります。

まとめると、1)全パッケージ実装のタイマ・アレイ・ユニット0、2)低いデフォルトプライオリティ順位、3)外部同期動作可能、以上の要求を満たす、タイマチャネル02が、時分割処理の切換えタイマに適すことが判ります。また、タイマチャネル02なら、RL78/G13とRL78/G14でテンプレートを共通にすることも可能です。

RL78ファミリ用ライブラリリビジョンアップ制限事項とは?

2013年8月8日、RL78ファミリ用EEPROMエミュレーションライブラリ Pack01がVer.1.13へ、データフラッシュライブラリ Type04がVer.1.05へリビジョンアップされました。目的は、RL78/G1xデータフラッシュ機能の読出し制限事項への対策です。この制限事項を解説します。

RL78/G1xには、プログラムを格納するコードフラシュと、データを格納するデータフラシュの2種類のフラッシュがあり、それぞれに以下のライブラリが提供されています。

対象 ライブラリ名 最新バージョン 解説
データフラッシュ EEL (Pack01) V1.13 FDLを利用してデータフラッシュを外付けEEPROMと同じように使えるライブラリ
FDL (Type01) V1.12 データフラッシュにアクセスするライブラリ。ライブラリのサイズにより、Type01/04の2種類がある。サイズが小さいのは、PicoバージョンのType04。
FDL (Type04) V1.05
コードフラッシュ FSL V2.20 プログラムをCPU動作中に書換えるライブラリ

EEL: EEPROM Emulation Libraries, FDL: Flash Data Libraries, FSL: Flash Self-Programming Libraries

今回のリビジョンアップは、テクニカルアップデート:TN-RL*-A009A/Jによると、DMA利用の場合と、旧ライブラリのあるCPU命令の組合せ、この2つの場合に発生する問題へ対応したそうです。FDLでは、シーケンサと呼ばれる(おそらく)ハードウエアで処理の一部を代行します。CPU以外に並行動作するハードウエア(この場合、DMAやシーケンサ)と、CPU処理のアクセス競合を避けるための工夫がライブラリに加えられました。

1000円で販売中のRL78/G1xテンプレートにもFDL(Type04)が使用中です。今まで、上記問題発生は確認しておりません。しかし、掲記の問題発生を避けるためにも、ライブラリをリビジョンアップして提供する予定です。

RL78習得(ネット利用編)

ネットを利用したRL78/G13、RL78/G14の習得方法を紹介します。

Runesas提供のRunesas Interactive RL78コースは、だれでも、いつでも、無料で学習できる教材です。以下にその概要を示します。1コースを10~35分で学べ、途中で停止/再開もできるので、空いた時間にアクセスしてみてはいかがでしょうか? 使用した教材は、PDFでダウンロードもできます。

Runesas Interactive RL78コース概要と時間

MCU/MPU / RL78 / 概要編

スタートアップ編:RL78ファミリ用コンパイラのスタートアップについて学習できます。(10 mins) Released: 05/17/2013 Updated: 05/17/2013

MCU/MPU / RL78 / 周辺編

スタンバイ機能:このコンテンツでは、スタンバイ機能の基礎的な内容を学習します。はじめに、スタンバイ機能の背景と電力消費のメカニズムに触れスタンバイ機能をご紹介します。次に、スタンバイの代表的なモードのHALTモードとSTOPモード、SNOOZEモードをご説明します。更に、これら3つのモードの遷移の様子、SNOOZEモードの動作例として、シリアル・インターフェースとA/D変換機能をご説明します。最後に、その他の省電力のための手段と備考・注意点を添えます。(35 mins) Released: 04/24/2013 Updated: 04/24/2013

ウォッチドッグ・タイマ:このコンテンツでは、 RL78ファミリおよび78Kファミリのウォッチドッグ・タイマ機能の基礎的な内容を学習します。まず、ウォッチドッグ・タイマの背景から始まり、ウォッチドッグ・タイマの概念、ウォッチドッグ・タイマにおけるシステム安全性向上のための工夫、と進めて、ウォッチドッグ・タイマ使用上の注意点に触れ、まとめます。(20 mins) Released: 04/24/2013 Updated: 04/24/2013

ADC編:RL78/G13搭載のADC(A/D Converter)の特長と使い方について学習できます。(10 mins) Released: 05/24/2013 Updated: 05/24/2013

SAU編:RL78/G13搭載のSAU(Serial Array Unit)の特長と使い方について学習できます。(20 mins) Released: 04/24/2013 Updated: 04/24/2013

安全機能編:RL78/G13搭載の安全機能の特長と使い方について学習できます。
(10 mins) Released: 05/24/2013 Updated: 05/24/2013

DTC編:RL78/G14搭載のDTC(Data Transfer Controller)の特長と使い方について学習できます。(10 mins) Released: 05/17/2013 Updated: 05/17/2013

ELC編:RL78/G14搭載のELC(Event Link Controller)の特長と使い方について学習できます。(15 mins) Released: 05/17/2013 Updated: 05/17/2013

タイマRD編:RL78/G14搭載のタイマRDの特長と使い方について学習できます。(20 mins) Released: 05/24/2013 Updated: 05/24/2013

テンプレート使用法(2):分析とテンプレート組込み

第2回は、LCDアプリ分析とテンプレートへの追加方法の説明です。

ドライバとアプリ分離:先ず、LCD制御ソフトを、ドライバ処理とアプリケーション処理(以後アプリ処理と略す)に分けて考えます。ドライバ処理とは、制御対象がLCDコントローラのソフトです。アプリ処理は、ドライバ処理を使ってLCDに出力する文字列を設定するソフトのことです。

LCDドライバ処理:LCD表示を行うには、マイコンピン初期設定、LCDコントローラのパワーオン処理、LCDコントローラ初期設定、LCD表示データ書込みの4種の処理が必要です。そこで、各処理をそれぞれ関数化し、条件によりこの4ドライバ関数に分岐します。これらのドライバ処理をテンプレートへ組込むと、下図(左側)のようになります。

LCDアプリ処理:ドライバ処理で準備が完了したLCDコントローラに対して、LCDで表示する文字列を設定する関数です。コンローラ準備完了判断や、通常表示と、エラーを表示する場合などの条件で分離することを考慮すると、下図(右側)のようになります。

ポータル関数の構成
ポータル関数の構成

ドライバ処理もアプリ処理も、テンプレートへ組み込む形は同じです。ポータル関数でインタフェースRAMの値によって条件分離し、各イベント処理を実行します。各イベント処理後にインタフェースRAM値を変更し、次回の条件分岐に備えます。

インタフェースRAM:関数間の変数をRAMに展開したものをインタフェースRAMと呼びます。RL78/G13やG14には、アクセス頻度が高い変数は、ショート・ダイレクト・アドレッシングsreg領域(FFE20~FFEB3 の147バイト)へ配置すると高速化が図れます。引数で記述する場合に比べ、関数単体デバックが簡単になるメリットがあります。

処理が遅い周辺回路の対処:最近のマイコンは高速動作です。しかし、LCDコントローラなどの周辺回路は、マイコン動作に比べ、とても遅いという問題があります。この遅さに対して、マイコンのポーリングや割込みを使う方法で解決できます。しかし、今回のLCD接続は、リード動作ができないので、これらは使えません。第2の方法は、周辺回路動作完了まで、マイコン側の処理に待ち時間を入れる方法です。サンプルプログラムなどでは、この方法を多く用います。マイコン処理は簡単ですが、無駄に時間を消費しますので、高速マイコンに効果的な方法とは言えません。

第3の方法が、タイムシェアリングを使う方法です。周辺回路の動作を設定した後は、マイコンに別処理を行わせ、周辺回路の処理が完了したころを見計らってさらに追加処理をする方法です。第2の方法より、効率的にマイコンを使えますが、処理完了のころあいを見積もることが大切です。見積もりが上手くいけば、多重処理ができるので、高速マイコンの特長を活かせたソフトができます。リアルタイムOSも、簡単に言うとこの方法を使っています。プログラマの処理完了の見極めが不要で、タスク切換えをOSが行ってくれます。が、それなりの大容量RAMが必要で、4MB程度のRAMでは足りませんし、使いこなしの知識や経験も必要です。また、無料OSもありますが、有料版はコストアップになります。

タイムシェア間隔固定:提供テンプレートは、タイムシェアリング間隔が、予め決まっています。ドライバ処理起動用に、250ms/1ms/10ms/100ms/1s、アプリ処理起動用には、1ms/10ms/100ms/1sです。つまり、この間隔で、遅い周辺回路の処理完了を見積もって、割り振れば良い訳です。間隔が決まっていますので、リアルタイムOSよりは効率が下がりますが、オーバーヘッドは少なくなります。

LCDコントローラの場合は、パワーオン処理に5ms、表示クリアに1.64ms、その他の処理に40us(いずれも最大値)が必要です。そこで、ドライバ処理のポータル関数は10ms間隔、アプリ処理のポータル関数は1s間隔に割り振りました。40usの処理待ちは、タイムシェアリングせずに、時間消費で対応しました。テンプレートに組込んだドライバポータル関数を下図に示します。

テンプレートへ組込んだドライバポータル関数
テンプレートへ組込んだドライバポータル関数

リアルタイムOSに比べれば効率が低下しますが、テンプレートは、少ないRAM使用量で、高速マイコンの特徴を活かした多重処理を、簡単に実現できることが判ると思います。

テンプレート使用法(1):追加アプリとハード構成

今回から数回に分けて販売中のG1xTemplateの使用方法、すなわちアプリ追加の方法を説明します。

第1回は、追加するアプリ選択とハード構成です。

追加アプリ:追加するアプリは、LCD表示アプリとします。実は、このアプリは、G1xTempleteに既に組込み済みです。組込み済みのアプリを例とした方が、組込み結果が判りやすいのためです。別アプリを追加する場合にも、今回と同様の手順と方法が使えます。

ハード構成:LCDは、雑誌などでおなじみの、16文字x2行表示キャラクタディスプレイ、HD44780互換品、秋月電子などで入手容易なものです。LCDとRL78/G13との接続方法も、最も一般的な、3制御+上位4ビットデータの7本インタフェースとします。このハード構成を下図に示します。

LCDハードウエア構成とRL78G13スタータキット実装例
LCDハードウエア構成とRL78G13スタータキット実装例

LCDはライト動作のみで、リードは行いませんのでLCD_RWは、LOW固定です。従って、マイコンに比べ動作が遅いLCDコントローラの処理終了の検出方法には、ポーリングや割込みは使いません

RL78/G13ユーザーズマニュアル ハードウエア編更新

RL78/G13ユーザーズマニュアル ハードウエア編が、2013/05/30、Rev.3.00へ更新されました。

付録の改版履歴を見ると、前版は、Rev.2.10で、メジャーバージョンアップです。全般的に見直して、追加/修正を加えたことが伺われます。特筆すべきは、前版までの改版履歴には無かった改版内容が、(a)~(d)の5段階に分類されたことです(付録A参照)。この分類と、修正場所を示す★マークで、より明確に変更が判るようになりました。

分類によると、今回の改版は、ほとんどが(c):説明、注意事項の追加/変更ですが、電気的特性の通信関連に(b):仕様(スペックを含む)追加/変更があります。RL78/G13と他マイコンを、通信動作でアプリを開発する場合などは、(b)箇所の見直しをお勧めします。また、(c)箇所も、最新版CubeSuite+の端子配置表の記述に合わせて変更されており、より判りやすくなっています。p876のオプション・バイト記述例などは、初級者にとって役立つと思います。

RL78/G1x用テンプレート販売

RL78/G13とG14ソフト開発に使えるテンプレートを、1000円で販売いたします。

このテンプレートは、CubeSuite+のプロジェクトファイルで、LED点灯やタクトSW入力、LCD表示機能などの組込み処理に最低限必要な機能は、あらかじめプログラム済みで市販ボードで動作確認済みです。

テンプレートの開発動機は、以下です。

アプリ開発の早期着手:CubeSuite+の新たにプロジェクト作成時は、毎回多くのパラメタ設定が必要で、ミスの可能性もあります。これら開発の前段階を少なくし、早くアプリ開発に着手したい。

既存関数の部品的流用:参考になるアプリケーションノートのサンプルプロジェクトを、理解した後は、なるべくそのまま部品的に使いたい。また、これまで開発してきた関数を、部品として使いたい。

これらを満たす方法の1つとして、各種パラメタ設定済みのプロジェクトに、最低限必要な機能を盛り込み、市販ボードで動作するテンプレートプロジェクトを作成しました。このテンプレートは、なるべくトリッキーな方法を使わずに、素直にプログラムしておくことと、サンプルや既存関数をそのまま使えるように関数間のインタフェースを簡単にしておくことが重要です。時間がたってテンプレートを観た時、思い出し易いからです。また、アプリ開発では、開発が進むにつれ、要求の追加/変更が生じますので、開発当初は、市販ボード上にサッと組んで、ボトルネックになりそうな箇所の見通しをつける事も大切です。スケジュールが押し迫ってから、マイコン性能が足りない等の問題が見つかると最悪ですから。市販ボードなら、ハードウエアの完成を待たずに、確実に動くハードで開発ソフトを検証できます。

このテンプレートは、初級~中級のソフト開発者には最適です。上級者は、これに似たテンプレートを既に持っているからです。本来は、上級者がテクニックを含む自分のテンプレートを初心~中級者へ教え、教えられた側でさらに、テンプレートに修正を加えれば、技術継承も容易です。しかし、テンプレートは、習得済みの者にとっては、オーバーヘッドで、未収得の者にとっては、理解不能な面が多いので、技術継承はスムーズにいきません。

テンプレート説明ページ1
テンプレート説明ページ1

販売するテンプレートの、もくじ付き解説文書のうち、最初の1ページ(jpg文書)を示します。もくじの内容から、テンプレート詳細が、だれにでも解ると思います。購入ご希望の方は、メール(宛先:info@happytech.jp)にてお知らせください。銀行振込口座を返信いたしますので、この口座へ代金の1000円を振込でください。振込確認後、全ての解説文書(全てPDF文書)とテンプレートプロジェクトをメールにてお送りします。後は、ご自由にテンプレート変更や修正を加えて頂いて、少しでも本来のアプリ開発に役立てて頂ければ、幸いです。

※2013年11月28日、テンプレートをVersion2へ更新いたしました。Version2はコチラをご覧ください。