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

# TL;DR

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

<font color="red">2019/07/04追記：Mac版でもGDB連携が可能になりました！！
[デバッガの署名](#デバッガの署名)をご覧ください．</font>

# はじめに

「[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環境：macOS Mojave (10.14.5)
    - sudo権限が使える必要があります
    - USBポート１口が必要です
    - ディスク容量は１GBくらい使います

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

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



# クロス開発環境の準備

macだと割りとさっくり

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

TOPPERSカーネルのビルドの際には`make`と`ruby`を使用します．
macの場合はXcodeを導入するのが一番手っ取り早いです．

[XcodeをApp Storeからインストール](https://itunes.apple.com/jp/app/xcode/id497799835?mt=12)して，ターミナルを立ち上げてcommand-line toolsをインストールしていきます．

```bash
$ xcode-select --install
```

## クロスコンパイラ

ターゲットのマイコンボードである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)

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

```bash
$ tar xf gcc-arm-none-eabi-6-2017-q2-update-mac.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)

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

```bash
$ tar xzf gnu-mcu-eclipse-openocd-0.10.0-12-20190422-2015-macos.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/
```


### デバッガの署名

mac版のVisual Studio Codeだと，標準設定ではデバッガ連携がうまくいきません．
`arm-none-eabi-gdb`が署名無しアプリとなるのですが，これをVSCodeから実行するところで拡張機能C/C++との具合が悪くなるようです．

![65864570_617819808739359_5391264832244678656_n.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240349/d5966ffe-8e17-62c1-2aba-1d691f63d56e.png)


このため，`arm-none-eabi-gdb`にオレオレ証明書を付けて対応することにします．
[この記事を参考にしてください．](https://qiita.com/cuminseed/items/9e3eb83efe25f3ef6f77)

まずは証明書を作成します．
要点としては，`"Keychain Access.app"`でオレオレ証明書を作ること，
最初の画面では下記のようにすること，

- 名前: gdbcert
- 証明書のタイプ: コード署名
- "デフォルトを無効化"にチェックを入れる

<img width="728" alt="cert1.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240349/3b1ce98f-b772-65f2-c175-fd9735668540.png">


3番目の「証明書情報」では“メールアドレス”を空欄とすること，
10番目の「証明書の場所を指定」では“システム”を選択すること，
あとはデフォルトでOKです．

<img width="728" alt="cert.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240349/ef59fbc5-49ed-de72-0974-9d4a6d29d384.png">


その後，ターミナル上で下記を実行します．

```bash
$ codesign -s gdbcert /usr/local/gcc-arm-none-eabi-6-2017-q2-update/bin/arm-none-eabi-gdb 
# taskgatedを再起動
$ sudo pkill -KILL taskgated
```

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

GR-PEACHのUSBポートをシリアルポートとして認識させるためのドライバをインストールします．
Mac向けのドライバは，以下のURLからダウンロードしてインストーラを実行してください．

- http://www.ftdichip.com/Drivers/VCP.htm

"Mac OS X 10.9 and above"の行の2.4.2を選べば良いはずです．


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

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です．

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

拡張機能は，左下にある歯車の上から３つめ「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お持ちの方は最後までできます．



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

せっかく開発環境を整えたんだから使ってみたい！
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日までです． 
こちらもぜひどうぞ！！


# 参考にした情報（多謝！

- [Mac OS X 10.12 (Sierra) + gdb でコード署名を確認しろと怒られる](https://qiita.com/cuminseed/items/9e3eb83efe25f3ef6f77)