開発ツールのバージョンアップ時は、バックアップ必須

CubeSuite+が、V1.01.00からV1.02.00へバージョンアップされました。オートアップデータや、HEWプロジェクトを、CubeSuite+へ変換する機能などが追加されました。

開発ツールのバージョンアップ時には、障害が付き物です。今回も、旧版では何の問題もなく動作していたターゲットボードへ、新版出力をダウンロードすると、何やら怪しげな致命的エラーが発生しました。原因は調査中です。

この原因を追究して復旧する作業と、開発を続ける作業は、全く別物です。開発が切迫している時などは、割り切りが必要です。この適切な割り切りが冷静にできるが否かが、経験者と初心者の一番の違いでしょう。R8C/25のブログで書いたように、ツールが安定している事は、全ての開発者にとって、精神的にも製品にもプラスに働きます。しばらくは、旧版に戻して開発を続けるつもりです。

開発者のみなさん、バージョンアップの際には、リカバリできるようにくれぐれもバックアップを忘れずに!

RL78/G13のRAMの使い方

R8C/25比、2倍に増えたRL78/G13の4KB RAMの使用方針を示します。RAMは、

  • 関数間のインタフェースRAM
  • 関数/ライブラリの内部変数
  • スタック

として使います。スタックと関数/ライブラリの内部変数は、コンパイラが勝手にRAMへ割り付けます。プログラマは、それらの使用量を知っていれば十分です。関数間のインタフェースRAMとは、自作する関数どうしの入出力変数の入れ物です。

関数は、void main(void)のように、入出力変数が無いものもありますが、一般的には、入力変数を、プログラムで処理し、その結果を出力変数へ変換します。この出力変数が、期待値と異なる場合、プログラムを変えたり、入力変数を変えたりします。この作業が、関数の単体デバッグです。

全ての入出力変数をインタフェースRAMで定義すると、この関数単体デバッグが、格段に簡単になります。RL78/G13の開発ツールCubeSuite+は、RAM値の表示と、その変更がツール上で簡単にできるからです。昔のRAM容量が少ないマイコンを知っているプログラマは、この方法に抵抗があるかもしれません。しかし、今のマイコンには、大容量RAMが内蔵されています。RAMをケチらずに使ってデバッグ効率を上げるのが、最新マイコンに適したRAM使用方法です。

私は、R8C/25(2KB RAM)と開発ツールHEWでもこの方法を使っていますが、これまでRAM容量の不足を感じたことはありません。また、RL78/G13では、アクセス頻度が高い変数を、ショート・ダイレクト・アドレッシング:sreg領域(147バイト)へ配置すると、通常RAMよりもさらに高速動作が可能です。デバッグの容易性と、高速化、この2つを同時にかなえる方法と言えるでしょう。

1関数のソースの長さは、お使いのモニタの縦の長さ以下、が良いでしょう。関数をモニタで表示した時に、初めから終わりまでが、一目で見えるからです。誰かにデザインレビューをお願いする時や、自分でデバッグする時も、この程度のソース長が適当です。プログラムを書いていて、ソースが長くなったら、この目安を守るように、入出力変数を見直して関数化すると良いでしょう。

RL78/G13のソフト構造

ソフト構造は、タイムシェアリングとイベントドリブンの2つに大別できます。

タイムシェアリング構造のメリットは、初級~中級レベルの相手に説明した時の、相手の判りやすさと、デバッグが容易なことです。イベントドリブンは、デバッグ時にイベントを発生させることが困難なことが多いので、初心者向きではありません。RL78の大容量のROM/RAMを効果的に使うと、シンプル機能の関数でタスク作成が可能となります。

タイムシェアリングソフトは、イニシャル処理、電源断処理、起動処理、UART1処理の4処理から構成します。この構成でテンプレートを作成します。このテンプレートに、タスクを組込み、ソフトを作り上げます。

RL78/G13ソフト構造
RL78/G13ソフト構造

タスク組込みの時に検討するのは、タスクの処理時間精度と、どの起動処理で起動するかの2点のみです。 

R8C/25開発環境は安定期

R8C/25の開発環境、無償HEW最新バージョンは、V.6.00 Release 00、2011年4月5日登録です。つまり2012年4月25日現在、1年以上更新されていません。最新マイコンのRL78などは、半年ごとに開発環境が更新されます。私の使っているバージョンは、V.5.45 Release 01ですが、HEW付属のAuto Updateを使って更新チェックを行っても、この最新版へ更新されません。

これは、R8C/25の開発環境が安定していることを示します。組込み開発では、この開発環境が安定していると精神的に安心できます。バグ存在範囲が、自作ソース内に限定されるからです。

R8C/25は、最新マイコンではありませんが、この点はメリットです。製品要求能力に対して、パフォーマンスとコストが合えば、有力な選択肢となります。

CubeSuite+「コード生成」の使い方

