e2studioでTOPPERS/ASPを使用する方法

#概要
  RenesasのEclipse開発環境であるe2studioでTOPPERS/ASPカーネルを使用する方法を解説します。
TOPPERS/ASPはTOPPERSプロジェクトによって開発されている組込み向けのリアルタイムOS(RTOS)です。今日は私が非公式で移植、開発を行っているGCC対応のTOPPERS/ASP for RXの利用法の解説を行います。本記事は「個人開発者 Advent Calendar」の11日目としてお送りします。

今回はプロジェクトの作成からE1を使用してのプログラム実行までの解説です。アプリケーションはTOPPERSプロジェクトが提供するsample.cを使用します。

#事前準備
##開発環境
### ハードウェアおよび評価機材
<dl>
  <dt><a href="http://gadget.renesas.com/ja/product/sakura.html">GR-SAKURA</a></dt>
   <dd>GR-SAKURAはがじぇっとるねさすが開発した評価ボードです。今回はこのボードをターゲットとして解説を行います。製品としてGR-SAKURAとGR-SAKURA fullがありますが、ソフトウェアは両方とも共通の物が使用できます。しかし、両方ともデバッガの接続コネクタが実装されていないためデバッガ経由での書き込みを行う場合は2.54mmのピンを実装して使用してください。また、GR-SAKURA IIも発売されているようですが、基本的には同じソースコードが使えます</dd>
  <dt><a href="https://www.renesas.com/ja-jp/products/software-tools/tools/emulator/e1.html">E1</a></dt>
   <dd>E1はルネサスマイコンのJTAGデバッガです。今回はE1をターゲットとして解説を行います。</dd>
  <dt><a href="http://gadget.renesas.com/ja/product/kaede.html">GR-KAEDE</a></dt>
   <dd>GR-KAEDEはがじぇっとるねさすが開発した評価ボードです。GR-SAKURAよりも高性能なマイコンと大容量のRAMが使用できます。今回の解説では使用しませんが、GR-SAKURAと同様の手順で使用できます。GR-KAEDEはES版と製品版が存在しているようです。私が使用している物はES版のため写真のボード外形が異なるかもしれません。 </dd>
  <dt><a href="https://www.renesas.com/ja-jp/products/software-tools/tools/emulator/e2-emulator-lite.html">E2エミュレータLite</a></dt>
   <dd>E1の廉価版のデバッガです。RHや旧ラインナップのマイコンが非サポートになっています。RX、RL系列しか使用しないのであればこちらの方がいいかもしれません。</dd>
   <dt>USB-Serial変換デバイス</dt>
     <dd>標準入出力用にUSB-Seriral変換デバイスが必要です。私は秋月の<a href="http://akizukidenshi.com/catalog/g/gK-01977/">FT232RL USBシリアル変換モジュール</a>を使用しています。</dd>
</dl>
### ホスト開発環境
<dl>
  <dt>Windows PC</dt>
   <dd>開発用のホストPCとしてWindows PCを使用します。</dd>
  <dt><a href="https://www.renesas.com/ja-jp/products/software-tools/tools/ide/e2studio.html">e2studio</a></dt>
   <dd>ルネサスが提供するEclipseベースの開発環境です。ユーザ登録が必要ですが、Windows環境でIDEとRX クロスコンパイラが使用できます。インストール時にRX、RZ、RL、RHコンパイラを選択できるのでRXを選択してください。他アーキテクチャについてはお好みでかまいません。クロスコンパイラのインストール時にKPITのユーザ登録が必要になるので登録してください。</dd>
  <dt><a href="https://www.cygwin.com/">Cygwin</a></dt>
 <dd>TOPPERS/ASPのコンフィグレーションと依存性解析にLinux系の実行環境が必要になります。msysでも代用が可能です。
Windows Subsystem for Linuxでも実行できるかもしれませんが、試したことがありません。だれか試したら報告してください。</dd>
  <dt>シリアルコンソロール</dt>
   <dd>ボード入出力を観測するためにシリアルコンソロールを使用します。私はteratermを使用しています。</dd>
 </dl>
### TOPPERS/ASP 開発環境

