pebble/third_party/jerryscript/targets/esp8266/docs/ESP-PREREQUISITES.md
2025-01-27 11:38:16 -08:00

4 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 for x86

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

dependencies for x64

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

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
cd ESP8266_SDK
git checkout -b jerry a2b413ad2996450fe2f173b6afab243f6e1249aa

We use SDK 1.2.0 version which has stdlib.h and others. Latest 1.3.0 version, as of writing this document, doesn't have it. (If anyone knows how to use latest version, please add an issue or send a PR.)

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.4(b1).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

LED should blink on and off every second