開発環境CubeSuite+の「コード生成」を使うと、周辺機能変更やマイコン機種変更が生じても追加コードをそのまま使え、しかも、初期設定も自動生成します。そこで、このコード生成の使い方を解説します。

CubeSuite+コード生成出力
CubeSuite+コード生成出力

ポイント1:出力ソースの、/* Start user code… */から/* End user code… */間にのみ、追加コードを記述すること。それ以外は、周辺機能パラメタ変更や機種変更時、「コード生成」が自動生成し、上書きするからです。

ポイント2:5か所ある、/* Start user code… */から/* End user code… */使い方ガイドラインは、

  • ①:#pragama指令を追加するエリア(通常、ほとんど無いでしょう)
  • ②:追加関数のプロトタイプ宣言エリア(コード生成出力の関数プロトタイプは、周辺名.hで宣言済み)
  • ③:定数、グローバル変数、追加関数の記述エリア(このエリア内なら、自由に記述可能です)
  • ④:コード生成出力関数に追加記述するエリア(関数名は自動生成されるので、追加分の中身を記述)
  • ⑤:機能は③と同じ(③と⑤のどちらか一方を使う方が良いでしょう)

どこに何を記述すべきかのガイドラインがあると、ソース解読が判りやすくなります。

RL78/G13の選定理由

RL78/G13は、R8C/2xの後継機であり、価格、性能、開発環境が向上しました(R8C/25の直系後継機は、RL78/G14ですが、より早くリリースされ、低価格のG13をここでは選びました)。

評価項目 解:RL78/G1352ピン、10×10mm0.65ピッチ 従来R8C/25

入手性の良さと低価格

DigiKeyにて¥350前後で販売中

(2012年4月現在)

22%価格改善

高性能で大容量

32MHz動作

ROM/RAM/データフラッシュ=64KB/4KB/4KB

160%性能向上

200%容量増大

無償開発環境の良さ

統合開発環境 CubeSuite+

コード自動生成機能追加

汎用性と拡張性

IOピン数が程ほどで、手実装も容易

同左

特筆すべきは、開発環境のCubeSuite+。初期設定を自動生成するので、アプリ開発にすぐ着手できます。従来は、ハードウエアマニュアルを読み、初期設定を自作していました。ソフト処理や手順を文章で記述すると、簡単な事でも冗長になるので、結構厄介でした。アプリ開発に着手したいのに、前段階でつまずく事もしばしばあり、ここが改善されたのは効果大です。

R8C/25の選定理由

評価項目
入手性の良さと低価格 秋月通商で¥450にて販売中
高性能で大容量 20MHz動作、ROM/RAM/データフラッシュ=32KB/2KB/2KB
無償開発環境の良さ 統合開発環境HEW
汎用性と拡張性 IOピン数が程ほどで、手実装も容易

電池駆動用に超低消費電力などの突出性能マイコンもありますが、全項目をバランス良く満たし、使い易い汎用マイコンは、R8C/25:54ピン□10×10mmです。

複数種のマイコンと、DSPやパソコンソフト開発を十数年経験して、マイコンハード単体の能力不足を感じた事は、幸運な事に一度もありません。対象製品がユーザインタフェース処理や、普通の計算能力で十分なためでしょう。

むしろ違和感というか、抵抗を感じたのは、ソフト開発環境です。初期設定と無限ループから構成されるマイコンソフトの生産性を上げる工夫は様々です。最近は、初期設定を自動生成する新タイプの環境も多くあります。

残念ながらR8Cマイコンは、次期製品RL78マイコンへの移行が決まっており、このような新タイプ環境ではありません。が、古いタイプの開発環境マイコンの中では優れた汎用マイコンです。

Tips:サンプルコードのデータベース化

RL78関連の情報は、Runesasサンプルコードで集めます。サイト掲載のサンプルコードを簡単にデータベース化する方法を示します。

  1. コード検索後、検索部分のみをマウスで全部選択
  2. 空のExcelBookへ貼り付け(←Excel2010で動作確認)

これで簡単にExcel化できます。リンクも自動的に張られますので、ダウンロードも簡単です。Excel化してあるので、独自コメントなども追加できます。

サンプルコードは、宝の山です。これらを効果的に活用するには、簡単に作成できる独自データベースも有効手段です。

カテゴリーの概要

ここでは、初級終了から中級レベルの読者を対象に、R8C/25とRL78/G13マイコンについて、Tipsを掲載します。

マイコン関連情報を5段階評価すると、初心者向けの第1段階と、上級者向けの4~5段階の情報はあります。しかし、初級終了から中級レベルの2~3段階向け情報は少ないです。この段階は、OJTや自助努力で力を伸ばすのでしょう。でも、ここを効果的に終了すれば、より早く高みに登れる事は、間違いありません。このニーズのために、私が得意な2つのマイコンで記事を記載します。中級レベルの読者であれば、他マイコンへの応用も容易であると思います。