Ubuntu 15.10 を使って Arduino M0 Pro で TOPPERS/ASP を動作させる

# はじめに

2015年11月30日、[TOPPERS プロジェクト](https://www.toppers.jp/) から Arduino M0 Pro の依存部を組み込んだ[簡易パッケージ](https://www.toppers.jp/asp-e-download.html#arduino)がリリースされました。

数カ月前から TOPPERS/ASP を実機で試してみたいなぁ、と思っていたところに、ちょうど良いニュースでした。

ここでは、Ubuntu で前記 TOPPERS/ASP 簡易パッケージをビルドし、 Arduino M0 Pro に書き込み、動作確認したいと思います。

Windows じゃない理由は、個人的都合です（笑）

- 環境
    - Ubuntu Mate 15.10 x86_64 (Desktop, 64-bit)
    - [Arduino.org 製 Arduino IDE](http://www.arduino.org/software) 1.7.8
        - arduino-1.7.8.org-linux64.tar.xz
    - [TOPPERS/ASP Arduino M0 (GCC) 簡易パッケージ](https://www.toppers.jp/asp-e-download.html#arduino)
        - asp_arduino_m0_gcc-20151128.zip



# 手順

一気に最終目標をやろうとすると、いろんな問題が一気に出てきてへこたれちゃうので、次の手順で進めました。

## 1. [Arduino M0 Proの開発環境を準備する](http://qiita.com/warafuuji/items/030ccf310064b481a3ff)

/home/hogehoge/Programs/arduino-1.7.8-linux64/ に展開しているとします。
※ hogehoge は、ユーザー名です。

## 2. [Linux 64-bit 用 TOPPERS/ASP コンフィギュレータを作成する](http://qiita.com/warafuuji/items/9f9924cd303541fea040)

/home/hogehoge/Works/cfg/cfg/ に実行バイナリ cfg ができているとします。

## 3. TOPPERS プロジェクトの [Arduino M0 (GCC) 簡易パッケージ](https://www.toppers.jp/asp-e-download.html#arduino)をダウンロードする

- asp_arduino_m0_gcc-20151128.zip

## 4. ファイルを展開する

`$ unzip asp_arduino_m0_gcc-20151128.zip`

## 5. ステップ 2 で作成したコンフィギュレータ cfg を配置する

`$ cp /home/hogehoge/Works/cfg/cfg/cfg asp_1.9.2/cfg/cfg/`

※ cp 後、実行権限付与が必要かも?

## 6. ビルドのための修正

target_user.txt にビルドのための手順が記載されています。必読です。
- **asp_1.9.2/target/arduino_m0_gcc/target_user.txt**

`$ cd asp_1.9.2`

### 1. Arduino IDE の gcc-arm-none-eabi に PATH を通す

`$ export PATH="$PATH:/home/hogehoge/Programs/arduino-1.7.8-linux64/hardware/tools/gcc-arm-none-eabi-4.8.3-2014q1/bin"`

※ これは一時的な export ですので、必要であれば[恒久的な対策](http://qiita.com/takanemu/items/6027291be8a2a6af9adc)を行うと良いです。

### 2. Arduino IDE のインストールパスを Makefile.target に指定する

`$ vi target/arduino_m0_gcc/Makefile.target`

```lang:Makefile.target
#
# Arduinoの開発環境のパス(Windows表記)
#
ARDUINO_BASE_DIR_WIN = /home/hogehoge/Programs/arduino-1.7.8-linux64
```

### 3. Makefile.target の Windows 的な記述を訂正する

※ "\" を "/" に修正, openocd.exe ではなく openocd に修正, などです。

`$ vi target/arduino_m0_gcc/Makefile.target`

```lang:Makefile.target
#
#  フラッシュへの書き込み
#
#OPENOCD_PATH = $(ARDUINO_BASE_DIR_WIN)\hardware\tools\OpenOCD-0.9.0-arduino\bin\openocd.exe
#OPENOCD_SCRIPT_PATH = $(ARDUINO_BASE_DIR_WIN)\hardware\tools\OpenOCD-0.9.0-arduino\share\openocd\scripts
#OPENOCD_SCRIPT  = $(ARDUINO_BASE_DIR_WIN)\hardware\arduino\samd\variants\arduino_zero\openocd_scripts\arduino_zero.cfg
OPENOCD_PATH = $(ARDUINO_BASE_DIR_WIN)/hardware/tools/OpenOCD-0.9.0-arduino/bin/openocd
OPENOCD_SCRIPT_PATH = $(ARDUINO_BASE_DIR_WIN)/hardware/tools/OpenOCD-0.9.0-arduino/share/openocd/scripts
OPENOCD_SCRIPT  = $(ARDUINO_BASE_DIR_WIN)/hardware/arduino/samd/variants/arduino_zero/openocd_scripts/arduino_zero.cfg

ifeq ($(UNAME_TARGET), Cygwin)
	GDB = arm-gdb_m0.exe
else
#	GDB = $(ARDUINO_BASE_DIR_WIN)\hardware\tools\gcc-arm-none-eabi-4.8.3-2014q1\bin\arm-none-eabi-gdb
	GDB = $(ARDUINO_BASE_DIR_WIN)/hardware/tools/gcc-arm-none-eabi-4.8.3-2014q1/bin/arm-none-eabi-gdb
endif
```

### 4. ビルドする

```
$ cd target/arduino_m0_gcc/atmelstudio
$ make
```

## 7. Arduino M0 Pro を USB ケーブルで PC に接続する

Arduino M0 Pro 側は Native USB Port ではなく、Programming Port に接続します。

## 8. 書き込みを実行する

`$ make run`

```
complete ...
```

一旦、 PC から Arduino M0 Pro を抜き差しします。

## 9. シリアルモニタを準備する

Arduino IDE を起動し、シリアルモニタを起動しておきます。
転送速度は、115200 bps です。
シリアルコマンド入力欄に sample1.c 記載のキーを入力すると sample1 の動作を確認できます。

![Screenshot--dev-ttyACM0.png](https://qiita-image-store.s3.amazonaws.com/0/68547/adcf1ab0-d189-5353-79a9-f47a3fb0c3b8.png)


# おわりに

個人的な感想なのですが、今まで「 TOPPERS/ASP の簡易パッケージの対象ハードウェアが古いなぁ」と感じておりました。
そこに、最新のハードウェアに対応した簡易パッケージがリリースされ、個人的に盛り上がった次第です。
Arduino M0 Pro は、他の Arduino に比べると少々お高いですが、入手性がかなり良いと思いますので、ぜひ試していただければ幸いです。