ラベル TOPPERS/ASP(RL78版) の投稿を表示しています。 すべての投稿を表示
ラベル TOPPERS/ASP(RL78版) の投稿を表示しています。 すべての投稿を表示

2023年1月10日火曜日

TOPPERS/ASP - RL78版 目次

思い出しながら何とか完結!

以下RL78版に関する記事の目次です。


■TOPPERS/ASP - RL78版 その1

TOPPERS/ASP - RL78版 概要

必要なもの

ダウンロード/GitHub


■TOPPERS/ASP - RL78版 その2

開発環境の構築(コンパイラ編)


■TOPPERS/ASP - RL78版 その3

開発環境の構築(IDE編)


■TOPPERS/ASP - RL78版 その4

プロジェクトの作成


■TOPPERS/ASP - RL78版 その5

プログラムの転送とデバッグ


■TOPPERS/ASP - RL78版 その6

サンプルプロジェクトの説明

RL78版カーネルについて

「RL78」は「H8」より優れているのか?

ライセンスについて



なお、Qiitaにも上記の記事を1ページにまとめたダイジェスト版を投稿しました。

こっちの方が読み易いです。

でもQiitaって、あまり組み込み分野の記事って盛り上がらないんですよね…。

(オマエの文書が悪い…とか言われると傷付きます。)

よろしければ参考にしてください。

Qiita

TOPPERS/ASP - RL78版 - Qiita

2022年12月25日日曜日

TOPPERS/ASP - RL78版 その6

前回からの続きです。

このテーマを最初からご覧になる場合はこちらからどうぞ。


サンプルプロジェクトの説明

このページ(TOPPERS/ASPのビルドからデバッグまで~サンプルプロジェクトで遊ぼう)を参照してください。

RL78


RL78版カーネルについて

以下、このカーネルにおける備考です。


●割り込み優先度

このカーネルでは、-1(優先度最低)から-3(優先度最高)の3段階の優先度設定が可能です。

RL78の仕様としては、本当はレベル0~3の4段階の割り込み優先度設定が許可されているのですが、一番優先度の高いレベル0が少々クセモノです。

このレベル0は、マスクできない割り込みなのです。

割り込みのマスクは「プログラム・ステータス・ワード(PSW)」というレジスタで行います。

このうち「ISP1」と「ISP0」というビットに注目してください。

これらのビットの操作による効果は、以下のようになります。

PSWレジスタ


ご覧のように最高優先度のレベル0をマスクする手段がありません。

いや、マスクしようと思えばできないこともないのです。

それは「IE」というビットですべての割り込みを無効にしてしまえば良いのです。

しかしながら、これをOSに実装するにはかなりアクロバティックな記述が必要となります。

今回はGCCコンパイラを使いましたが、純正のコンパイラではレベル0用に使用させるレジスタのバンクが存在しないことから多重割り込みにも対応できず、レベル0の割り込みを使用することは半ば禁忌となっています。

このあたりの事情は、「RL78 割り込み レベル0」でググると詳しい方の解説が見つかります。

GCCコンパイラでは、これらの問題は回避できるので、この慣例に従う必要もないのですが、前述の通りアクロバティックな実装が必要なことに加え、そもそも3段階の優先度でも殆どの場合は問題になりませんので、リスクを避け、-1(レベル3)から-3(レベル1)をOS管轄の割り込みとして実装しました。

-4(レベル0)は設定できません。

面倒くさいから!とかではないです…いや、ちょっとそうかも…。


●例外ハンドラ

例外ハンドラとしては一つだけ、BRK例外「BRK命令の実行」のみに対応しています。

この動作は、サンプルプログラムで確認できます。

サンプルプログラム実行中に「z」か「Z」をターミナルで入力すると、以下の命令が実行される仕掛けになっています。

  • asm("brk")


これによりBRK例外が発生し、その様子がターミナルに表示されます。

小文字の「z」と大文字の「Z」の違いは、BRK例外が小文字の場合はカーネル管轄内で、大文字の場合はカーネル管轄外でそれぞれ実行されるということだけです。

デバッグでの用途以外、あまり使い道はないでしょう。


●一部サービスコールは未対応

性能評価用システム時刻取得のための「get_utm()」サービスコールは未実装です。


