diff --git a/.travis.yml b/.travis.yml index ad8bda712c..6dcf5c1833 100644 --- a/.travis.yml +++ b/.travis.yml @@ -122,12 +122,11 @@ matrix: - '${HOME}/.sonar/cache' - name: "ESP8266 Build Test" - cache: ccache install: make -f ./targets/esp8266/Makefile.travis install-noapt script: make -f ./targets/esp8266/Makefile.travis script addons: apt: - packages: [gperf, texinfo, wget] + packages: [wget] - name: "Mbed OS 5/K64F Build Test" addons: diff --git a/targets/esp8266/Makefile b/targets/esp8266/Makefile index a87fb43460..915f6be726 100644 --- a/targets/esp8266/Makefile +++ b/targets/esp8266/Makefile @@ -50,7 +50,7 @@ LDDIR = $(SDK_PATH)/ld # so we use it instead of the original one from SDK. JERRY_LD_FILE = $(CURDIR)/ld/eagle.app.v6.ld -CCFLAGS += -Os +CCFLAGS += -Os -std=c99 #CCFLAGS += -O0 TARGET_LDFLAGS = \ @@ -91,7 +91,6 @@ LINKFLAGS_eagle.app.v6 = \ -llwip \ -ldriver \ -lmain \ - -lmesh \ -lmirom \ -lnet80211 \ -lnopoll \ diff --git a/targets/esp8266/Makefile.esp8266 b/targets/esp8266/Makefile.esp8266 index 34dcf71ebe..89f86997c9 100644 --- a/targets/esp8266/Makefile.esp8266 +++ b/targets/esp8266/Makefile.esp8266 @@ -18,7 +18,7 @@ BUILD_DIR = build/obj-esp8266 COPYTARGET = targets/esp8266/libs USBDEVICE ?= /dev/ttyUSB0 JERRYHEAP ?= 20 -ESPTOOL ?= /opt/Espressif/esptool-py/esptool.py +ESPTOOL ?= $(ESPTOOL_PATH)/esptool.py # compile flags ESP_CFLAGS := -D__TARGET_ESP8266 -D__attr_always_inline___= diff --git a/targets/esp8266/Makefile.travis b/targets/esp8266/Makefile.travis index aa182c118b..16787222d4 100644 --- a/targets/esp8266/Makefile.travis +++ b/targets/esp8266/Makefile.travis @@ -23,22 +23,16 @@ all: # Install tools via apt. 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. install-xtensa-kx106-gcc: - git clone https://github.com/jcmvbkbc/crosstool-NG.git ../crosstool-NG -b lx106-g++-1.21.0 - cd ../crosstool-NG && ./bootstrap - 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 + 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 .. && tar xvfz xtensa-lx106-elf-linux64-1.22.0-88-gde0bdc1-4.8.5.tar.gz # Fetch Espressif SDK and Xtensa libraries. install-espressif-sdk: - git clone https://github.com/espressif/ESP8266_RTOS_SDK.git ../ESP8266_SDK - cd ../ESP8266_SDK && git checkout 2fab9e23d779cdd6e5900b8ba2b588e30d9b08c4 - wget https://github.com/esp8266/esp8266-wiki/raw/master/libs/libhal.a -O ../ESP8266_SDK/lib/libhal.a + git clone https://github.com/espressif/ESP8266_RTOS_SDK.git ../ESP8266_RTOS_SDK -b v2.1.0 # Perform all the necessary (JerryScript-independent) installation steps. 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). 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 diff --git a/targets/esp8266/docs/ESP-PREREQUISITES.md b/targets/esp8266/docs/ESP-PREREQUISITES.md index 3399508907..de7bb4a80d 100644 --- a/targets/esp8266/docs/ESP-PREREQUISITES.md +++ b/targets/esp8266/docs/ESP-PREREQUISITES.md @@ -9,84 +9,58 @@ You need, * 5V 2A adaptor * 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 +be used as the root of this structure. Feel free to deviate from this but then +adapt all the paths accordingly. -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/ - +mkdir $HOME/Espressif ``` -dependency specific to x86: -``` -sudo apt-get install libc6-dev-i386 -``` +##### Toolchain -dependency specific to x64: -``` -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 -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 +cd $HOME/Espressif +tar xvfz xtensa-lx106-elf-linux64-1.22.0-88-gde0bdc1-4.8.5.tar.gz ``` ##### 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 +cd $HOME/Esprissif +git clone https://github.com/espressif/ESP8266_RTOS_SDK.git -b v2.1.0 ``` -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 -``` +This version is tested and works properly. ##### 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 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 +cd $HOME/Espressif +git clone https://github.com/themadinventor/esptool +``` + +##### 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 @@ -122,7 +96,7 @@ make BOOT=new APP=0 SPI_SPEED=80 SPI_MODE=QIO SPI_SIZE_MAP=2 * write ``` -sudo /opt/Espressif/esptool-py/esptool.py \ +sudo $HOME/Espressif/esptool/esptool.py \ --port /dev/ttyUSB0 write_flash \ 0x00000 $SDK_PATH/bin/"boot_v1.7.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. ``` cd $BIN_PATH -sudo /opt/Espressif/esptool-py/esptool.py \ +sudo $HOME/Espressif/esptool/esptool.py \ --port /dev/ttyUSB0 write_flash \ 0x00000 eagle.flash.bin 0x40000 eagle.irom0text.bin ```