C-Firstボードをe2 studioのGCCで使ってみる

C-Firstボードは書籍に付録DVDにC言語の開発環境CS+があり，本文でも使い方を紹介しています。このRL78の統合開発環境にはe2 studioがあると説明されていたので，使ってみた状況を紹介します。

e2 studioにはコンパイラとしてルネサスのCC-RLとGNUのGCCが使えます。
今回はGCCの紹介です。GCCを使うメリットは64KBを超える開発ができることとC++が使えることです。
e2 studioはここからダウンロードしておきます。
https://www.renesas.com/ja-jp/products/software-tools/tools/ide/e2studio.html#downloads
e2 studioにはコンパイラが含まれていませんが，インストール時にデフォルトでCC-RLの追加インストールも含まれています。
e2 studioを起動したらワークスペースに適当なフォルダ名を入力します。
![image001.png](https://qiita-image-store.s3.amazonaws.com/0/254490/6f3ea608-4e54-7e41-b486-f16cf9cb74d6.png)

「ようこそ」のウィンドウが表示されていますが，閉じてしまいましょう。
![image002.png](https://qiita-image-store.s3.amazonaws.com/0/254490/1321006a-4092-3092-773e-423a8825313a.png)

GCCがインストールされているかを確認しておきます。
![image003.png](https://qiita-image-store.s3.amazonaws.com/0/254490/c39d0c5c-5e39-c95d-fb66-80f66446ee31.png)

Renesasツールチェーンの追加を選びます。表示された中に「GCC for Renesas RL78」が表示されていればOKです。
![image004.png](https://qiita-image-store.s3.amazonaws.com/0/254490/d1940852-c02d-9ab9-3262-af87173f45a1.png)

GCCが見当たらない場合はここからダウンロード，インストールした後に「追加」ボタンでインストールしたフォルダを指定します。
https://gcc-renesas.com/ja/

書籍で紹介されているサンプルは全てCC-RLなので，GCCではコンパイルできません。なので，ソースコードのみをポーティングします。
手順は，土台になる空のプロジェクトを作成して，main関数以降をコピーしてポーティングします。
先ず新規に「C/C++ project」を作成します。
![image005.png](https://qiita-image-store.s3.amazonaws.com/0/254490/4de3fca8-375b-52f5-e6d8-f40b53668351.png)

GCCを使って，実行可能なプロジェクトの作成を選択します。
![image006.png](https://qiita-image-store.s3.amazonaws.com/0/254490/d2126b1f-f98b-3b2d-9172-f816598a40aa.png)

フォルダ名となるプロジェクト名を入力します。
![image007.png](https://qiita-image-store.s3.amazonaws.com/0/254490/46cc16fc-bc10-64dd-d84d-8e1a91c8b3c1.png)

デバイスは「R5F104LE」，デバッガはEZ(RL78)に設定します。
![image009.png](https://qiita-image-store.s3.amazonaws.com/0/254490/b1cfc03f-00c3-c47d-aea2-567b3d49bd8e.png)

コード生成は使いません。
![image010.png](https://qiita-image-store.s3.amazonaws.com/0/254490/35980be8-08ab-51de-be3a-2ab1fec119b4.png)

その他のオプションはデフォルトのままでOKです。
![image012.png](https://qiita-image-store.s3.amazonaws.com/0/254490/f1e18da5-00d1-8d1e-5034-222fc6f49db5.png)
![image013.png](https://qiita-image-store.s3.amazonaws.com/0/254490/06ba6ac0-c405-80fb-de4e-0b19504517ce.png)

プロジェクトの生成が終了したら空のmain関数があるので，これを編集して使います。
![image015.png](https://qiita-image-store.s3.amazonaws.com/0/254490/ce2a8187-e27a-fa0c-3f98-2f546595b18b.png)

ここではsample1_1.cのmain関数の中身をコピーしてみました。
![image016.png](https://qiita-image-store.s3.amazonaws.com/0/254490/30c540a7-8a69-0f8f-dc3f-97c99b62434e.png)

iodefine.hとiodefine_ext.hをソースに加えます。
ポーティングが完了したらビルドします。このボタンがビルドです。
![build.png](https://qiita-image-store.s3.amazonaws.com/0/254490/ad3c826b-4980-f7bd-14ac-a053c925567d.png)
プロジェクト名を右クリックしてもビルドメニューが表示されます。
エラーが無く「ビルドが完了しました」が表示されてOKです。

次はデバッグです。このボタンがデバッグです。
![debug.png](https://qiita-image-store.s3.amazonaws.com/0/254490/09a360cc-a09a-951d-e423-94b6b1e13716.png)
▼をクリックして「デバッグの構成」を開けて「Renesas GDB Hardware」にプロジェクト名，ここではsample1_1Hardware Debugが表示されていて「Debugger」のタグを開き，EZ(RL78)が設定されていることを確認して，デバッグを開始します。
![image017.png](https://qiita-image-store.s3.amazonaws.com/0/254490/adafcbb7-4adc-c7f1-32bd-cfba5f3f115c.png)

パースペクティブ（表示されているウィンドウやメニューの並び）をデバッグに適したものに変更するかと言われるので，「はい」とします。
![image018.png](https://qiita-image-store.s3.amazonaws.com/0/254490/8a3b3387-add3-b34b-607f-61b7970c9b43.png)

実行の再開ボタンはこれです。
![go.png](https://qiita-image-store.s3.amazonaws.com/0/254490/ba7cfd05-3168-69c0-4f19-b5fb67ac8978.png)

確認できたら実行を停止します。EZエミュレータとの接続解除も行うのはこのボタンです。
![stop.png](https://qiita-image-store.s3.amazonaws.com/0/254490/9e86813e-1a7a-0e28-b23b-c2910b0dddd8.png)

以上でGCCにポーティングしたサンプルコードの実行までの作業でした。

設定さえ間違えなければ，意外とすんなりGCCへのポーティングも可能，という印象です。
割り込み処理も空の関数が生成されていますから，中身だけをポーティングすることですぐに動きそうです。

最初に書きましたがGCCはフリーのコンパイラですから，CC-RLのようなサポートは無いものの，C++が使えますし，64Kバイトを超えるサイズも制限がない点は嬉しいですね。