Ubuntu篇：VSCodeでTOPPERS/ASP3アプリの開発環境を整備する

# TL;DR

- リアルタイムでマルチタスクなTOPPERSカーネル！を使って，組込みアプリを開発したい
- Visual Studio Codeにてナウでヤングな開発環境を整えたい！
- ThingsだけじゃなくてInternet ofつまりIoTじゃね？？
- そんなあなたに，[こんなセミナー](https://algyan.connpass.com/event/136354/)ぜひどうぞ！！
    - 環境構築で分からないところがあれば，どしどしコメントください．

# はじめに

「[TOPPERS](http://toppers.jp/)」ってご存知ですか？
組込み技術者の純粋なこだわりと「匠のワザ」を結晶させた，オープンソースの由緒ある和製リアルタイムOSです．

CUIベースのクロス開発が一般的（というかワタシの好み^^）なのですが，そこはやっぱりIDEを使ってエレガントに開発を進めたいところ．
ということで本記事では，Visual Studio Codeによる開発環境の構築方法を説明します．

# ターゲット

- マイコンボード：[GR-PEACH-FULL](https://www.core.co.jp/product/m2m/gr-peach/index.html#full)
- [TOPPERS/ASP3カーネル 3.2.0](http://toppers.jp/asp3-e-download.html)
- ホストPC環境：Ubuntu 16.04.2 LTS
    - sudo権限が使える必要があります
    - USBポート１口が必要です
    - ディスク容量は１GBくらい使います

なおVisual Studio Codeの良いトコロはmulti platform supportかなと思います．ということで，WindowsやMacユーザの方は下記をご参照ください．

- [Windows篇：VSCodeでTOPPERS/ASP3アプリの開発環境を整備する](https://qiita.com/takasehideki/items/59e3d179d462142a8633)
- [Mac篇：VSCodeでTOPPERS/ASP3アプリの開発環境を整備する](https://qiita.com/takasehideki/items/f897e6e063ceb05a9f35)



# クロス開発環境の準備

Ubuntuだとさらにさっくり

## makeとRubyのインストール

TOPPERSカーネルのビルドの際には`make`と`ruby`を使用します．
Ubuntu使いともなるともう入っている方ばかりだとは思いますが，こんな感じでどうぞ〜

```bash
$ sudo apt install build-essential ruby
```

## クロスコンパイラ

ターゲットのマイコンボードであるGR-PEACHのためのコンパイラとして`arm-none-eabi-gcc`を使います．

今回は下記バージョンのものを使用します．

- [arm-none-eabi Version 6-2017-q2-update](https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm/downloads/6-2017-q2-update)

ubuntuに対応するものは`Linux 64-bit`です．
ダウンロードしてきたものを解凍して，`/usr/local`にコピーします．

```bash
$ tar xf gcc-arm-none-eabi-6-2017-q2-update-linux.tar.bz2 
$ sudo mv gcc-arm-none-eabi-6-2017-q2-update /usr/local/
```

## デバッガ環境

Visual Studio Codeと連携させるデバッガとしてOpenOCDを使います．
今回は下記バージョンのものを導入します．

- [OpenOCD 0.10.0-12-20190422](https://github.com/gnu-mcu-eclipse/openocd/releases/tag/v0.10.0-12-20190422)

`-centos64.tgz`のものをダウンロードして，解凍して，また`/usr/local`に配置してください．

```bash
$ tar xzf gnu-mcu-eclipse-openocd-0.10.0-12-20190422-2015-centos64.tgz 
$ sudo mv gnu-mcu-eclipse /usr/local/
```

次に下記をダウンロードしてきて，

- https://raw.githubusercontent.com/takasehideki/asp3_gr_peach_vscode/master/asp3/target/gr_peach_gcc/renesas_rza1h_swd.cfg

`/usr/local/gnu-mcu-eclipse/openocd/0.10.0-12-20190422-2015/scripts/target/` にコピーしてください．

```bash
$ cp renesas_rza1h_swd.cfg /usr/local/gnu-mcu-eclipse/openocd/0.10.0-12-20190422-2015/scripts/target/
```

## シリアル通信ドライバ

FTDIドライバですが，最近のLinuxでは標準でインストールされています．
特に作業は必要ありません．やったねっ

## シリアル通信ターミナル

GR-PEACHとのシリアル通信には，`screen`や`picocom`が使えます．
ご自由にどうぞです．

## PATHの設定（任意）

IDE/GUIなぞに頼らずターミナル開発したい方向けです．
VSCodeだけで楽しい方は不要です．

```bash
$ echo "export PATH=/usr/local/gcc-arm-none-eabi-6-2017-q2-update/bin:\${PATH}" >> ~/.bashrc
$ echo "export PATH=/usr/local/gnu-mcu-eclipse/openocd/0.10.0-12-20190422-2015/bin:\${PATH}" >> ~/.bashrc
$ echo "TCINSTALL=/usr/local/gcc-arm-none-eabi-6-2017-q2-update/" >> ~/.bashrc
$ source ~/.bashrc
```


# Visual Studio Codeの準備

ようやっと本題ですぅ

## 本体のインストール

下記からダウンロードできます．

- https://code.visualstudio.com

すでにインストール済みの方は最新版にしましょう．本記事執筆時点では1.35.1です．

Ubuntuの場合は，`.deb`をダウンロードしてきて，下記の操作が必要です．

```bash
$ sudo dpkg -i code_1.35.1-1560350270_amd64.deb
$ sudo apt-get install -f
```

## 拡張機能のインストール

拡張機能は，左下にある歯車の上から３つめ「Extensions」（日本語化パッケージをすでに導入済みの方は「拡張機能」）から選べます．

![vscodeex.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240349/751b85f6-483f-cdc9-62f1-be8fb45325d7.jpeg)

**「C/C++」**は必須でインストールしてください．

**「C++ Intellisense」**も入れておくと便利です．
日本語化したい方は**「Japanese Language Pack for Visual Studio Code」**もインストールすると良いでしょう．インストール後はVS Codeの再起動が必要です．
こんな感じになります．

![vscodeext.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240349/fde8ceb6-cfbc-a8ed-7014-1afc9e533032.jpeg)

~~まぁ漢は黙ってVimですよねぇ！？？~~

ここまでの環境構築の手引きで分からないところがあれば，どしどしコメントください．


# さてRun!!

別記事にしました．下記をご参照ください．

- [VSCodeでTOPPERS/ASP3アプリをビルド＆実行する
](https://qiita.com/takasehideki/items/fa0a1a6567a22f469515)

特に下記で案内のIoTあるじゃんのハンズオンセミナーに参加したい！方は，[アプリのビルド](https://qiita.com/takasehideki/items/fa0a1a6567a22f469515#%E3%82%A2%E3%83%97%E3%83%AA%E3%81%AE%E3%83%93%E3%83%AB%E3%83%89)まで出来ることを確認してください．GR-PEACHお持ちの方は最後までできます．

# 既知の問題orz

Ubuntu版のVisual Studio Codeだと，デバッガ連携がうまくいかないようです．
GR-PEACHがシリアルデバイスとして認識される`/dev/ttyACM0`へのアクセスに`sudo`権限が必要となるのですが，これをVSCodeのlaunch.jsonなどから実行することができないようです．

対処法としては，VSCodeを`sudo`実行することになります^^;
[実行方法の記事](https://qiita.com/takasehideki/items/fa0a1a6567a22f469515#ubuntu%E3%81%AE%E5%A0%B4%E5%90%88%E3%81%AF)で詳しく解説しています．

# ハンズオンセミナー開催！

せっかく開発環境を整えたんだから使ってみたい！
ThingsだけじゃなくてInternet ofつまりIoTじゃね？？

そんなあなたに，こんなセミナーのご紹介です．

- [PinKitプレゼント付き！TOPPERSカーネル＋Azure IoT 体験ハンズオン@横浜](https://algyan.connpass.com/event/136354/)
    - 2019/07/27(土)　13:30 〜 18:00
    - 会場：情報科学専門学校６F


[![banner.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240349/2de2a1a6-e6d1-622b-6bd4-06c70975fc3f.jpeg)](https://algyan.connpass.com/event/136354/)

TOPPERSとAzure IoT Hubを体験しよう！
しかもなんとPinKit(GR-PEARCH+センサーボード)をプレゼント！！

TOPPERSプロジェクトの運営委員として活躍する技術者と，Microsoftの専門家をお招きして，デバイスからクラウドまで一気通貫！のTOPPERS＋Azureアプリの開発を実際に学ぶことができます．
ぜひぜひどうぞです！！

# 開発コンテスト開催！

そして開発したIoTなシステム，ぜひともお披露目しませんか！？？

[![toppers](http://toppers.jp/imgs/logo.gif)](http://toppers.jp/contest.html)

TOPPERSプロジェクトでは「[活用アイデア・アプリケーション開発コンテスト](http://toppers.jp/contest.html)」を開催しています！
TOPPERSプロジェクトの開発成果物を活用するアイデア，もしくは開発成果物を用いたアプリケーションを募集します．
上記ハンズオンセミナーで学んだ知識を使って，IoT作品を開発して応募しませんか？

募集期間は9月1日までです． 
こちらもぜひどうぞ！！