TOPPERS/ASP - RL78版


※この記事は、[筆者自身のブログ](https://www.madogiwakoubou.com/)に連載していたものを読みやすく1ページにまとめたダイジェスト版です。無断転載などではありませんのでご了承ください。

# 概要
半導体メーカー大手、ルネサスエレクトロニクスの16Bitマイコン「<font color="Red">RL78</font>」です。
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917131/5b3f1300-af4e-54d0-55d2-e7f201d20180.jpeg">

ルネサスエレクトロニクスは、いくつかの種類の16Bitマイコンを販売していますが、新規の採用を推奨されているものは、このシリーズと「R8C」だけです。
むか～しむかし、日立製作所は「<font color="Red">H8</font>」という16Bitマイコンを売っていました。
一方同じ頃、三菱電機が「<font color="Red">M16C</font>」という16Bitマイコンを売っていました。
ある時、この2社それぞれの半導体部門が分社、その半導体部門同士が合併し「ルネサステクノロジ」という会社ができました。
ルネサステクノロジは「M16C」の後継として、新たに「<font color="Red">R8C</font>」という16Bitマイコンを作りました。
しばらくして、そこへNECエレクトロニクスがやってきました。
NECエレクトロニクスは「<font color="Red">78K0R</font>」という16Bitマイコンを売っていました。
NECエレクトロニクスは仲間になりたそうにルネサステクノロジを見ています。

**な なんと 半導体メーカーたちが・・・！**
**半導体メーカーたちが どんどん がったいしていく！**

**なんと ルネサスエレクトロニクスに なってしまった！**

ルネサステクノロジとNECエレクトロニクスが合併、「ルネサスエレクトロニクス」という会社ができました。
ルネサスエレクトロニクスは「78K0R」の後継として、新たに「<font color="Red">RL78</font>」という16Bitマイコンを作りました。
さて、合併を繰り返して成立したルネサスエレクトロニクスは、この時点で多くの16Bitマイコンのシリーズを抱えていることになりました。
当然、同じようなカテゴリーの製品が重複するのは経営効率が悪いのでシリーズの淘汰が始まります。
まず「M16C」と「78K0R」に関しては、それぞれの後継機種が出ているので収束。
「R8C」は低コスト化、コンパクト化を推し進めて、さながら8Bitマイコンとしての立ち位置に移行。
残るは「H8」と「RL78」です。
この頃、私は「H8」を仕事に趣味にとジャンジャン愛用しており、性能、入手性の良さ、ラインナップの豊富さやペリフェラルの使い易さを気に入っていたので、「H8」だけ後継機種が出ていなくとも今後もメーカーで開発が続けられるものと信じていました。
<font color="Red">が…！</font>
2010年代初頭、ルネサスエレクトロニクスは「H8」シリーズの開発を収束、16Bitマイコンの開発リソースを「RL78」シリーズに集中する…というアナウンスを出しました。
<font color="Red">なんてこった。</font>
一般論として「RL78」が「H8」よりも優れているから、こういう結論になったはず。
ならば「RL78」とは一体！？
そういや「RL78」って地球連邦軍のMSみたいだな。
<font color="Red">見せてもらおうか…「H8」を倒した「RL78」の性能とやらを！</font>
…というわけで「μITRON4.0」準拠のRTOS（リアルタイムOS）である[TOPPERS/ASP](https://www.toppers.jp/asp-kernel.html)を移植してみました。
（なんでやねん！）

# 必要なもの
今回は、RL78の中でも比較的ハイエンドな「<font color="Red">RL78/G14</font>」を搭載した「<font color="Red">RL78/G14 Fast Prototyping Board</font>」という評価ボードを使います。
[こちら](https://www.mouser.jp/ProductDetail/Renesas-Electronics/RTK5RLG140C00000BJ?qs=Cb2nCFKsA8q6ZSFjbK8NFg%3D%3D&mgh=1&vip=1&gclid=Cj0KCQiA4OybBhCzARIsAIcfn9mReptwobNAIrN7EZfDxpnDHa5eo0RTv2nmOIA8ucby-2GOM8dT4ywaAkTlEALw_wcB)で買うと、<font color="Red">3,300円</font>くらいです。
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917131/fbc97c69-2518-4334-cb9b-554384e4f9e3.jpeg">


他の型番への移植も可能ですが、TOPPERS/ASPを搭載して動作させるならROM：128KB／RAM：8KB以上の容量を持つ型番を選びましょう。
また「RL78/G14 Fast Prototyping Board」を使用する場合、デバッガーは必要ありません。
この評価ボードには既にデバッガーも実装されています。
「RL78/G14 Fast Prototyping Board」を使用しない場合は「E2 emulator Lite」というRL78に対応したデバッガを使用する必要があります。
[こちら](https://akizukidenshi.com/catalog/g/gM-10459/)で買うと、<font color="Red">12,000円</font>くらいですね。
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917131/9de01a74-396f-e05e-01f2-227cedfd0edf.jpeg">

デバッガーとしては良心的な価格ですが、それを搭載している「RL78/G14 Fast Prototyping Board」がそれより遥かに安価なので、如何にお買い得かが分かりますね。
この記事では「RL78/G14 Fast Prototyping Board」を使用した場合の例を説明していきたいと思います。

# ダウンロード／GitHub
ソースコードの入手は、[こちら](https://github.com/RyutaroMorita/asp_rl78_gcc)からどうぞ。
なるべく定期的にメンテナンスするようにしていますので、動きがおかしいな？という場合は最新版に更新をお願いします。
それでもダメな場合はコメントください。

# 開発環境の構築（コンパイラ編）
コレがなくちゃ始まらない！
まずはRL78用のコンパイラのインストールを行いましょう。
以下のページでダウンロードします。

https://llvm-gcc-renesas.com/ja/rl78/rl78-download-toolchains/

上の方には「LLVM」というコンパイラが並んでいますね。
今回使用するのは「GCC」ですので下にスクロールします。
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917131/3c7a6760-d9c5-4e27-8ac0-c9d00301d26f.png">

「<font color="Red">GCC</font>」ありましたね？
早速ダウンロードしましょう！
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917131/43e8d316-06d7-b652-dc8c-22279db9f5c2.png">

すると、以下のようにログインを要求されます。
すでに「Open Source Tools for Renesas」のアカウントをお持ちの方は、入力してログインしてください…って、ほとんどの方は持っていないですよね？
その場合は面倒ですけど「<font color="Red">登録</font>」をクリックしてアカウントを作成後にログインしてください。
アカウントを作成したからと言って、広告メールがバンバン来るようになるとか、そんなことはありません。
まあ、年に数回更新の情報がメールで来るくらいです。
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917131/9cccac47-6c21-6a44-8bf2-4c80e7d4c511.png">

どうにかこうにかログインに成功したら、以下の画面に戻り、もう一度ダウンロードを試みましょう。
今度はダウンロードできるはずです。
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917131/43e8d316-06d7-b652-dc8c-22279db9f5c2.png">

ダウンロードが完了すると「<font color="Red">gcc-x.x.x.20xxxx-GNURL78-ELF.exe</font>」というファイルが生成されますので、これをダブルクリック！
程なくして、以下の表示が出ます。
「推奨」とありますので「<font color="Red">すべてのユーザー用にインストール</font>」をクリックしましょう。
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917131/b4e6a351-8374-9cab-1536-9f376d1cbda0.png">

インストーラーが起動します。
ここは「<font color="Red">次へ</font>」ボタンをクリックします。
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917131/d38909c5-6324-3ba1-29f2-756a8d1c9462.png">

同意せざるを得ない！
「<font color="Red">同意する</font>」を選択して「<font color="Red">次へ</font>」ボタンをクリックします。
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917131/3e57cb94-cfd9-483e-8505-524c377b2b55.png">

しばらくは「<font color="Red">次へ</font>」ボタンを連打です。
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917131/4dddb054-0721-3d16-2ac5-6325c42048f1.png">

<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917131/8018cc77-7877-ee0f-a0b6-7ed8b21aa472.png">

<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917131/5b8b6596-7b06-86c1-862e-a8790a81ddb2.png">

<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917131/57c5be0c-3418-85dc-461b-7d28b04bc548.png">

これで最後か？
「<font color="Red">インストール</font>」ボタンをクリックしましょう。
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917131/47cff85f-e564-d2c6-98be-0399ab8bbb23.png">

やっとこさインストールが始まります。
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917131/f520a761-80c0-0221-dad6-b79dbd6847e1.png">

インストールが終了すると以下の画面になります。
これも「<font color="Red">次へ</font>」をクリック！
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917131/7dc6c304-bc30-1e3f-1bbb-424693f43a8e.png">

インストールはこれで完了！
「<font color="Red">完了</font>」ボタンをクリックしてください。
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917131/e000de96-a698-c459-95bc-cccb4a49a7ab.png">

インストールしたツールチェーンの環境変数の確認を行います。
ツールチェーンは、先程のインストール作業により既に以下のディレクトリにセットアップされているはずです。
「ProgramData」以下だなんて、ちょっと変わった所にインストールされますね…。
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917131/f8e6eb3d-5469-b2db-bbaf-b46872889b4a.png">

環境変数の設定方法は他のページで調べていただくか、あるいは手前味噌で恐縮ですが、私のブログのページ（[TOPPERS/ASPのビルドからデバッグまで～GNUツールチェーンの導入](https://www.madogiwakoubou.com/p/toppersaspgnu.html)）の「[環境変数の設定](https://www.madogiwakoubou.com/p/toppersaspgnu.html#path)」の項目を御覧ください。
ただし、パスは…

**C:\Program Files (x86)\GNU Tools ARM Embedded\7 2017-q4-major\bin**

…となっているところを…

**C:\ProgramData\GCC for Renesas RL78 4.9.2.202201-GNURL78-ELF\rl78-elf\rl78-elf\bin**

に置き換えてください。
インストーラーが自動的に設定するバージョンでは、一番上に入れられちゃうんですね。
特に問題はないけど…<font color="Red">不躾な！</font>
こんな感じ…。
<img width="320" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917131/57142abf-c399-900f-6fd7-c5a9324eaa6a.png">

また、このページの「[パスの確認](https://www.madogiwakoubou.com/p/toppersaspgnu.html#check)」の項目で打ち込むコマンドも、以下のように変わります。

**＞ rl78-elf-gcc --version**
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917131/59ab2833-7337-9aa2-e88a-c1650fa37a61.png">

続きまして「<font color="Red">Cygwin</font>」のインストールを行います。
基本的には「gcc-core」、「make」、「diffutils」、「perl」と「git」の5つのパッケージを含むようなCygwin環境を構築すれば良いです。
もしよろしければ、私のブログのページ（[TOPPERS/ASPのビルドからデバッグまで～Cygwinの導入](https://www.madogiwakoubou.com/p/toppersaspcygwin.html)）を参考にしてください。
「Cygwin」がインストールできたら、ここまでの作業が上手くいっているかどうか確認しておきましょう。
次のページ（[TOPPERS/ASPのビルドからデバッグまで～サンプルプロジェクトのビルド](https://www.madogiwakoubou.com/p/toppersasptoppers.html)）を参照してください。
ただし、今回使用するソースコードはこのページの冒頭の<font color="Red">「NUCLEO-F401RE STM32 Nucleo-64」開発ボード用のTOPPERS/ASPカーネル簡易パッケージではなく、「RL78」用のものを使います。</font>
以下のコマンドでソースコードのクローンを行います。

**$ git clone https://github.com/RyutaroMorita/asp_rl78_gcc.git**
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917131/79b48f55-7cbb-4e83-eed5-18b70d54d78e.png">

ダウンロードとGithub、いずれの場合も「asp_rl78_gcc」というディレクトリの名前を「asp_1.9.2」などと改名すると、上記のページと同じ状況になります。
また、今回は<font color="Red">「OBJ」ディレクトリを作成する必要はありません。</font>
これは既に用意されていますので、そのまま「OBJ」ディレクトリに移動し「make～」コマンドを実行してください。

# 開発環境の構築（IDE編）
続きまして、RL78用のIDEのインストールを行います。
IDEは、ルネサスエレクトロニクス社純正の「<font color="Red">e2 studio</font>」というものを使用します。
以下のページでダウンロードします。

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

「<font color="Red">統合開発環境 e2 studio 2022-10 Windows用インストーラ</font>」という項目をクリックすると…
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917131/69cc191c-9d7f-f902-5b86-d7910483daba.png">

以下のようなポップアップが表示されます。
ここでは難しく考えずに「<font color="Red">Confirm</font>」をクリックします。
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917131/630d0df5-bd7b-f7a5-a69e-f35fd15e5ca2.png">

すると以下のページが開きます。
なんと！<font color="Red">インストールのためにはユーザー登録が必要！？</font>
マーケティング的には重要なのはわかりますが、個人情報に気を使わなければならない時代、ただ試しにチョットだけ使ってみたい人だっているのだから、もうちょっと寛大でも良いと思うのですが…。
そのスジの方なら「My Renesas」のアカウントを持っている方もいるとは思いますが、そうでない方は「<font color="Red">登録</font>」をクリックして、アカウントの作成とログインをお願いします。
（私は、こういう面倒な作業で心が折れるタイプ…。）
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917131/62aa9ff4-496a-b3d7-3dc2-66eb17531425.png">

はい、一度ログインしてしまえばダウンロードできます。
トップページに戻って「<font color="Red">統合開発環境 e2 studio 2022-10 Windows用インストーラ</font>」という項目をクリックです。
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917131/69cc191c-9d7f-f902-5b86-d7910483daba.png">

以下のようなページが表示されますので「<font color="Red">同意します</font>」をクリック。
ダウンロードが始まります。
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917131/d7b6b04d-2359-f796-ec89-4ea553a99f89.png">

ダウンロードが完了すると「<font color="Red">setup_e2_studio_20xx-xx.zip</font>」というファイルが生成されますので、これを解凍します。
解凍されて生成された「<font color="Red">setup_e2_studio_20xx-xx.exe</font>」というファイル、これがインストーラー本体ですので、ダブルクリック！
すぐに以下のポップアップが表示されますので、「<font color="Red">All Users</font>」をクリックします。
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917131/9e0dac91-936d-2b74-811c-099555b8febc.png">

以下の表示では「<font color="Red">Next</font>」をクリック！
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917131/7c1ea344-be3a-e478-c8cc-9134ae4f667f.png">

次の表示ではお目当ての「<font color="Red">RL78</font>」のみにチェックを入れて「<font color="Red">Next</font>」をクリックします。
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917131/de72dfc5-fd7e-099d-9096-2014092616a8.png">

次の表示ではニッポンジンなら「<font color="Red">Japanese Language Support</font>」のみにチェックを入れて「<font color="Red">Next</font>」をクリックします。
多分IDEの日本語表示化のオプションでしょう。
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917131/e07c40c2-f9ab-7be9-927a-9aa3ac6d98bb.png">

以下２つの画面では「<font color="Red">Next</font>」連打！
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917131/d2ff40b2-a414-221d-dcb3-adc995d70a2a.png">

<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917131/4527c352-c7e1-c5e0-0cda-43803940f212.png">

出ました！ライセンスの同意。
<font color="Red">同意しなければ、そこで試合終了だよ…。</font>
「<font color="Red">ソフトウェア契約の条件に同意します。</font>」を選択した後に「<font color="Red">Next</font>」をクリックです。
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917131/3adc58c2-f77b-1636-6d3a-a3e0a3034858.png">

以下の画面も「<font color="Red">Next</font>」をクリック…。
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917131/c4244c89-8e6d-5ac3-bb6b-347c721143d2.png">

これで最後かな？
「<font color="Red">インストール</font>」をクリックしてください。
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917131/e648f33a-744e-297e-c336-c1891b7fc299.png">

インストールが始まりましたが、間髪入れずVisual C++のランタイム（だと思う…）のインストールが開始されます。
これは、放っておけば勝手に終わります。
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917131/e0937952-0a46-c736-84a7-e024652061d4.png">

Visual C++のランタイムが勝手に終了すると、メインのインストーラーに処理が戻りますが、その後以下のようなポップアップが３回ほど表示されます。
これは多分、デバッガーのデバイスドライバのインストール許可なので、全て「<font color="Red">インストール</font>」ボタンをクリックしてインストールしましょう。
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917131/c0d25b6c-2d0e-8556-15f1-85c7380a675b.png">

しばらくすると、ルネサス純正の「RL78」コンパイラのインストールが始まります。
先程「GCC」コンパイラをインストールしたので、コチラは使わないんですけど、一応インストールしてあげましょう。
ちなみに、<font color="Red">GCCよりも純正コンパイラの方がパフォーマンスが良いという噂があります。</font>
そのうち純正コンパイラに対応したカーネルも作りましょうかね？
以下、<font color="Red">赤丸</font>の順にクリックしていって下さい。
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917131/b7182ef9-a109-ec8b-a3c1-84c8781a4bd4.png">

<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917131/3d330445-e612-1aa8-04ed-d2942027a282.png">

<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917131/c36e4cdf-a005-1766-88bf-734bdd59c1e6.png">

<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917131/f1a69ecd-41f5-692f-4559-098e0ab2adb6.png">

インストール作業が始まります。
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917131/47983274-3d6a-559c-0a83-f64cee630160.png">

以下の画面が表示されると少なくともルネサス純正の「RL78」コンパイラのインストール作業は終了です。
「<font color="Red">完了</font>」をクリックしましょう。
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917131/6698eb00-16b6-ecbf-69fc-ecb54ea365af.png">

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

**●SMSアセンブラ**
**●ルネサスMCUツール・ライセンスマネージャ**
**●LLVM「RL78」コンパイラ**

要領は一緒なので、インストールを続行しましょう。
<font color="Red">…ゆっくりとコーヒー飲んでる暇もないなぁ…。</font>

さて、最後の「LLVM「RL78」コンパイラ」のインストールが終了すると以下の画面が表示されます。
ここでは「<font color="Red">Launch e2 studio?</font>」にチェックを入れてから「<font color="Red">OK</font>」をクリックして下さい。
これにより「<font color="Red">OK</font>」をクリックすると「e2 studio」が自動的に起動するはずです。
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917131/dde6c82e-d5d1-2db0-9478-cbfabce6ca15.png">

以下のようなスプラッシュスクリーンが表示されます。
初回起動には、相当な時間がかかりますのでお覚悟を。
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917131/b6601a89-f7ee-50c7-9e0d-356ac6d9224e.png">

以下の表示が現れます。
<font color="Red">あ～これ、絶対「Eclipse」ですわ…。</font>
[前回のMSP430版](https://qiita.com/RyutaroMorita/items/9526a4cb631a7da90d40)で使用したTIのIDEである「Code Composer Studio」もEclipseベースでしたが、ルネサスよ、オマエもか～。
まあ、Eclipse使い慣れている人にとっては何の問題もありませんが、若干古臭いんだよなぁ…。
ここは、デフォルトのワークスペースの場所で「<font color="Red">起動</font>」をクリックしましょう。
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917131/5143faef-91f7-9bbc-efb8-0cde30569b29.png">

次に、以下の表示が出たら「<font color="Red">登録</font>」をクリックして下さい。
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917131/348e27b1-1a97-077c-9b8a-682bb0ff8442.png">

以下のポップアップも「<font color="Red">OK</font>」をクリック。
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917131/19ddd68d-2724-14c3-a9ec-f5aed7ee5b88.png">

すると、以下のポップアップが表示されます。
これも「<font color="Red">OK</font>」をクリック。
あとで再起動しないとダメらしい…。
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917131/aeb06723-f737-eb94-afc6-e89c4327e5db.png">

以下のダイアログが表示されますが、これの入力はお好みに応じて。
面倒くさかったら別に「<font color="Red">キャンセル</font>」でも支障はないようです。
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917131/29e02caa-b2c3-b0c3-7234-1030994531db.png">

以下も「<font color="Red">いいえ</font>」で良いでしょう。
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917131/8989c242-6154-80c9-9ba8-4b7f01f93c00.png">

はい、そうすると以下の画面が残ります。
これが「e2 studio」です！
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917131/fe6e7000-df72-01bd-ec2d-018702ffeb9e.png">

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

# プロジェクトの作成
ここまでの作業で、開発環境をインストールし、RL78版TOPPERS/ASPのソースコードをダウンロードし、それをコマンドラインでビルドするまでを行いました。
更にルネサスエレクトロニクスのIDEである「e2 studio」のインストールを行いました。
そこで、今回はこのIDE上でビルドが行えるようにプロジェクトを作成しましょう。
先程閉じてしまった「e2 studio」を立ち上げて下さい。
そして、画面左上のメニューから「File」→「新規」→「<font color="Red">Makefile Project with Existing Code</font>」の順にクリックしていきましょう。
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917131/2995d012-16ca-fadb-fdf2-9dc97e0e2738.png">

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

**プロジェクト名：＜任意のプロジェクト名（ここでは「asp_1.9.2」）＞**
**既存のコードの場所：C:\cygwin64\home\＜ユーザ名＞\asp_1.9.2**
**インデクサー設定に対するtoolchain：＜なし＞**

入力が終わったら「<font color="Red">終了</font>」ボタンをクリックします。
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917131/0704f90f-13bb-ce50-9fd5-bcc72cdf563f.png">

その後は元の画面に戻ります。
何の変化もないようですが、画面右上の<font color="Red">「-」マーク</font>（マウスのカーソルを置くと「最小化」と表示されます）をクリックしてみてください。
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917131/ad4cb0af-6aa7-1453-1c9a-ca943530f500.png">

以下のように表示が変化し、そのうち左側の「プロジェクト・エクスプローラー」というタブの中には先程入力したプロジェクト名のディレクトリが表示されているはずです。
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917131/e5253d0e-7b5c-66f2-6781-32813c668b2e.png">

次に、画面上部のメニューから「ウィンドウ」→「ビューの表示」→「<font color="Red">ビルドターゲット</font>」の順にクリックしていきましょう。
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917131/b0da9f6b-96e7-2a72-3f94-e7a090c7b32d.png">

これにより、画面右側のウィンドウに「<font color="Red">ビルドターゲット</font>」タブが追加されたはずです。
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917131/7f2bc415-86ce-d254-f604-79df186f0561.png">

以降の作業は、このページ（[TOPPERS/ASPのビルドからデバッグまで～サンプルプロジェクトのデバッグ](https://www.madogiwakoubou.com/p/toppersasp_21.html)）の「[プロジェクトのクリーンとビルド](https://www.madogiwakoubou.com/p/toppersasp_21.html#clean_build)」の項目を参考に続行してください。
（手前ブログへの誘導みたいになっちゃって恐縮です。
アファリエイトなんかはやってませんので、そういうのキライな方でも安心して訪れてみてください。）
この「e2 studio」は、Eclipseベースなので、上記のページと同じ方法で作業を続行できます、
但し、文中の「Makeターゲット」タブは、先程表示させた「ビルドターゲット」タブに置き換えてお読みください。
名称は違いますが、これらのタブは同じ働きをするものです。
「e2 studio」の画面右側に以下のようなアイコンが表示されて、これらをダブルクリックすることによりビルドができるまでを確認してください。
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917131/bbc749c3-9990-bd3b-c55c-4a9e22c4e865.png">

「realclean」や「all」など、アイコンをダブルクリックすることにより、その操作に応じたメッセージが画面下部の「<font color="Red">コンソール</font>」タブ内に表示されるはずです。
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917131/682858a2-6b05-6a0b-c7dc-a3d4fa628d9d.png">

# プログラムの転送とデバッグ
早速、評価ボード「<font color="Red">RL78/G14 Fast Prototyping Board</font>」とパソコンを繋げたいと思うのですが、一つ問題が！
こういう評価ボードの場合、USBのコネクタが付いていて、これでパソコンと繋げると給電と同時にデバッガーのファンクション、加えて仮想シリアルポートとしても認識されて、シリアル通信によるデバッグ出力がすぐに使える～って思うでしょ？
<font color="Red">ところが、この「RL78/G14 Fast Prototyping Board」はそうなっていないんです。</font>
この評価ボードに付いているUSBのコネクタは給電とデバッガーのファンクションだけで、パソコンと接続しても仮想シリアルポートとしては認識されません。
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917131/3df33654-1efd-1172-a327-1a717fca3251.jpeg">

これからTOPPERS/ASPのサンプルプログラムを動かす際には、動作確認のためにどうしてもシリアルポートが必要です。
そこで、以下のような市販のUSB／シリアル通信変換ケーブルを用意します。
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917131/241ef39a-d99d-1a1b-fccc-237215c5c40d.jpeg">

シリアル通信をするために必要なポートは、RXDとTXDとGNDの三本ですね。
以下の<font color="Red">赤い四角で囲った端子</font>を使いましょう。
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917131/6606298b-0d31-03b2-ce4c-464d51236f91.png">

評価ボードからこうやって<font color="Gray">GND</font>と<font color="Blue">RXD</font>と<font color="Red">TXD</font>と、それぞれの線を出してやって…
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917131/e905fd30-aa88-327e-e648-dffe88bc534b.jpeg">

USB／シリアル通信変換ケーブル側の配線は、上から<font color="Red">TXD</font>、<font color="Blue">RXD</font>、<font color="Gray">GND</font>の順番でこんな感じ。
これでシリアルポートの問題は解決っと。
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917131/2ddaaeb4-d776-acf6-6058-58ac6453ac3a.jpeg">

続いて、このUSB／シリアル通信変換ケーブルをパソコンに繋いでみましょう。
パソコン上でデバイスマネージャーを開きます。
ポート（COMとLPT）のサブカテゴリーとして「USB Serial Port」というポートが追加されているはずです。
（私のパソコンでは、「COM15」として認識されていますね。）
このポート番号、覚えておいて下さい。
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917131/1a63eb6f-8eae-b48b-1432-13aed335a671.png">

ここで、評価ボードとパソコンもUSBケーブルで繋げちゃいましょ。
ご覧の通り、通電します。
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917131/51fce75c-31ba-91ca-e729-66fd9891713f.jpeg">

次に「<font color="Red">TeraTerm</font>」をご用意ください。
インストールしていない方は、このページ（[TOPPERS/ASPのビルドからデバッグまで～サンプルプロジェクトのデバッグ](https://www.madogiwakoubou.com/p/toppersasp_21.html)）の「[TeraTermの導入](https://www.madogiwakoubou.com/p/toppersasp_21.html#teraterm)」の項目を参考にしてください。
もちろん、シリアル通信のターミナルであれば、他のものもお使いいただけます。
今回のTOPPERS/ASPのサンプルプログラムは、シリアル通信のメッセージを出力しますので、先程「<font color="Red">USB Serial Port</font>」として認識されたシリアルポート番号でターミナルを立ち上げておきましょう。
設定は、こんな感じです。
ボーレートは「9600」です。
（私のパソコンは、USB／シリアル通信変換ケーブルをCOM15として認識していました。）
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917131/705f572f-67e9-75a8-cec7-1fa1b2a66f5c.png">

さて、「e2 Studio」に戻りましょう。
まだサンプルプログラムをビルドしていない場合は、画面右側の「ビルド・ターゲット」タブの中、「OBJ」ディレクトリ直下の「<font color="Red">all</font>」をダブルクリックして、ビルドを完了させましょう。
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917131/9fa3ffd8-0b2e-f6a6-d133-d68ebebc5e0a.png">

次にデバッガの設定を行います。
画面上部にある緑色の「<font color="Green">虫マーク</font>」。
その脇に「▼」ボタンがありますので、それをクリック。
そこで現れた「<font color="Red">デバッグの構成</font>」という項目をクリックしましょう。
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917131/38915fe3-75f6-f06b-f6f2-f97c6af02410.png">

すると以下のようなダイアログが現れます。
左側のリストから「<font color="Red">Renesas GDB Hardware Debugging</font>」という項目をダブルクリックしてください。
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917131/46c89e13-bd27-54e6-ddfd-5b5d5c3d72fc.png">

ダイアログ右側がガラリと変わりましたね？
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917131/0a2c444e-a1c0-3864-b167-1b9bb9ed466e.png">

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


**名前：＜任意の構成名（ここでは「OBJ」）＞**
**プロジェクト：＜プロジェクト名（ここでは「asp_1.9.2」）＞**
**C/C++アプリケーション：C:\cygwin64\home\＜ユーザ名＞\asp_1.9.2\OBJ\asp.exe**
**Build Configuration：Use Active**
**「自動ビルドを無効にする」を選択**
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917131/537e7a36-8333-5e89-468b-6ae3ea241135.png">

お次は現在の「メイン」タブから「<font color="Red">Debugger</font>」タブへクリックして切り替えます。
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917131/57dde15f-43f8-50d8-1856-f74b05d01f77.png">

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

**Debug hardware：E2 Lite (RL78)**
**Target Device：R5F104ML**
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917131/dbba1886-507a-fdbf-81fc-b717aa5a634b.png">

さて、お次は現在の「GDB  Settings」タブから「<font color="Red">Connection Settings</font>」タブへクリックして切り替えます。
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917131/01e5e34d-799a-a3ac-9b91-d5836a8a9b13.png">

たくさん設定項目があるんですが、ここでは「<font color="Red">エミュレーターから電源供給</font>」の項目だけは忘れずに「<font color="Red">いいえ</font>」にしておいて下さい。
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917131/aad9967a-9b85-85ef-c12c-f36aea47eb4f.png">

最後にもう一丁！
現在の「Debugger」タブから「<font color="Red">共通</font>」タブへクリックして切り替えます。
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917131/3936a3ea-dac5-7f80-342a-b03a9a96d228.png">

エンコードの設定で「<font color="Red">その他</font>」に選択し、文字コードを「<font color="Red">UTF-8</font>」に設定してあげて下さい。
<font color="Red">これをしないと、デバッガーからの日本語メッセージが文字化けしてしまいます。</font>
これでよ～やく、ダイアログ下部の「<font color="Red">適用</font>」ボタンと「<font color="Red">デバッグ</font>」ボタンを順にクリックすることで、デバッガーが起動しプログラムの転送が開始されます。
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917131/14796d00-baf6-7c07-bd1e-504f0e2c4d1f.png">

プログラムの転送が終わると、以下のようにスタートアップ・アドレスでプログラムが止まった状態になります。
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917131/13e258d9-c7e3-31fe-e96e-cb22a74c495c.png">

ここからプログラムを続行してみましょう。
画面上部の「<font color="Red">▶</font>」ボタンをクリックすると、プログラムが続行されます。
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917131/5abc1408-b764-d8af-b66c-7743a5c687d9.png">

はい、ここで長らく放置していた「TeraTerm」を見てみましょう。
以下のように、サンプルプログラムが動作していることが確認できます。
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917131/f5b8fde1-8df9-0eb2-396c-a3882021f803.png">

プログラムを停止する場合は、画面上部の「<font color="Red">■</font>」ボタンをクリックします。
停止させてみましょう。
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917131/d4c7a836-ea01-d554-e781-15f7ea734725.png">

ついでに「e2 studio」の表示を「デバッグモード」から「C/C++モード」に変更します。
「e2 studio」の画面右上のボタンで切り替えができます。「<font color="Red">C/C++</font>」ボタンをクリックします。
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917131/25fd80b1-3c78-0a86-0c87-8a606b98303b.png">

ブレークポイントを仕掛けましょう。
画面右の「プロジェクト・エクスプローラー」のソースコードリストの中から「<font color="Red">sample1.c</font>」をダブルクリックし、ソースコードを表示します。
このソースコードの丁度中盤くらい、メインタスクの始めに仕掛けましょうか。
ブレークポイントは、ソースコードビューの左端をダブルクリックすることにより丸が表示され、セットすることができます。
（解除したい場合もダブルクリックします。丸が消えます。）
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917131/cb38cbf1-0dbd-481d-0205-9bc6b787dd69.png">

これで本当にブレークポイントがかかるのか、試してみましょう。
画面上部にある緑色の「<font color="Green">虫マーク</font>」。
その脇に「▼」ボタンがありますので、それをクリック。
すると今後は、さっき色々と入力した「<font color="Red">OBJ</font>」のデバッグ設定が登録されていますので、これをクリックすると、デバッガが起動します。
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917131/0d6cb77e-dc75-bf01-1ee6-f3260078a33e.png">

しばらくして、プログラムの転送と書き込みが完了すると、前と同じようにスタートアップ・アドレスでプログラムが停止しますので、画面上部の「<font color="Red">▶</font>」ボタンをクリックして、プログラムを続行させます。
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917131/5abc1408-b764-d8af-b66c-7743a5c687d9.png">


程なくして、以下のように正しくブレークポイントを仕掛けた位置でプログラムが停止するはずです。
ここからは、「F6」キーでステップオーバー、「F5」キーでステップインなど、おなじみの操作が使用できます。
因みに、ステップオーバーやステップインなどを行っている時に命令が飛んでしまったり前後したりする場合は、最適化のせいです。
デバッグ時は、このページ（[TOPPERS/ASPのビルドからデバッグまで～サンプルプロジェクトのデバッグ](https://www.madogiwakoubou.com/p/toppersasp_21.html)）の「[サンプルプログラムのデバッグ](https://www.madogiwakoubou.com/p/toppersasp_21.html#debug)」の項目を参考に最適化を解除しましょう。
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917131/e33877cf-beea-2c7d-6eba-63acd3fb2788.png">


# サンプルプロジェクトの説明
興味のある方は、このページ（[TOPPERS/ASPのビルドからデバッグまで～サンプルプロジェクトで遊ぼう](https://www.madogiwakoubou.com/p/toppersasp_16.html)）を参照してください。

# RL78版カーネルについて
以下、このカーネルにおける備考です。

## 割り込み優先度
このカーネルでは、<font color="Red">-1（優先度最低）</font>から<font color="Red">-3（優先度最高）</font>の3段階の優先度設定が可能です。
RL78の仕様としては、本当はレベル0～3の4段階の割り込み優先度設定が許可されているのですが、一番優先度の高いレベル0が少々クセモノです。
このレベル0は、マスクできない割り込みなのです。
割り込みのマスクは「プログラム・ステータス・ワード(PSW)」というレジスタで行います。
このうち「<font color="Red">ISP1</font>」と「<font color="Red">ISP0</font>」というビットに注目してください。
これらのビットの操作による効果は、以下のようになります。
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917131/f5af0c31-99cf-c3bc-501e-44d1f087ac33.png">

ご覧のように最高優先度のレベル0をマスクする手段がありません。
いや、マスクしようと思えばできないこともないのです。
それは「<font color="Red">IE</font>」というビットですべての割り込みを無効にしてしまえば良いのです。
しかしながら、これをOSに実装するにはかなりアクロバティックな記述が必要となります。
今回はGCCコンパイラを使いましたが、純正のコンパイラではレベル0用に使用させるレジスタのバンクが存在しないことから多重割り込みにも対応できず、レベル0の割り込みを使用することは半ば禁忌となっています。
このあたりの事情は、「<font color="Red">RL78 割り込み レベル0</font>」でググると詳しい方の解説が見つかります。
GCCコンパイラでは、これらの問題は回避できるので、この慣例に従う必要もないのですが、前述の通りアクロバティックな実装が必要なことに加え、そもそも3段階の優先度でも殆どの場合は問題になりませんので、リスクを避け、<font color="Red">-1（レベル3）</font>から<font color="Red">-3（レベル1）</font>をOS管轄の割り込みとして実装しました。
<font color="Red">-4（レベル0）は設定できません。</font>
（面倒くさいから！とかではないです<font color="Gray">…いや、ちょっとそうかも…。</font>）

## 例外ハンドラ
例外ハンドラとしては一つだけ、BRK例外「BRK命令の実行」のみに対応しています。
この動作は、サンプルプログラムで確認できます。
サンプルプログラム実行中に「z」か「Z」をターミナルで入力すると、以下の命令が実行される仕掛けになっています。
````
asm("brk")
````

これによりBRK例外が発生し、その様子がターミナルに表示されます。
小文字の「z」と大文字の「Z」の違いは、BRK例外が小文字の場合はカーネル管轄内で、大文字の場合はカーネル管轄外でそれぞれ実行されるということだけです。
デバッグでの用途以外、あまり使い道はないでしょう。

## 一部サービスコールは未対応
性能評価用システム時刻取得のための「<font color="Red">get_utm()</font>」サービスコールは未実装です。

# ライセンスについて
このカーネルは「[TOPPERSライセンス](https://www.toppers.jp/license.html)」で配布しております。
無償ですが、使用に関しては自己責任です。
このカーネルを商用利用する~~チャレンジャーな方~~場合は、このリンク先の条項に従ってください。