Lua RTOS for ESP32 を入れたお話。(その1)

##【対象ボード】
・DOIT Esp32 DevKit v1
https://docs.zerynth.com/latest/official/board.zerynth.doit_esp32/docs/index.html

2017/11にaliexpressで購入。(約650円)
購入して満足してその後放置してました。(^-^;)
部屋の整理で見つけたので、そろそろ触るかと一念発起しました。


##【開発言語】
・Lua
購入したキッカケが「Luaで開発出来る」と書いてあったので、今回はLuaで
開発出来る環境を作ります。ちなみに個人的にRTOSという用語が気になるので
「Lua RTOS for ESP32」を入れてみたいと思います。
https://github.com/whitecatboard/Lua-RTOS-ESP32


##【導入環境】
・Windows10 Professional 64bit
ヘタレプログラマなのでWindowsで環境を作っていきます。

##【導入の流れ】
基本的には「Lua RTOS for ESP32」の「How to build」を見れば導入は
問題ないかと思います。英語読める方は↓見た方が手っ取りばやいかと。
https://github.com/whitecatboard/Lua-RTOS-ESP32/wiki/How-to-build

####1. MSYS2を入れる。
Unixシェル環境の「MSYS2」を入れます。
http://www.msys2.org/
ちなみにESP32のツールチェーン環境は32bitで提供されているので、
ここではMSYS2の32bit版を標準インストールします。(C:\msys32)

####2. MSYS2フォルダを入れ替える。
折角入れたMSYS2フォルダですが、リネームします。(msys32 → msys32_old)

ESP-IDFのページよりツールチェインを取得します。
https://docs.espressif.com/projects/esp-idf/en/latest/get-started/windows-setup.html
https://dl.espressif.com/dl/esp32_win32_msys2_environment_and_toolchain-20180110.zip

zipファイルを解凍すると、「msys32」フォルダが展開されるのでCドライブ
直下に入れます。(C:\msys32) リネームしたMSYS2フォルダよりhomeフォルダ
をコピーします。(C:\msys32_old\home → C:\msys32\home)
この時点で C:\msys32_old フォルダは不要なので削除しても問題ないみたいです。

####3. MSYS2を起動する。
Windowsメニュー → [MSYS2 32bit] → [MSYS2 MinGW 32-bit] で起動します。
ESP開発をHomeディレクトリ直下で行うのもアレなので、「esp」フォルダを作ります。
> $ mkdir -p ~/esp
> $ cd ~/esp

####4. ESP32の開発環境をGitから取得する。
> $ git clone --recursive https://github.com/espressif/esp-idf.git
> Cloning into 'esp-idf'...
> ... (省略) ...
> $ git clone --recursive https://github.com/whitecatboard/Lua-RTOS-ESP32
> Cloning into 'Lua-RTOS-ESP32'...
> ... (省略) ...

####5. 「Lua RTOS for ESP32」をビルドします。
はじめに環境ファイルを編集して、ツールのパスを修正します。
> $ cd Lua-RTOS-ESP32
> $ vim ./env
>   export PATH=$PATH:/usr/local/xtensa-esp32-elf/bin
>   export IDF_PATH=~/esp/esp-idf  /* パスを変える */
>   export LIBRARY_PATH="/usr/local/opt/gettext/lib:$LIBRARY_PATH";
>   export PKG_CONFIG_PATH="/usr/local/opt/ncurses/lib/pkgconfig:$PKG_CONFIG_PATH"
>   export CPATH="/usr/local/opt/gettext/include:$CPATH"

次に対象ボードを設定します。
$ make SDKCONFIG_DEFAULTS={BOARD_SYMBOL} defconfig
{BOARD_SYMBOL}は対象ボードによって、値が異なります。
	WHITECAT ESP32 N1 = WHITECAT-ESP32-N1
	ESP32 CORE = ESP32-CORE-BOARD
	ESP32 THING = ESP32-THING
	GENERIC = GENERIC

今回は「ESP32-CORE-BOARD」を設定します。
> $ make SDKCONFIG_DEFAULTS=ESP32-CORE-BOARD defconfig

次にメニュー設定を開いて、UARTのポート指定を行います。
> $ make menuconfig

コマンドを入力すると、メニュー画面に入ります。
「Serial flasher config / Default serial port」を選択します。
初期値は「/dev/tty.SLAB_USBtoUART」と設定されていますが、
これを**ESP32ボードをUSB接続した際に認識したCOMポート**に変えます。
今回は「/dev/tty.SLAB_USBtoUART」→「COM8」に変更しました。

####6. ESP32ボードをUSB接続して、Flash書き込みを行う。
> $ make flash
> $ make flashfs

7. リセットして、Lua RTOS のプロンプトが表示されたら成功です。

>   Lua RTOS beta 0.1. Copyright (C) 2015 - 2018 whitecatboard.org
> 
>   build 1535960810
>   commit 0c27ef294a8a1bb87a4202022a1cb8636521ceed
>   Running from factory partition
>   board type ESP32COREBOARD
>   cpu ESP32 rev 1 at 240 Mhz
>   spiffs0 start address at 0x310000, size 512 Kb, partition spiffs
>   spiffs0 mounted
> 
>   Lua RTOS beta 0.1 powered by Lua 5.3.4
> 
>   Executing /system.lua ...
>   Executing /autorun.lua ...
> 
>   / >

とりあえず当初の目的である Lua RTOS は入れることが出来ました。
次回以降は Lua RTOS 上での開発について調査してみます。

続く...かも