jerryscript/targets/esp8266/docs/ESP-PREREQUISITES.md
Robert Fancsik c3a9821171 Revive target: ESP8266
This patch updates ESP8266 build system and code base as well.
 - Removed unnecessary files.
 - Decreased code size.
 - Refactored jerry_{port, extapi, run}.c to make it more easy to handle.
 - Readme.md is updated as well which contains detailed step by step description about how to set up environment and use JerryScript.

Finally, it solves the related issue #1375.

JerryScript-DCO-1.0-Signed-off-by: Robert Fancsik frobert@inf.u-szeged.hu
2017-11-08 19:13:34 +09:00

3.7 KiB

Preparation

Accessories

You need,

  • 3.3V power supply. You can use bread board power (+5V, +3.3V). I used LM317 like this;
    • Use LM317
    • R1 = 330 Ohm, R2 = 545 Ohm (1K + 1.2K in parallel)
    • 5V 2A adaptor
  • USB to RS-232 Serial + RS-232 Serial to Digital or USB-to-RS232 TTL converter

Toolchain

Reference Toolchain page.

I've slightly changed the step to use SDK from Espressif official SDK (https://github.com/espressif/esp_iot_rtos_sdk)

Toolchain:

dependencies

sudo apt-get install git autoconf build-essential gperf \
    bison flex texinfo libtool libtool-bin libncurses5-dev wget \
    gawk python-serial libexpat-dev
sudo mkdir /opt/Espressif
sudo chown $USER /opt/Espressif/

dependency specific to x86:

sudo apt-get install libc6-dev-i386

dependency specific to x64:

sudo apt-get install libc6-dev-amd64

crosstool-NG

cd /opt/Espressif
git clone -b lx106-g++-1.21.0 git://github.com/jcmvbkbc/crosstool-NG.git
cd crosstool-NG
./bootstrap && ./configure --prefix=`pwd` && make && make install
./ct-ng xtensa-lx106-elf
./ct-ng build

add path to environment file such as .profile

PATH=$PWD/builds/xtensa-lx106-elf/bin:$PATH
Espressif SDK: use Espressif official
cd /opt/Esprissif
git clone https://github.com/espressif/ESP8266_RTOS_SDK.git ESP8266_RTOS_SDK.git
ln -s ESP8266_RTOS_SDK.git ESP8266_SDK
git checkout -b jerry 2fab9e23d779cdd6e5900b8ba2b588e30d9b08c4

This verison is tested and works properly.

set two environment variables such as in .profile

export SDK_PATH=/opt/Espressif/ESP8266_SDK
export BIN_PATH=(to output folder path)
Xtensa libraries and headers:
cd /opt/Espressif/ESP8266_SDK
wget -O lib/libhal.a https://github.com/esp8266/esp8266-wiki/raw/master/libs/libhal.a
ESP image tool
cd /opt/Espressif
wget -O esptool_0.0.2-1_i386.deb https://github.com/esp8266/esp8266-wiki/raw/master/deb/esptool_0.0.2-1_i386.deb
sudo dpkg -i esptool_0.0.2-1_i386.deb
ESP upload tool
cd /opt/Espressif
git clone https://github.com/themadinventor/esptool esptool-py
sudo ln -s $PWD/esptool-py/esptool.py crosstool-NG/builds/xtensa-lx106-elf/bin/esptool.py

Test writing with Blinky example

Get the source

found one example that works with SDK V1.2 (which is based on FreeRTOS, as of writing)

Compile

Read 2A-ESP8266__IOT_SDK_User_Manual_EN document in this link.

It's configured 2048KB flash

BOOT=new APP=1 SPI_SPEED=80 SPI_MODE=QIO SPI_SIZE_MAP=5 make
BOOT=new APP=2 SPI_SPEED=80 SPI_MODE=QIO SPI_SIZE_MAP=5 make

or old way... this works not sure this is ok.

make BOOT=new APP=0 SPI_SPEED=80 SPI_MODE=QIO SPI_SIZE_MAP=2
Flashing
  • power off ESP8266 board
  • connect GPIO0 to GND, connect GPIO2 to VCC
  • power on
  • write
sudo /opt/Espressif/esptool-py/esptool.py \
  --port /dev/ttyUSB0 write_flash \
  0x00000 $SDK_PATH/bin/"boot_v1.7.bin" \
  0x01000 $BIN_PATH/upgrade/user1.2048.new.5.bin \
  0x101000 $BIN_PATH/upgrade/user2.2048.new.5.bin \
  0x3FE000 $SDK_PATH/bin/blank.bin \
  0x3FC000 $SDK_PATH/bin/esp_init_data_default.bin

change /dev/ttyUSB1 to whatever you have.

or the old way...this works not sure this is ok.

cd $BIN_PATH
sudo /opt/Espressif/esptool-py/esptool.py \
--port /dev/ttyUSB0 write_flash \
0x00000 eagle.flash.bin 0x40000 eagle.irom0text.bin
  • power off
  • disconnect GPIO0 so that it is floating
  • connect GPIO2 with serial of 470 Ohm + LED and to GND
  • power On