NUCLEO-F401RE で TOPPERS/ASP(RTOS)を動かす

# はじめに
Windows上でEclipseベースの[TrueSTUDIO](http://timor.atollic.com/truestudio/)を用いて．RTOSである[TOPPERS/ASPカーネル](http://www.toppers.jp/asp-kernel.html)(以下，ASPカーネル)を[NUCLEO-F401RE](http://www.st-japan.co.jp/web/jp/catalog/tools/FM116/SC959/SS1532/LN1847/PF260000)で動作させる方法について説明します．

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

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

# 用意するハードウェア
- [NUCLEO-F401RE](http://www.st-japan.co.jp/web/jp/catalog/tools/FM116/SC959/SS1532/LN1847/PF260000)
 - 秋月電子やスイッチサイエンス等から2000円程度で購入可能です．amazonでポチるのが最も簡単な入手方法です．
 - 様々な種類がリリースされていますが，現状はF401REのみをサポートしています．STM32F4シリーズを搭載しているNUCLEOなら簡単にポーティング可能です．ポーティング方法は別途記載します．
 
- USB(miniB)ケーブル
 - ボードには付属していないので用意して下さい．

- Windows PC
 - Windows7とWindows10で動作を確認しています．

 
#ソフトウェア
- [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_nucleo_f401re_gcc-20160216.zip~~asp_nucleo_f401re_gcc-20160219.zip(リンカスクリプトに不具合がありましたのでupdateしました)をダウンロードして展開して下さい． 

# ビルド&実行の手順

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

```asp_1.9.2_utf8\target\nucleo_f401re_gcc\truestudio\asp\.cproject
```

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

![truestudio1jpg.jpg](https://qiita-image-store.s3.amazonaws.com/0/106870/5319b5de-33e6-b191-07fd-5ab2f996142e.jpeg)

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

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

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

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

## 2.ビルド
ビルドボタンを押すとビルドが開始されます．
![truestudio3jpg.jpg](https://qiita-image-store.s3.amazonaws.com/0/106870/20e4e37a-a051-2826-5566-ed77c38843c1.jpeg)

## 3.ボードの接続
NUCLEO-F401REをUSBケーブルでwindowsPCに接続して下さい．ドライバのインストールが開始され，COMポートが１つ追加されます．

## 4.ダウンロード&実行
ボードの接続後，デバッグボタンを押すとダウンロードが開始されます．

![truestudio4.jpg](https://qiita-image-store.s3.amazonaws.com/0/106870/d02d72be-e2c0-4913-8360-f07e187bcb2c.jpeg)

1回目はSTLINKのファームウェアのアップデートが発生する場合があります．その場合は，画面に従ってファームウェアをアップデートしてから，USBケーブルを一旦外してから，Teratermの再接続を行い，デバッグボタンを押して下さい．

次に上記で追加されたポートに対して，ターミナルを開きます．メニューのビューからターミナルを選択します．左下ペインにターミナルが追加されるので，接続ボタンを押して，接続タイプをシリアルとして，115200bps, 8bit, Parity none, Stop 1bit, フロー制御なしとてしてOKを押します．

![truestudio6.jpg](https://qiita-image-store.s3.amazonaws.com/0/106870/fe3ebadc-1839-c1dc-f31d-6a682756a1fe.jpeg)


ダウンロード後停止した状態なので，メニューから"再開"ボタンを押すとカーネルが起動して，main_taskの先頭で停止します．この状態で"再開"ボタンを押すと実行が再開されます．

ターミナルにはログが出力されます．入力も可能です．

![truestudio4.jpg](https://qiita-image-store.s3.amazonaws.com/0/106870/4b8036fd-86b3-e0f3-d4fc-0dcff96e0092.jpeg)

#新規プロジェクト

新規にプロジェクトを作成する場合はフォルダtruestudioをコピーしてtruestudio2等に名前を変更します．

![poi1.jpg](https://qiita-image-store.s3.amazonaws.com/0/106870/2acdff2d-0ce0-b41d-d204-4f6ab02a5ce0.jpeg)

次にtruestudio2以下のaspの.cprojectを開いた場合にワークスペースの指定画面が出るのでtruestudio2を指定します．

![poi2.jpg](https://qiita-image-store.s3.amazonaws.com/0/106870/1c15a372-c195-8c70-ea2f-bc6c0584dd70.jpeg)

あとは最初に書いたようにビルドが可能です．

#プロジェクトへのファイルの追加

例えばpoi.cをビルド対象としたい場合には，poi.cをプロジェクトファイル(sample1.c)があるフォルダに置いて，Makefileに以下の様に記載すればよいです．

```Makefile
#
#  アプリケーションプログラムに関する定義
#
APPLNAME = sample1
APPLDIR = 
APPL_CFG = $(APPLNAME).cfg

APPL_DIR = $(APPLDIR) $(SRCDIR)/library
APPL_ASMOBJS =
ifdef USE_CXX
  APPL_CXXOBJS = $(APPLNAME).o 
  APPL_COBJS =
else
  APPL_COBJS = $(APPLNAME).o  poi.o
endif
```

sample1.h/sample1.h/sample1.cfgの名前を変更したい場合は，MakfileのAPPLNAMEを変更すればよいです．

# おわりに
TrueSTUDIOを使用すると簡単にASPカーネルをビルド&実行させることが出来ますので，RTOSに興味がある方は試して下さい．