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