「RL78」は「H8」より優れているのか?

同じルネサスエレクトロニクスの16bitマイコンである両者。

H8の方は淘汰されてしまった一方、RL78は今も生き延びています。

実際、RTOSを移植してみて分かったことは…。


H8の方が全然使いやすいじゃん!


あくまで個人的な好みですよ?

RL78は、ニーモニックも往年の名CPU「Z80」の亜種といった感じで古臭いし、元々8bitから進化した「78K0R」の後継だけあって、16bitへの拡張がムリクリといった感じでスマートではありません。

CPUの世界においては、優れたアーキテクチャが必ずしも市場において勝利するとは限らないことは歴史が示している(「8086 vs 68000」など。インテル好きな方はごめんなさい…。)ところなのですが、それは違うメーカーの製品同士の話。

同じメーカーで、なぜRL78が勝ち残ったのかは謎ですね~。

(ルネサスエレクトロニクス社内で、旧日立と旧NECの血みどろの派閥抗争の結果?などと邪推してみる…。)

とはいえ、このRL78、Z80を使い慣れているプログラマーにとっては使い勝手は非常に良いです。

低消費電力の点でも大変優れています。

そういった特徴から、既に前身の78K0Rの時代から、H8よりも多くの固定客が付いていたということなのでしょう。

多分、大量に買ってくれる「車載」とかの分野でね…。


ライセンスについて

このカーネルは「TOPPERSライセンス」で配布しております。

無償ですが、使用に関しては自己責任です。

このカーネルを商用利用するチャレンジャーな方場合は、このリンク先の条項に従ってください。

ちなみに、商用利用ならば商用の製品をオススメしたいところなんですが…。

有名どころでは、株式会社ユビキタスAI様の「TOPPERS-Pro/ASP」という商用の実装がありました。

私は使う機会がなかった(会社はソフトウェア、特にミドルウェアやOSは絶対買ってくれない…)のですが、こちらはRL78を含む多くのアーキテクチャに対応していて、すごく良さそうだったんです。

しかし、久し振りにWebページを見てみるとこの「TOPPERS-Pro/ASP」、「当製品は、新規販売を終了しております。」って書いてありますね~。

後継の「TOPPERS-Pro/ASP3」は今でも売ってますが、こちらだとRL78版が無いんですよね。

まあ、こういうRTOSは製品サポートのためのリソースを相当に食いますから、少しでも需要が下がれば販売打ち切っちゃうのは仕方がないですね。

とはいえ、まだまだ使われているCPUなのだから、需要が全く無いはずもなく、RTOS無いと不便な思いをする人もいるかもだし…。

そういう意味では、今回のRL78版の記事にも少しは意義があるのかなと。

今後も頑張ってメンテナンスしていきます。


<終わり>

2022年12月17日土曜日

TOPPERS/ASP - RL78版 その5

前回からの続きです。

このテーマを最初からご覧になる場合はこちらからどうぞ。


プログラムの転送とデバッグ

早速、評価ボード「RL78/G14 Fast Prototyping Board」とパソコンを繋げたいと思うのですが、一つ問題が!

こういう評価ボードの場合、USBのコネクタが付いていて、これでパソコンと繋げると給電と同時にデバッガーのファンクション、加えて仮想シリアルポートとしても認識されて、シリアル通信によるデバッグ出力がすぐに使える~って思うでしょ?

ところが、この「RL78/G14 Fast Prototyping Board」はそうなっていないんです。

この評価ボードに付いているUSBのコネクタは給電とデバッガーのファンクションだけで、パソコンと接続しても仮想シリアルポートとしては認識されません。

評価ボードのUSBコネクタ


これからTOPPERS/ASPのサンプルプログラムを動かす際には、動作確認のためにどうしてもシリアルポートが必要です。

そこで、以下のような市販のUSB/シリアル通信変換ケーブルを用意します。

市販のUSB/シリアル通信変換ケーブル


シリアル通信をするために必要なポートは、RXDとTXDとGNDの三本ですね。

以下の赤い四角で囲った端子を使いましょう。

コネクタピン配置


評価ボードからこうやってGNDRXDTXDと、それぞれの線を出してやって…

評価ボード側の配線