<dl>
  <dt><a href="https://github.com/farmer-bism/bismath_evalkit_target">TOPPERS/ASPカーネルRX版</a></dt>
  <dd>TOPPERS/ASPカーネルをRX向けに移植しました。Gitでクローンするかzipでダウンロードしてください。 </dd>
  <dt><a href="https://www.toppers.jp/cfg-download.html">TOPPERS新世代カーネル用コンフィギュレータ</a></dt>
  <dd>TOPPERS/ASPを使用するためのコンフィグレータです。WindowsとLinuxでファイル差し替えが必要なため別配布になっています。今回はwindows版を後述するディレクトリに保存してください。</dd>
 </dl>

##ディレクトリ構造
  ディレクトリは以下の構成とします。toppers_appにアプリケーション用のソースコードを保存します。このディレクトリがソースコードのルートディレクトリになります。 TOPPERS/ASPカーネルRX版のソースコードはtoppers_appの下にtoppers_rxとして保存します。(e2studioがソースルート下のディレクトリでないとうまく解析してくれないため、このような構成になっています。)TOPPERS新世代カーネル用コンフィギュレータはtoppers_app/toppers_rx/asp/cfg/cfg/cfg.exeに保存してください。カーネルのmakeで使用します。

root/
　├ e2s_proj/　　　　　--e2studioのプロジェクトディレクトリ
　└ toppers_app/ 　　　--TOPPERS/ASPのアプリケーション開発ルート
　　　└ toppers_rx/　　--TOPPERS/ASPカーネルRX版
　　　　　　├ asp/
　　　　　　│　├ cfg/
　　　　　　│　　　└ cfg/
　　　　　　│　　　　　└ cfg.exe　　--TOPPERSコンフィギュレータ
　　　　　　├ sample
　　　　　　└ script

## TOPPERS/ASPのターゲットコンフィグレーション
 e2studioによるコンパイルの前にTOPPERS/ASPのGR-SAKURAターゲット向けコンフィグレーションを行います。今回はsample.cを使用するのでアプリケーション指定は行いません。

toppers_appのディレクトリに移動して以下のコマンドを実行してください。 3行目の *-T sakura_gcc*を*-T kaede_gcc*にすればGR-KAEDE向けのコンフィグレーションになります。実行するとtoppers_app以下にMakefileやsample.c等が生成されます。

