Bump ESP8266 target to SDK v2.1.0 (#2697)

Until now, the ESP8266 target used a non-tagged git hash revision
of the RTOS SDK (from Oct 2017). Moreover, the compiler was also a
custom-built gcc.

This commit sets the RTOS SDK version to v2.1.0, released Oct 2018,
which is the latest old-style SDK for ESP. The commit also changes
the used gcc to an Espressif-provided pre-built toolchain, which is
tagged for the (latest) v3.0.1 SDK release.

(The SDK bump is not to the latest SDK version because the new
v3.x line of the SDK is "ESP-IDF style", which is incompatible with
the current target code base. On the other hand, the toolchain
comes from the latest SDK release because the v2.x line had no
pre-built toolchain suggestions -- but it builds v2.x sources
correctly.)

JerryScript-DCO-1.0-Signed-off-by: Akos Kiss akiss@inf.u-szeged.hu
This commit is contained in:
Akos Kiss
2019-01-15 08:35:39 +01:00
committed by Robert Sipka
parent f02de7a31f
commit 9ced3addaa
5 changed files with 39 additions and 73 deletions
+1 -2
View File
@@ -119,12 +119,11 @@ matrix:
- '${HOME}/.sonar/cache' - '${HOME}/.sonar/cache'
- name: "ESP8266 Build Test" - name: "ESP8266 Build Test"
cache: ccache
install: make -f ./targets/esp8266/Makefile.travis install-noapt install: make -f ./targets/esp8266/Makefile.travis install-noapt
script: make -f ./targets/esp8266/Makefile.travis script script: make -f ./targets/esp8266/Makefile.travis script
addons: addons:
apt: apt:
packages: [gperf, texinfo, wget] packages: [wget]
- name: "Mbed OS 5/K64F Build Test" - name: "Mbed OS 5/K64F Build Test"
addons: addons:
+1 -2
View File
@@ -50,7 +50,7 @@ LDDIR = $(SDK_PATH)/ld
# so we use it instead of the original one from SDK. # so we use it instead of the original one from SDK.
JERRY_LD_FILE = $(CURDIR)/ld/eagle.app.v6.ld JERRY_LD_FILE = $(CURDIR)/ld/eagle.app.v6.ld
CCFLAGS += -Os CCFLAGS += -Os -std=c99
#CCFLAGS += -O0 #CCFLAGS += -O0
TARGET_LDFLAGS = \ TARGET_LDFLAGS = \
@@ -91,7 +91,6 @@ LINKFLAGS_eagle.app.v6 = \
-llwip \ -llwip \
-ldriver \ -ldriver \
-lmain \ -lmain \
-lmesh \
-lmirom \ -lmirom \
-lnet80211 \ -lnet80211 \
-lnopoll \ -lnopoll \
+1 -1
View File
@@ -18,7 +18,7 @@ BUILD_DIR = build/obj-esp8266
COPYTARGET = targets/esp8266/libs COPYTARGET = targets/esp8266/libs
USBDEVICE ?= /dev/ttyUSB0 USBDEVICE ?= /dev/ttyUSB0
JERRYHEAP ?= 20 JERRYHEAP ?= 20
ESPTOOL ?= /opt/Espressif/esptool-py/esptool.py ESPTOOL ?= $(ESPTOOL_PATH)/esptool.py
# compile flags # compile flags
ESP_CFLAGS := -D__TARGET_ESP8266 -D__attr_always_inline___= ESP_CFLAGS := -D__TARGET_ESP8266 -D__attr_always_inline___=
+5 -11
View File
@@ -23,22 +23,16 @@ all:
# Install tools via apt. # Install tools via apt.
install-apt-get-deps: install-apt-get-deps:
sudo apt-get install -q -y gperf texinfo wget sudo apt-get install -q -y wget
# Fetch and build crosstool-NG with support for Xtensa. # Fetch and build crosstool-NG with support for Xtensa.
install-xtensa-kx106-gcc: install-xtensa-kx106-gcc:
git clone https://github.com/jcmvbkbc/crosstool-NG.git ../crosstool-NG -b lx106-g++-1.21.0 wget https://dl.espressif.com/dl/xtensa-lx106-elf-linux64-1.22.0-88-gde0bdc1-4.8.5.tar.gz -O ../xtensa-lx106-elf-linux64-1.22.0-88-gde0bdc1-4.8.5.tar.gz
cd ../crosstool-NG && ./bootstrap cd .. && tar xvfz xtensa-lx106-elf-linux64-1.22.0-88-gde0bdc1-4.8.5.tar.gz
cd ../crosstool-NG && ./configure --enable-local
$(MAKE) -C ../crosstool-NG --no-print-directory -Rr # HACK: without the command line arguments, make bails out with recursion error
cd ../crosstool-NG && ./ct-ng xtensa-lx106-elf
cd ../crosstool-NG && ./ct-ng build
# Fetch Espressif SDK and Xtensa libraries. # Fetch Espressif SDK and Xtensa libraries.
install-espressif-sdk: install-espressif-sdk:
git clone https://github.com/espressif/ESP8266_RTOS_SDK.git ../ESP8266_SDK git clone https://github.com/espressif/ESP8266_RTOS_SDK.git ../ESP8266_RTOS_SDK -b v2.1.0
cd ../ESP8266_SDK && git checkout 2fab9e23d779cdd6e5900b8ba2b588e30d9b08c4
wget https://github.com/esp8266/esp8266-wiki/raw/master/libs/libhal.a -O ../ESP8266_SDK/lib/libhal.a
# Perform all the necessary (JerryScript-independent) installation steps. # Perform all the necessary (JerryScript-independent) installation steps.
install-noapt: install-xtensa-kx106-gcc install-espressif-sdk install-noapt: install-xtensa-kx106-gcc install-espressif-sdk
@@ -49,4 +43,4 @@ install: install-apt-get-deps install-noapt
# Build the firmware (ESP8266 with JerryScript). # Build the firmware (ESP8266 with JerryScript).
script: script:
PATH=$(CURDIR)/../crosstool-NG/builds/xtensa-lx106-elf/bin:$$PATH $(MAKE) -f ./targets/esp8266/Makefile.esp8266 BIN_PATH=build/obj-esp8266 SDK_PATH=$(CURDIR)/../ESP8266_SDK PATH=$(CURDIR)/../xtensa-lx106-elf/bin:$$PATH $(MAKE) -f ./targets/esp8266/Makefile.esp8266 BIN_PATH=build/obj-esp8266 SDK_PATH=$(CURDIR)/../ESP8266_RTOS_SDK
+31 -57
View File
@@ -9,84 +9,58 @@ You need,
* 5V 2A adaptor * 5V 2A adaptor
* USB to RS-232 Serial + RS-232 Serial to Digital or USB-to-RS232 TTL converter * USB to RS-232 Serial + RS-232 Serial to Digital or USB-to-RS232 TTL converter
#### Toolchain #### Tools
Reference [Toolchain](https://github.com/esp8266/esp8266-wiki/wiki/Toolchain) page. The rest of this document will assume that you download all necessary tools into
a common directory structure. For the sake of simplicity, `$HOME/Espressif` will
I've slightly changed the step to use SDK from Espressif official SDK be used as the root of this structure. Feel free to deviate from this but then
(https://github.com/espressif/esp_iot_rtos_sdk) adapt all the paths accordingly.
##### 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/
``` ```
mkdir $HOME/Espressif
dependency specific to x86:
```
sudo apt-get install libc6-dev-i386
``` ```
dependency specific to x64: ##### Toolchain
```
sudo apt-get install libc6-dev-amd64 Download the [toolchain](https://github.com/espressif/ESP8266_RTOS_SDK/tree/v3.0.1#get-toolchain)
``` pre-built for your development platform to `$HOME/Espressif` and untar it. E.g.,
on Linux/x86-64:
crosstool-NG
``` ```
cd /opt/Espressif cd $HOME/Espressif
git clone -b lx106-g++-1.21.0 git://github.com/jcmvbkbc/crosstool-NG.git tar xvfz xtensa-lx106-elf-linux64-1.22.0-88-gde0bdc1-4.8.5.tar.gz
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 ##### Espressif SDK: use Espressif official
``` ```
cd /opt/Esprissif cd $HOME/Esprissif
git clone https://github.com/espressif/ESP8266_RTOS_SDK.git ESP8266_RTOS_SDK.git git clone https://github.com/espressif/ESP8266_RTOS_SDK.git -b v2.1.0
ln -s ESP8266_RTOS_SDK.git ESP8266_SDK
git checkout -b jerry 2fab9e23d779cdd6e5900b8ba2b588e30d9b08c4
``` ```
This verison is tested and works properly. This version 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 ##### ESP image tool
``` ```
cd /opt/Espressif cd $HOME/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 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 sudo dpkg -i esptool_0.0.2-1_i386.deb
``` ```
##### ESP upload tool ##### ESP upload tool
``` ```
cd /opt/Espressif cd $HOME/Espressif
git clone https://github.com/themadinventor/esptool esptool-py git clone https://github.com/themadinventor/esptool
sudo ln -s $PWD/esptool-py/esptool.py crosstool-NG/builds/xtensa-lx106-elf/bin/esptool.py ```
##### Set environment variables
Set environment variables, might also go in your `.profile`:
```
export PATH=$HOME/Espressif/xtensa-lx106-elf/bin:$PATH
export SDK_PATH=$HOME/Espressif/ESP8266_RTOS_SDK
export ESPTOOL_PATH=$HOME/Espressif/esptool
export BIN_PATH=(to output folder path)
``` ```
#### Test writing with Blinky example #### Test writing with Blinky example
@@ -122,7 +96,7 @@ make BOOT=new APP=0 SPI_SPEED=80 SPI_MODE=QIO SPI_SIZE_MAP=2
* write * write
``` ```
sudo /opt/Espressif/esptool-py/esptool.py \ sudo $HOME/Espressif/esptool/esptool.py \
--port /dev/ttyUSB0 write_flash \ --port /dev/ttyUSB0 write_flash \
0x00000 $SDK_PATH/bin/"boot_v1.7.bin" \ 0x00000 $SDK_PATH/bin/"boot_v1.7.bin" \
0x01000 $BIN_PATH/upgrade/user1.2048.new.5.bin \ 0x01000 $BIN_PATH/upgrade/user1.2048.new.5.bin \
@@ -135,7 +109,7 @@ _change `/dev/ttyUSB1` to whatever you have._
or the old way...this works not sure this is ok. or the old way...this works not sure this is ok.
``` ```
cd $BIN_PATH cd $BIN_PATH
sudo /opt/Espressif/esptool-py/esptool.py \ sudo $HOME/Espressif/esptool/esptool.py \
--port /dev/ttyUSB0 write_flash \ --port /dev/ttyUSB0 write_flash \
0x00000 eagle.flash.bin 0x40000 eagle.irom0text.bin 0x00000 eagle.flash.bin 0x40000 eagle.irom0text.bin
``` ```