USB/シリアル通信変換ケーブル側の配線は、上からTXD、RXD、GND順番でこんな感じ。

これでシリアルポートの問題は解決っと。

USB/シリアル通信変換ケーブル側の配線


続いて、このUSB/シリアル通信変換ケーブルをパソコンに繋いでみましょう。

パソコン上でデバイスマネージャーを開きます。

ポート(COMとLPT)のサブカテゴリーとして「USB Serial Port」というポートが追加されているはずです。

(私のパソコンでは、「COM15」として認識されていますね。)

このポート番号、覚えておいて下さい。

デバイスマネージャー


ここで、評価ボードとパソコンもUSBケーブルで繋げちゃいましょ。

ご覧の通り、通電します。

評価ボードとパソコンの接続


次に「TeraTerm」をご用意ください。

インストールしていない方は、このページ(TOPPERS/ASPのビルドからデバッグまで~サンプルプロジェクトのデバッグ)の「TeraTermの導入」の項目を参考にしてください。

もちろん、シリアル通信のターミナルであれば、他のものもお使いいただけます。

今回のTOPPERS/ASPのサンプルプログラムは、シリアル通信のメッセージを出力しますので、先程「USB Serial Port」として認識されたシリアルポート番号でターミナルを立ち上げておきましょう。

設定は、こんな感じです。

ボーレートは「9600」です。

(私のパソコンは、USB/シリアル通信変換ケーブルをCOM15として認識していました。)

TeraTerm - シリアルポートの設定


さて、「e2 Studio」に戻りましょう。

まだサンプルプログラムをビルドしていない場合は、画面右側の「ビルド・ターゲット」タブの中、「OBJ」ディレクトリ直下の「all」をダブルクリックして、ビルドを完了させましょう。

「e2 Studio」 - 1


次にデバッガの設定を行います。

画面上部にある緑色の「虫マーク」。

その脇に「▼」ボタンがありますので、それをクリック。

そこで現れた「デバッグの構成」という項目をクリックしましょう。

「e2 Studio」 - 2


すると以下のようなダイアログが現れます。

左側のリストから「Renesas GDB Hardware Debugging」という項目をダブルクリックしてください。

「デバッグ構成」ダイアログ - 1


ダイアログ右側がガラリと変わりましたね?

「デバッグ構成」ダイアログ - 2


この「デバッグ構成」ダイアログの各項目に対し、以下の設定を入力します。


名前:<任意の構成名(ここでは「OBJ」)>

プロジェクト:<プロジェクト名(ここでは「asp_1.9.2」)>

C/C++アプリケーション:C:\cygwin64\home\<ユーザ名>\asp_1.9.2\OBJ\asp.exe

Build Configuration:Use Active

「自動ビルドを無効にする」を選択

「デバッグ構成」ダイアログ - 3


お次は現在の「メイン」タブから「Debugger」タブへクリックして切り替えます。

「デバッグ構成」ダイアログ - 4


新しく現れた各項目に対し、以下の設定を入力します。


Debug hardware:E2 Lite (RL78)

Target Device:R5F104ML

「デバッグ構成」ダイアログ - 5


さて、お次は現在の「GDB  Settings」タブから「Connection Settings」タブへクリックして切り替えます。

「デバッグ構成」ダイアログ - 6


たくさん設定項目があるんですが、ここでは「エミュレーターから電源供給」の項目だけは忘れずに「いいえ」にしておいて下さい。

「デバッグ構成」ダイアログ - 7


最後にもう一丁!

現在の「Debugger」タブから「共通」タブへクリックして切り替えます。

「デバッグ構成」ダイアログ - 8


エンコードの設定で「その他」に選択し、文字コードを「UTF-8」に設定してあげて下さい。

これをしないと、デバッガーからの日本語メッセージが文字化けしてしまいます。

これでよ~やく、ダイアログ下部の「適用」ボタンと「デバッグ」ボタンを順にクリックすることで、デバッガーが起動しプログラムの転送が開始されます。

「デバッグ構成」ダイアログ - 9


プログラムの転送が終わると、以下のようにスタートアップ・アドレスでプログラムが止まった状態になります。

「e2 Studio」 - 3


ここからプログラムを続行してみましょう。

画面上部の「」ボタンをクリックすると、プログラムが続行されます。

