ESP-IDF4.0をEclipseで開発できるようにしてみた

ESP-IDFが4.0からEclipseに正式対応するみたいなので試してみました

環境はWindows10です

以下のサイトに従って環境を構築していきます
idf-eclipse-plugin/README.md at master · espressif/idf-eclipse-plugin · GitHub
https://github.com/espressif/idf-eclipse-plugin/blob/master/README.md

トラブルが起きたときの備忘録として残そうと思ってこの記事を書いていたのですが最後のビルドの部分以外はほぼそのままです(´・ω・`)

#ダウンロード

Java 8 and above : Download and install Java SE
https://www.oracle.com/technetwork/java/javase/downloads/index.html

Python 3.5 and above : Download and install Python
https://www.python.org/downloads/

Eclipse 2018-12 CDT and above : Download and install Eclipse CDT package 
※Eclipse IDE for C/C++ Developers
https://www.eclipse.org/downloads/packages/

ESP-IDF 4.0 and above : Follow the download instructions from here
ページ一番下のesp-idf-v4.0.zip

https://github.com/espressif/esp-idf/releases/tag/v4.0

Git : Get the latest git
https://git-scm.com/downloads

Use Windows'default console windowを選択した

それぞれをインストールして必要な場合PATHを設定します
自分の場合は
・JDKのbinへのパス
・GITのbinへのパス


#ESP-IDFプラグインのインストール

Eclipseを起動して
HELP > Install New Software
Addをクリック

Nameに
Espressif IDF Plugins for Eclipse
を入力

Locationに
https://dl.espressif.com/dl/idf-eclipse-plugin/updates/latest/
を入力

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/298776/9e26f0aa-0974-e9d2-3585-5a422c9f138a.png)


Espressif IDFをチェックして全てをインストール

※「署名がついてないけど信用するか」みたいなことを聞かれるのでInstall Anywayをクリックする

#ESP-IDF Toolのインストール

Help > Espressif IDF Tools Manager > Install Tools
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/298776/163777ef-9d2d-256f-7707-1811d54a2ed3.png)

Browse...をクリックしてESP-IDFのインストールディレクトリと
GITのexeの場所を選択
Pythonはインストールされていれば自動で表示されます

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/298776/2486e55a-622a-aaa1-7ad3-6d8a79342d11.png)


OKをクリックするとバックグラウンドでインストールが進行します

#プロジェクトの作成

Window > Perspective > Open Perspective > Other...
をクリック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/298776/d8ecbbdd-691b-7839-e37d-0f99802362c5.png)

C/C++(default)を選択してクリックしてC/C++ Perspectiveを開きます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/298776/17475677-a808-2790-e68f-db8347a81925.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/298776/c8fba325-5729-e441-7ab1-b17563d19581.png)

File > New > Espressif IDF Project をクリック
もし表示されていない場合は
Window > Perspective > Reset Perspective..
でPerspectiveをリセットすると表示されます

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/298776/476107e8-f524-ef0f-5ae7-d78dd8378738.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/298776/e6692a06-85fc-08b0-7803-1dd511f184a1.png)

File > New > Espressif IDF Project をクリックしてNameにプロジェクト名を入力
Create a project using one of the templatesにチェックしてhello_worldを選択してfinishをクリック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/298776/c3a46fd5-792d-b88a-a803-4cc16965729b.png)

#Launchターゲットの設定

Launchバーの左から三番めのドロップダウンをクリックして
New Launch Targetを選択

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/298776/aeef762f-58bc-edee-43c3-0a75e1782627.png)

ESP TargetをクリックしてNext >
Nameは適当につけてシリアルポートを選択
ESP32などを接続してからNew Launch Targetを選択すると自動で一覧に追加されます

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/298776/d05b58db-2f83-d3e4-ae66-3201c04d1e6e.png)

HelloWorldプロジェクトが追加された直後はコンパイルエラーが表示されていますが構わずBuildボタンを押すと正常にコンパイルされてエラーも表示されなくなります

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/298776/af25353c-b43d-17cc-cd4f-d0895a19ba48.png)

※公式チュートリアルから引用
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/298776/e12dc1bd-6a4a-f899-0d12-eab243e52cd9.png)

v4.0Beta2からv4.0になった段階でビルドするとエラーがでるようになりました

```
Traceback (most recent call last):
  File "D:/uti/esp-idf-v4.0/tools/kconfig_new/confgen.py", line 571, in <module>
    main()
  File "D:/uti/esp-idf-v4.0/tools/kconfig_new/confgen.py", line 230, in main
    config = kconfiglib.Kconfig(args.kconfig)
  File "D:\uti\esp-idf-v4.0\tools\kconfig_new\kconfiglib.py", line 656, in __init__
    self.top_node)  # prev_node
  File "D:\uti\esp-idf-v4.0\tools\kconfig_new\kconfiglib.py", line 1636, in _parse_block
    node)         # prev_node
  File "D:\uti\esp-idf-v4.0\tools\kconfig_new\kconfiglib.py", line 1587, in _parse_block
    prev_node)
  File "D:\uti\esp-idf-v4.0\tools\kconfig_new\kconfiglib.py", line 1587, in _parse_block
    prev_node)
  File "D:\uti\esp-idf-v4.0\tools\kconfig_new\kconfiglib.py", line 1551, in _parse_block
    while self._has_tokens or self._next_line():
  File "D:\uti\esp-idf-v4.0\tools\kconfig_new\kconfiglib.py", line 1186, in _next_line
    self._line = self._file.readline()
UnicodeDecodeError: 'cp932' codec can't decode byte 0xef in position 3649: illegal multibyte sequence
```

これはWindows上でPythonを動かすとデフォルトでファイルをcp932(SHIFT-JIS)で読み込もうとするのでUTF-8の２バイト文字を読もうしてエラーが発生します

\esp-idf-v4.0\tools\kconfig_new\http://kconfiglib.pyの1128行目(def _open()の部分)にencodingを追加するとビルドが通るようになります

return open(filename)
↓
return open(filename, encoding="utf-8")

#シリアルコンソールを開く

ツールバーのOpen a Terminalをクリックしてから
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/298776/a34ed3b2-310c-812d-a1e0-b8bf06af3efc.png)

Choose TerminalをSerial Terminalに変更、
以下は自分の環境に合わせて変更します

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/298776/516ffdd3-46f6-bd5b-298b-59b9581169e0.png)

#プロジェクトを書き込む

ESP32を接続した状態で▶ボタンを押すと転送されて実行されます！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/298776/194abc0a-7c01-4965-ab3d-49b504b6717c.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/298776/e16195b7-f796-a04f-73c0-a05451bd0f3e.png)

#sdkconfigの設定

sdkconfig.defaultsをコピーしてsdkconfigを作成
ダブルクリックするとsdkconfigエディタが立ち上がるはずがエラーが発生

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/298776/8ebd2157-8eae-e7a5-50bb-c3e0ab72a6ab.png)

何度かエディタを開いたり閉じたりしてるうちにStarting JSON Configuration Serverダイアログが開いてServerが起動します

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/298776/570e1668-5684-4298-43c2-466c4c06706b.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/298776/e787cd2a-33b4-6bad-535b-0db907367d35.png)

何度かServer起動に失敗したので根気よくダブルクリックしましょう