GR-PEACH で TOPPERS/ASP(RTOS)を動かす

# はじめに
[NUCLEO-F401REと同様](http://qiita.com/exshonda/items/bf691541526975b8f78c)に，[GR-PEACH](http://gadget.renesas.com/ja/product/peach.html)で，Windows上でEclipseベースの[TrueSTUDIO](http://timor.atollic.com/truestudio/)を用いて．RTOSである[TOPPERS/ASPカーネル](http://www.toppers.jp/asp-kernel.html)(以下，ASPカーネル)を動作させる方法について説明します．

一般的に，WindowsでASPカーネルのビルドするには，Cygwin環境，クロスコンパイラ，デバッガを別々にインストールする必要があり環境構築の手順が煩雑でした．TrueSTUDIOは，ASPカーネルのビルドと実行に必要なツール類がまとめてインストールできるため，環境構築の手間が省けます．

TrueSTUDIOは以前はコードサイズの制限があったのですが，現在は制限がなく基本的な機能はフリーで使用することができます．

GR-PEACH上での実行方法としては次の2種類があります．

1. RAM実行
 - プログラムをRAM上にロードして実行する方法で，プログラムの開発時に使用します．電源が切れるとプログラムは消えます．
1. ROM実行
 - プログラムをROM上に書き込んでて実行する方法です．電源が投入されると動作します．デバッグも可能ですが，デバッガによるロードが出来ないため，プログラムのロードと実行のターンアラウンドは長いです．


# 用意するハードウェア
- [GR-PEACH](http://gadget.renesas.com/ja/product/peach.html)
 - 秋月電子等から10000円程度で購入可能です．RTOSを動作させるだけなら，FULLでもNORMALでもどちらも良いです．写真のTOPPERSロゴのボードは必要ありません(単にTOPPERSが動作することを示すために付けています).
 - NUCLEO-F401REと比較すると高価ですが，クロックが400Mhz,SRAMが10MBなのでやれることの幅は広がります．
 
![gr_peach_board_3.JPG](https://qiita-image-store.s3.amazonaws.com/0/106870/33c12451-20ab-8a5f-d463-6716804b2dbf.jpeg)


- USB(microB)ケーブル
 - ボードには付属していないので用意して下さい．

- Windows PC
 - Windows7とWindows10で動作を確認しています．
 - Mac でもOpenOCD経由で接続してデバッグできていることは確認しています．

 
#ソフトウェア
- [TrueSTUDIO](http://timor.atollic.com/truestudio/)
 - v5.4.1 で動作確認しています．これより古いバージョンは問題が発生する可能性があります．
 - Atollicの[サイト](http://timor.atollic.com/truestudio/)にアクセスすると**DOWNLOAD NOW!**というボタンがあるので押すとダウンロードが始まります．サイズが1G程度あるので注意して下さい．
 - ダウンロード後インストールして下さい．

- [TOPPERS/ASPカーネル](http://www.toppers.jp/asp-e-download.html#nucleo)
 - 上記リンクからasp_gr-peach_f20160315.zipをダウンロードして展開して下さい．
 - 展開したフォルダを【ASP_DIR】とします．

- [OpenOCD](https://github.com/gnuarmeclipse/openocd/releases/tag/gae-0.10.0-20160110)
 - 0.10.0-201601101000-dev をダウンロードしてインストールする．これ以前のものは正しく動作しないので必ず上記バージョン以降のものを使用して下さい．
 - インストールしたフォルダを【OpenOCD_DIR】とします．
 - 【ASP_DIR】/target/gr_peach_gcc/renesas_rza1h_swd.cfg を【OpenOCD_DIR】/scriptts/target/ にコピーします．
- ターミナルソフトウェア
 - TeraTermPro等をインストールすること．

# ワークスペースの作成

## 1.TrueSTUDIOを実行
TOPPERS/ASPカーネルに含まれている以下のTrueSTUDIOのプロジェクトファイルをエクスプローラからダブルクリックしてTrueSTUDIOを起動します．

***
**【ASP_DIR】\target\gr-peach_gcc\truestudio\asp\.cproject**
***

TrueSTUDIOが起動するとワークスペースの指定画面が表示されるため適当なワークスペースを指定します．.cprojectのフォルダの一つ上のフォルダを指定すると管理が楽です．.cprojectと同じフォルダは指定しないで下さい．

![gr-peach.jpg](https://qiita-image-store.s3.amazonaws.com/0/106870/ac759974-56b9-37fd-838f-9598d985b7e6.jpeg)


3秒ほど宣伝画面が出るので"ウィンドウを閉じて下さい"のボタンが有効になるまで待って，有効になったらボタンを押して下さい．

左上のInformation Centerの右の×ボタンを押すとプロジェクトが表示されます．

左のペインのプロジェクトビューからaspを選択し，ツリーを展開するとサンプルプログラムとASPカーネルの各ファイルを見ることができます．

![truestudio2jpg.jpg](https://qiita-image-store.s3.amazonaws.com/0/106870/d648be40-5bf3-494d-8551-57e57d7b3b00.jpeg)

## 2.デバッガの設定
TrueStudioからOpenOCDを使用するための設定を行います．

ウィンドウ メニューの "設定" を選択する．

![gr-peach1.jpg](https://qiita-image-store.s3.amazonaws.com/0/106870/311e2d3d-bd51-0e0f-4aae-072b05ec88f1.jpeg)


左のツリーから -> "実行/デバッグ" -> "組込みC/C++アプリケーション" -> "デバッグハードウエア" -> "OpenOCD" を選択する．

"サーバ"に上記でインストールした openocd.exe を指定する．"ディレクトリ"にOpenOCDのインストールフォルダ 【OpenOcd_DIR】(./bin等があるフォルダ)を指定する．

"ウェイト時間"は2に設定する．

![gr-peach2.jpg](https://qiita-image-store.s3.amazonaws.com/0/106870/17c7c5fd-a419-1b91-48d8-2ddc56a443b4.jpeg)



# ボードの接続

ボードのPGポートとPCを接続する．ドライブとして認識されることを確認する．シリアルポートして認識されない場合は[このドライバ](https://developer.mbed.org/handbook/Windows-serial-configuration)をインストールする．

![gr_peach_board_4.JPG](https://qiita-image-store.s3.amazonaws.com/0/106870/c6a7d515-5642-8942-918f-66f7904db417.jpeg)


# RAM実行向けビルドと実行

RAM上にプログラムをダウンロードして実行するための手法について説明します．

## 1.ビルド

左のペインのプロジェクトビューからaspを選択します．選択したした状態でビルドボタンを押すとビルドが開始されます．すでにROM実行向けにビルドした場合は，クリーンをしてからビルドをして下さい．asp.elfというファイルが出来ればビルドは成功です．

![truestudio3jpg.jpg](https://qiita-image-store.s3.amazonaws.com/0/106870/20e4e37a-a051-2826-5566-ed77c38843c1.jpeg)

## 3.ターミナルの接続

上記で追加されたポートに対して，ターミナルを開きます．Teraterm等で，115200bps, 8bit, Parity none, Stop 1bit, フロー制御なしとて接続します．

## 4.デバッグ

メニューの"実行"から"デバッグの構成"を選択します．左側のペインから，組込みC/C++アプリケーションのツリーから"asp_debug_ram"を選択します．

![gr-peach_ram_debug.jpg](https://qiita-image-store.s3.amazonaws.com/0/106870/3431e3ae-432b-f28a-4e92-21f2e2e5471f.jpeg)

選択後に下の"デバッグ"のボタンを押すとデバッグが開始され，ファイルがダウンロードされます．ダウンロード後停止した状態なので，メニューの"実行"から"再開"を押すとカーネルが起動します．


![gr-peach_debug.jpg](https://qiita-image-store.s3.amazonaws.com/0/106870/9cc84219-9cb4-7ee5-87bf-c258b1a43e19.jpeg)

ダウンロード後はリセットアドレスが表示されていますが，"中断"ボタンを押すとプログラムの実行が中断され，タスクが実行されていることが分かるかと思います．

![gr-peach_debug1.jpg](https://qiita-image-store.s3.amazonaws.com/0/106870/ccf3dd7a-2dda-c1e4-e0b4-b11edfa1c415.jpeg)


また，ターミナルにはログが出力されます．

![gr-peach_console.jpg](https://qiita-image-store.s3.amazonaws.com/0/106870/3461b64a-f9bf-c8d5-2fc3-47798b707784.jpeg)


# ROM実行向けビルドと実行

ROM上にプログラムを書き込んで実行するための手法について説明します．

## 1.ビルド

左のペインのプロジェクトビューからaspを選択します．右クリックをして，"ビルド構成"->"アクティブにする"->"ROM Execution"を選択します．

![gr-peach3.jpg](https://qiita-image-store.s3.amazonaws.com/0/106870/565af2da-3671-2e44-b5bc-80d27f88192d.jpeg)

プロジェクトを選択した状態でビルドボタンを押すとビルドが開始されます．すでにRAM実行向けにビルドした場合は，クリーンをしてからビルドをして下さい．asp.binというファイルが出来ればビルドは成功です．

## 3.ボードの接続&ターミナルの接続
GR-PEACHをUSBケーブルでWindowsPCに接続して下さい．すでにRAM実行をした場合は一度USBケーブルを抜いて差して下さい．追加されたポートに対して，ターミナルを接続します．Teraterm等で，115200bps, 8bit, Parity none, Stop 1bit, フロー制御なしとて接続します．

## 4.ダウンロード&実行
ボードの接続後，表示されるドライブに対してビルドされたasp.binをコピーして下さい．コピー後にリセットボタンを押すと実行が開始され，ターミナルにログが表示されるはずです．

## 5.デバッグ

メニューの"実行"から"デバッグの構成"を選択します．左側のペインから，組込みC/C++アプリケーションのツリーから"asp_debug_rom"を選択します．


![gr-peach_rom_debug.jpg](https://qiita-image-store.s3.amazonaws.com/0/106870/5920935c-327a-4dbf-2bf1-8908e98a7eb6.jpeg)


選択後に下の"デバッグ"のボタンを押すとデバッグが開始されます．

# おわりに
これまで，Cortex-A9のデバッグは高価なデバッガが必要でした．GR-PEACHを使うと安価にデバッグ環境が実現可能です．mbedのライブラリをTOPPERS上で動作させることにトライしたいと思います．