「e2 Studio」 - 4


はい、ここで長らく放置していた「TeraTerm」を見てみましょう。

以下のように、サンプルプログラムが動作していることが確認できます。

TeraTermの表示


プログラムを停止する場合は、画面上部の「」ボタンをクリックします。

停止させてみましょう。

「e2 Studio」 - 5


ついでに「e2 studio」の表示を「デバッグモード」から「C/C++モード」に変更します。

「e2 studio」の画面右上のボタンで切り替えができます。「C/C++」ボタンをクリックします。

「e2 Studio」 - 6


ブレークポイントを仕掛けましょう。

画面右の「プロジェクト・エクスプローラー」のソースコードリストの中から「sample1.c」をダブルクリックし、ソースコードを表示します。

このソースコードの丁度中盤くらい、メインタスクの始めに仕掛けましょうか。

ブレークポイントは、ソースコードビューの左端をダブルクリックすることにより丸が表示され、セットすることができます。

(解除したい場合もダブルクリックします。丸が消えます。)

「e2 Studio」 - 7


これで本当にブレークポイントがかかるのか、試してみましょう。

画面上部にある緑色の「虫マーク」。

その脇に「▼」ボタンがありますので、それをクリック。

すると今後は、さっき色々と入力した「OBJ」のデバッグ設定が登録されていますので、これをクリックすると、デバッガが起動します。

「e2 Studio」 - 8


しばらくして、プログラムの転送と書き込みが完了すると、前と同じようにスタートアップ・アドレスでプログラムが停止しますので、画面上部の「」ボタンをクリックして、プログラムを続行させます。

「e2 Studio」 - 9


程なくして、以下のように正しくブレークポイントを仕掛けた位置でプログラムが停止するはずです。

ここからは、「F6」キーでステップオーバー、「F5」キーでステップインなど、おなじみの操作が使用できます。

因みに、ステップオーバーやステップインなどを行っている時に命令が飛んでしまったり前後したりする場合は、最適化のせいです。

デバッグ時は、このページ(TOPPERS/ASPのビルドからデバッグまで~サンプルプロジェクトのデバッグ)の「サンプルプログラムのデバッグ」の項目を参考に最適化を解除しましょう。

「e2 Studio」 - 10


さて、RL78版は次回で最終回。

色々な仕様(使用)上の注意事項を書いていきたいと思います。

キリ良く年内…。


<続く>

2022年12月11日日曜日

TOPPERS/ASP - RL78版 その4

前回からの続きです。

このテーマを最初からご覧になる場合はこちらからどうぞ。


プロジェクトの作成

前々回までの作業で、開発環境をインストールし、RL78版TOPPERS/ASPのソースコードをダウンロードし、それをコマンドラインでビルドするまでを行いました。

そして、前回ではルネサスエレクトロニクスのIDEである「e2 studio」のインストールを行いました。

そこで、今回はこのIDE上でビルドが行えるようにプロジェクトを作成しましょう。

前回閉じてしまった「e2 studio」を立ち上げて下さい。

そして、画面左上のメニューから「File」→「新規」→「Makefile Project with Existing Code」の順にクリックしていきましょう。

「e2 studio」 - 1


以下のダイアログが表示されたら必要事項を入力します。

ここでは、以下の通り。


プロジェクト名:<任意のプロジェクト名(ここでは「asp_1.9.2」)>

既存のコードの場所:C:\cygwin64\home\<ユーザ名>\asp_1.9.2

インデクサー設定に対するtoolchain:<なし>


入力が終わったら「終了」ボタンをクリックします。

「新規プロジェクト」ダイアログ

その後は元の画面に戻ります。

何の変化もないようですが、画面右上の「-」マーク(マウスのカーソルを置くと「最小化」と表示されます)をクリックしてみてください。

「e2 studio」 - 2

以下のように表示が変化し、そのうち左側の「プロジェクト・エクスプローラー」というタブの中には先程入力したプロジェクト名のディレクトリが表示されているはずです。

「e2 studio」 - 3


次に、画面上部のメニューから「ウィンドウ」→「ビューの表示」→「ビルドターゲット」の順にクリックしていきましょう。

「e2 studio」 - 4


