ESP32の開発をEclipse+Pleiadesで行う

#はじめに

先日、[ESP32(ESP-WROOM-32)でLチカ (WindowsでESP-IDF使用)](http://qiita.com/rukihena/items/d226972972a360fc2648)という記事を書いたのですが、コマンドラインでの開発は大変です。

そこで、Eclipse + Pleiades All in One 上で開発しちゃおうという方法を紹介します。

Eclipse は皆さんご存知の統合開発環境です。

Pleiades は、Eclipse を日本語化するものですが、日本語化の他にEclipseの様々なプラグインをまとめた Pleiades All in One というものがあり、日本国内では割とスタンダードになってるんじゃないかと思っています。

そのスタンダードな環境でESP32の開発を行えたら便利ですよね！

尚、開発言語は C/C++ を使うことになります。（Eclipseを使いますが、Javaで開発できるわけではありません）

[Eclipse IDE on Windows](http://esp-idf.readthedocs.io/en/latest/eclipse-setup-windows.html) を元に、Pleiades向けに修正しつつこの記事を書いております。

#前提条件

- [ESP32(ESP-WROOM-32)でLチカ (WindowsでESP-IDF使用)](http://qiita.com/rukihena/items/d226972972a360fc2648) の環境構築が終わっていること

- **ESP-IDF が現在の最新版であること**

前の記事をみてすぐ作った環境だとギリギリアウトと思われます。

ESP-IDF を最新にするには、MSYSのシェルで
`cd /c/esp-idf/` （←自分の環境に合わせてください）
`git pull`
`git submodule update`
を実行します。

#Pleiades All in One のインストール

[Pleiades All in One](http://mergedoc.osdn.jp/index.html#/pleiades_distros4.6.html) のインストールについてはググレカスと言いたいところですが、最初に迷うのは **どれをダウンロードしたらいいんだ？** ということだと思います。

ここでのオススメは、Windows 64bit - Full Edition - Ultimate です。

![select_pleiades_edition.png](https://qiita-image-store.s3.amazonaws.com/0/104360/4d5db384-3fb0-be10-3e68-a1f128905a0f.png)


使用しているWindows が 32bit版なら、当然32bit を選びます。

Standard Edition は、どうしてもHDD容量を食いたくない場合は選んでもいいかもしれません。

用途を C/C++ の開発に限るなら、Ultimate でなく C/C++ を選んでもいいかもしれません。

基本的には CDT が入っていれば大丈夫だと思いますが、私の手元では Windows 64bit - Full Edition - Ultimate を使って動作検証しております。

インストール方法を簡単に説明すると、ダウンロードしたzip を適当なフォルダ、例えば `c:\pleiades` に展開するだけです。

気を付けるべき点としては、パスが長いとパス長制限に引っかかるので、短めの名前のフォルダに展開することです。

以下、`c:\pleiades` に置いたものとして説明していきます。

#プロジェクトのインポート

ESP-IDFのプロジェクトが `C:\Users\rukihena\OneDrive\esp32\lchika` に存在する前提で進めます。まだ作っていない場合は、[ESP32(ESP-WROOM-32)でLチカ (WindowsでESP-IDF使用)](http://qiita.com/rukihena/items/d226972972a360fc2648)をみて作りましょう。

また、`make menuconfig` が終わっていることも前提条件となります。

`C:\pleiades\eclipse\eclipse.exe` をダブルクリックして、Pleiades All in One を起動します。（Pleiades All in One と呼ぶのは長いので、これ以降、単にEclipseと呼びます。）

ここからは箇条書きで

- ファイル → インポート

- C/C++ → Makefile プロジェクトとしての既存コード を選び、次へ

- 既存コードのロケーションに、`C:\Users\rukihena\OneDrive\esp32\lchika` を入力（←前の記事で作成したLチカコードがある場所です。適宜自分の環境に合わせてください。）

- インデクサー設定のツールチェーンはとりあえずの設定として Cygwin GCC を選択

- 完了ボタンクリック

以上で、Eclipse のプロジェクト・エクスプローラー ペインに lchika プロジェクトが出来上がりました。

Cygwin GCC が見つからないみたいな警告が出るかもしれませんが、あとで設定しなおすので無視してください。（手元の環境では警告が出ませんでした。）

# プロジェクトプロパティ

ここから、プロジェクトの設定をしていきます。

- lchika プロジェクトを右クリック → プロパティ

- C/C++ ビルド

    - デフォルト・ビルド・コマンドを使用 のチェックボックスを OFF
    - ビルドコマンド に `python ${IDF_PATH}/tools/windows/eclipse_make.py` を入力
- C/C++ ビルド の配下の 環境
    - 追加 ボタンから、名前：`BATCH_BUILD` 値：`1`
    - 追加 ボタンから、名前：`IDF_PATH` 値：`C:/esp-idf`
    - PATH をダブルクリックから、既存の値を削除し、値：`C:\msys32\usr\bin;C:\msys32\mingw32\bin;C:\msys32\opt\xtensa-esp32-elf\bin` 

- C/C++ 一般 の配下の Preprocessor Include Paths, Macros,etc.
    - プロバイダー タブ
        - "CDT GCC Built-in Compiler Settings Cygwin" を選択し、下に出てくる "Command to get compiler specs" の `${COMMAND}` を `xtensa-esp32-elf-gcc` に変更。つまり、 `xtensa-esp32-elf-gcc ${FLAGS} -E -P -v -dD "${INPUTS}"` とします。
        - "CDT GCC Build Output Parser" を選択し、下に出てくる "Compiler command pattern" の最初に `xtensa-esp32-elf-` を追加。つまり、`xtensa-esp32-elf-(g?cc)|([gc]\+\+)|(clang)` とします。


# ビルド

- メニューの プロジェクト→ プロジェクトのビルド

もしくは、

- プロジェクトエクスプローラーのlchikaプロジェクト右クリック → プロジェクトのビルド

でビルドできます。

手順通り正しくできていれば、ビルドが完了し、ソース(main.c)にエラーのマークがついてない状態になります。
ビルドの成果物は、build フォルダの下の app-template.elf です。
ESP-IDFの環境が古いと、eclipse_make.pyが見つからないと言われるか、ソース(main.c)にエラーが付きまくりの状態になったりします。
もしかしたら、lchikaのプロジェクト（元は esp-idf-template）自身も取得しなおさなければならないかもしれません。。。

# 書き込み

書き込みは、コマンドラインからだと `make flash` を打つのですが、もちろんこの操作も Eclipse 上から行うことができます。

- プロジェクトエクスプローラーのlchikaプロジェクト右クリック → ターゲットをビルドする → 作成
    - ターゲット名に flash を入力 → OK

これで、プロジェクト配下に ターゲットをビルドする→flash というのが出来上がります。
それをダブルクリックすると、書き込みが始まります。
（自動書き込みに対応していないボードを使用している場合は、IO0とリセットボタンの操作を忘れずに！）

# コンテンツアシストについて

EclipseでJavaなどの開発をしている場合は、入力中に自動的に入力候補が表示されますが、C/C++の場合は明示的に候補を出してもらう操作をしなければならないようです。

CTRL+SPACE で候補が出てきます。

![content_assist.png](https://qiita-image-store.s3.amazonaws.com/0/104360/e0487ab1-efab-8957-64ee-0ad7db9e05c2.png)

# おわりに

コンテンツアシストが効くと俄然やる気がでてきますよね？

このあと、デバッガを使う（ブレークポイントを仕掛けたりする）話を~~書く予定です~~:grinning:

書きました。
[ESP32 を FT232H でつないで OpenOCD+GDBでデバッグ](http://qiita.com/rukihena/items/f5585436c16f74d0f01d)