```bash
$ pwd
root/toppeers_app
$ perl ./toppers_rx/asp/configure -T sakura_gcc
$ make depend
```
# e2studioを使用したコンパイル、実行
## プロジェクトの構築
### e2studioの起動
e2studioを起動してください。起動するとe2studioのワークスペースを選択するダイアログが開くため**e2s_proj**ディレクトリを指定してOKをクリックしてください。
![make_e2proj.png](https://qiita-image-store.s3.amazonaws.com/0/81077/f1d8d36c-5ea4-ff7a-3c3b-8d87b71c3c37.png)

e2studioが立ち上がり初期画面が表示されます。ようこそのTABを閉じてIDEの画面を表示してください。
![e2s_welcom.png](https://qiita-image-store.s3.amazonaws.com/0/81077/df1f6f15-097a-37c5-ce0c-e19adbc06f0a.png)

### TOPPERS/ASPカーネルの登録
 IDE画面が表示されたら、TOPPERS/ASPのソースコードを登録します。メニューのファイル(F)から新規(N)->Makefile Project with Existing Codeを実行してください。
![e2s_load_mak_proj.png](https://qiita-image-store.s3.amazonaws.com/0/81077/d25d0f2e-5e5c-0217-9e1d-4bf107a4a023.png)

 **既存のコードをインポート**のダイアログが表示されるため、プロジェクトを登録していきます。既存のコードの場所に**toppers_app**を指定し、toolchainに**KPIT GNURX-ELF Toolchain**を選択してください。 プロジェクト名は任意に設定可能です。今回はsampleをプロジェクト名としました。 終了をクリックするとe2studioがソースコードの解析を開始します。解析には時間がかかるため次の画面が表示されるまでe2studioを終了せず待ってください。

![e2s_toppers_config.png](https://qiita-image-store.s3.amazonaws.com/0/81077/a33a907b-72f1-e144-3a7e-632042ef64d9.png)

### TOPPERS/ASPのコンパイル
ソースコードが登録されるとプロジェクト・エクスプローラーのViewにsampleプロジェクトが表示されます。
プロジェクトが表示されていることを確認したら、ソースコードのビルドを行います。 プロジェクト・エクスプローラーのsampleを右クリックし、**プロジェクトのビルド(B)**を実行してください。
![e2s_build.png](https://qiita-image-store.s3.amazonaws.com/0/81077/b0856b2e-2c12-23bb-a511-bbcb0cb38036.png)

ビルドが正常に終了すると右下のコンソロールViewにcheck completeのログとビルド完了しましたのメッセージが表示されます。これでビルドが完了です。実行ファイルはtoppers_appディレクトリの**asp**と**asp.srec**です。**asp**は拡張子が記載されていませんが、ファイル形式はelfの実行可能ファイル形式です。デバッガでファイル書き込みをする場合は**asp**を使用します。Flash Programmerで書き込む場合は**asp.srec**を使用してください。

![build_comp.png](https://qiita-image-store.s3.amazonaws.com/0/81077/e394c783-8508-dafb-9d1d-6215e9dcfb4d.png)

## TOPPERS/ASPの実行
 次にプログラムを実行しています。今回はE1を接続してプログラムの書き込みを行います。以下の手順はGR-SAKURAにE1を接続して行ってください。また、実行時の標準入出力にUARTを使用するためUSB-SerialをボードとPCに接続してください。
 
 デバッグ構成の設定をおこないます。メニューから実行(R)を選択してデバッグの構成(B)を実行してください。
![debug_config.png](https://qiita-image-store.s3.amazonaws.com/0/81077/40a6a92e-d9e2-6a2d-25be-fdc399145007.png)

**デバッグ構成**コンソロールが開くため左のリストのRenesas GDB Hardware Debuggingをダブルクリックしてください。
![debug_config_2.png](https://qiita-image-store.s3.amazonaws.com/0/81077/d916dde0-0dfa-34c4-2d15-fae469cdd8d1.png)

デバッグの設定タブが開くので実行環境を登録していきます。 メインタブを選択し、**C/C++アプリケーションの項目**に**toppers_app\asp**を設定してください
![debug_config_3.png](https://qiita-image-store.s3.amazonaws.com/0/81077/4290f589-407a-84ed-411e-6adfb905f7c4.png)

Debuggerタブを選択してデバッガの設定を行います。 **Debug hardware**の項目に**E1(RX)**を設定します(E2 Liteを使用している場合はここを変更してください)。**Target Device**の項目に**R5F563NB**を設定してください。この項目はボードに実装されているチップの刻印と一致している事を確認してください。使用しているボードがGR-SAKURA IIの場合はこの項目を変更する必要があるかもしれません。
 
以上でデバッグの構成は終了です。適用(Y)ボタンをクリックした後、デバッグ(D)ボタンをクリックするとプログラムの書き込みが開始します。
![debug_config_4.png](https://qiita-image-store.s3.amazonaws.com/0/81077/cd198a3c-76e1-3868-263f-fd4a5f654256.png)

デバッグ開始時にコーディング用のViweを表示していると以下の様なダイアログが表示されます。この場合は**はい(Y)**をクリックしてください。
![debug_config_5.png](https://qiita-image-store.s3.amazonaws.com/0/81077/b885779e-69ce-1ca1-a3b3-4f0b1e8f3923.png)

プログラムを書き込むと以下のようなViewが表示されます。この状態ではプログラムはリセット直後の状態で停止しています。アイコンバーの緑色の三角のアイコンをクリックするとプログラムが実行されます。
![debug_config_6.png](https://qiita-image-store.s3.amazonaws.com/0/81077/14e1a9d4-563d-69d2-62bf-862df1bffd60.png)

## TOPPERS/ASPのログ取得
プログラムの実行ログはシリアルに出力されます。シリアルコンソロールを9600bpsに設定すれば実行ログを取得できるはずです。
正しく実行できていれば以下のようなログが観測できます。

![teraterm_log.png](https://qiita-image-store.s3.amazonaws.com/0/81077/60dff38e-8ef2-dd82-c3d6-23bc68445618.png)