これにより、画面下右側のウィンドウに「ビルドターゲット」タブが追加されたはずです。

「e2 studio」 - 5


以降の作業は、このページ(TOPPERS/ASPのビルドからデバッグまで~サンプルプロジェクトのデバッグ)の「プロジェクトのクリーンとビルド」の項目を参考に続行してください。

この「e2 studio」は、Eclipseベースなので、上記のページと同じ方法で作業を続行できます、

但し、文中の「Makeターゲット」タブは、先程表示させた「ビルドターゲット」タブに置き換えてお読みください。

名称は違いますが、これらのタブは同じ働きをするものです。

「e2 studio」の画面右側に以下のようなアイコンが表示されて、これらをダブルクリックすることによりビルドができるまでを確認してください。

「e2 studio」 - 6

「realclean」や「all」など、アイコンをダブルクリックすることにより、その操作に応じたメッセージが画面下部の「コンソール」タブ内に表示されるはずです。

「e2 studio」 - 7


次回はいよいよ実機「RL78/G14 Fast Prototyping Board」評価ボードへプログラムを転送して、実行/デバッグを行っていきますね~。


<続く>

2022年12月5日月曜日

TOPPERS/ASP - RL78版 その3

前回からの続きです。

このテーマを最初からご覧になる場合はこちらからどうぞ。


開発環境の構築(IDE編)

続きまして、RL78用のIDEのインストールを行います。

IDEは、ルネサスエレクトロニクス社純正の「e2 studio」というものを使用します。

以下のページでダウンロードします。


https://www.renesas.com/jp/ja/software-tool/e-studio

統合開発環境 e2 studio 2022-10 Windows用インストーラ」という項目をクリックすると…

「e2 studio」ダウンロードページ - 1


以下のようなポップアップが表示されます。

ここでは難しく考えずに「Confirm」をクリックします。

「e2 studio」ダウンロードページ - 2


すると以下のページが開きます。

なんと!インストールのためにはユーザー登録が必要!?

マーケティング的には重要なのはわかりますが、個人情報に気を使わなければならない時代、ただ試しにチョットだけ使ってみたい人だっているのだから、もうちょっと寛大でも良いと思うのですが…。

そのスジの方なら「My Renesas」のアカウントを持っている方もいるとは思いますが、そうでない方は「登録」をクリックして、アカウントの作成とログインをお願いします。

(私は、こういう面倒な作業で心が折れるタイプ…。)

「e2 studio」ダウンロードページ - 3


はい、一度ログインしてしまえばダウンロードできます。

トップページに戻って「統合開発環境 e2 studio 2022-10 Windows用インストーラ」という項目をクリックです。

「e2 studio」ダウンロードページ - 4


以下のようなページが表示されますので「同意します」をクリック。

ダウンロードが始まります。

「e2 studio」ダウンロードページ - 5


ダウンロードが完了すると「setup_e2_studio_20xx-xx.zip」というファイルが生成されますので、これを解凍します。

解凍されて生成された「setup_e2_studio_20xx-xx.exe」というファイル、これがインストーラー本体ですので、ダブルクリック!

すぐに以下のポップアップが表示されますので、「All Users」をクリックします。
「e2 studio」インストーラー - 1


以下の表示では「Next」をクリック!

「e2 studio」インストーラー - 2


次の表示ではお目当ての「RL78」のみにチェックを入れて「Next」をクリックします。

「e2 studio」インストーラー - 3


次の表示ではニッポンジンなら「Japanese Language Support」のみにチェックを入れて「Next」をクリックします。

多分IDEの日本語表示化のオプションでしょう。

「e2 studio」インストーラー - 4


以下2つの画面では「Next」連打!

「e2 studio」インストーラー - 5


「e2 studio」インストーラー - 6


出ました!ライセンスの同意。

同意しなければ、そこで試合終了だよ…。

ソフトウェア契約の条件に同意します。」を選択した後に「Next」をクリックです。

「e2 studio」インストーラー - 7


以下の画面も「Next」をクリック…。

「e2 studio」インストーラー - 8


これで最後かな?

インストール」をクリックしてください。

「e2 studio」インストーラー - 9


インストールが始まりましたが、間髪入れずVisual C++のランタイム(だと思う…)のインストールが開始されます。

これは、放っておけば勝手に終わります。

「e2 studio」インストーラー - 10


Visual C++のランタイムが勝手に終了すると、メインのインストーラーに処理が戻りますが、その後以下のようなポップアップが3回ほど表示されます。

これは多分、デバッガーのデバイスドライバのインストール許可なので、全て「インストール」ボタンをクリックしてインストールしましょう。

「e2 studio」インストーラー - 11


しばらくすると、ルネサス純正の「RL78」コンパイラのインストールが始まります。

前回「GCC」コンパイラをインストールしたので、コチラは使わないんですけど、一応インストールしてあげましょう。

ちなみに、GCCよりも純正コンパイラの方がパフォーマンスが良いという噂があります。

そのうち純正コンパイラに対応したカーネルも作りましょうかね?

以下、赤丸の順にクリックしていって下さい。

ルネサス純正の「RL78」コンパイラのインストーラー - 1


ルネサス純正の「RL78」コンパイラのインストーラー - 2


ルネサス純正の「RL78」コンパイラのインストーラー - 3


ルネサス純正の「RL78」コンパイラのインストーラー - 4


インストール作業が始まります。

ルネサス純正の「RL78」コンパイラのインストーラー - 5


以下の画面が表示されると少なくともルネサス純正の「RL78」コンパイラのインストール作業は終了です。

完了」をクリックしましょう。

ルネサス純正の「RL78」コンパイラのインストーラー - 6


この後、ルネサス純正の「RL78」コンパイラと同様、以下のソフトウェアのインストールが始まります。


●SMSアセンブラ

●ルネサスMCUツール・ライセンスマネージャ

●LLVM「RL78」コンパイラ


要領は一緒なので、インストールを続行しましょう。

…ゆっくりとコーヒー飲んでる暇もないなぁ…。


さて、最後の「LLVM「RL78」コンパイラ」のインストールが終了すると以下の画面が表示されます。

ここでは「Launch e2 studio?」にチェックを入れてから「OK」をクリックして下さい。

これにより「OK」をクリックすると「e2 studio」が自動的に起動するはずです。

「e2 studio」インストーラー - 12


以下のようなスプラッシュスクリーンが表示されます。

初回起動には、相当な時間がかかりますのでお覚悟を。

「e2 studio」のスプラッシュスクリーン


以下の表示が現れます。

あ~これ、絶対「Eclipse」ですわ…。

前回のMSP430版で使用したTIのIDEである「Code Composer Studio」もEclipseベースでしたが、ルネサスよ、オマエもか~。

まあ、Eclipse使い慣れている人にとっては何の問題もありませんが、若干古臭いんだよなぁ…。

ここは、デフォルトのワークスペースの場所で「起動」をクリックしましょう。

e2 studioランチャー


次に、以下の表示が出たら「登録」をクリックして下さい。

「Toolchain Integration」ダイアログ


以下のポップアップも「OK」をクリック。

「コード生成COMコンポーネントの登録」ポップアップ - 1


すると、以下のポップアップが表示されます。

これも「OK」をクリック。

あとで再起動しないとダメらしい…。

「コード生成COMコンポーネントの登録」ポップアップ - 2


以下のダイアログが表示されますが、これの入力はお好みに応じて。

面倒くさかったら別に「キャンセル」でも支障はないようです。

「My Renesasログイン」ダイアログ


以下も「いいえ」で良いでしょう。

「セキュアストレージ」ポップアップ


はい、そうすると以下の画面が残ります。

これが「e2 studio」です!

「e2 studio」


以上で「e2 studio」のインストールは完了です。

「コード生成を使用するには再起動してね!」って言われているので、一旦「e2 studio」を終了させておきましょう。


たかがIDEのインストール作業の割には、面倒くさかった忙しかったですね!

次回は、実際にこの「e2 studio」を使っていきましょう!


<続く>

TOPPERS/ASP - Arduino UNO R4版 その7

前回からの続き です。 このテーマを最初からご覧になる場合は こちら からどうぞ。 プログラムの転送とデバッグ ターゲットの「Arduino UNO R4」とデバッガの「E2 emulator Lite」を 前々回 作成したケーブルで接続します。 こんな感じ。 これからTOPPE...