ESP8266 建立Linux開發環境

ESP8266 建立Linux開發環境

Toolchain

官方提供的開發環境是利用虛擬環境再配合檔案分享的方式讓程式碼在虛擬機器與實體機器間分享並且順利編譯程式碼,此篇要利用已經預先編譯好各平台的開發工具集直接放在自已的平台上執行,不需要在自已的平台上面重新編譯好開發工具集才能使用。

安裝相依套件

開發工具使用環境中,必需要具備一些套件或是函數庫,像:make、git、autoconf…等,以下介紹以2個Linux分支示範安裝

Ubuntu/Debian

更新套件列表

安裝套件之前先更新套件列表,以免安裝到舊版本的套件:


sudo apt update

執行完成後會看到返回訊息,如果需要套件更新列表就照訊息中的執行apt list --upgradable,在這不需要執行:

:
:
:
Fetched 9954 kB in 8s (1130 kB/s)                                              
Reading package lists... Done
Building dependency tree       
Reading state information... Done
22 packages can be upgraded. Run 'apt list --upgradable' to see them.



檢查系統架構

某些套件安裝時需要依照你安裝系統架構進行安裝,架構分為32bit(x86)、64bit(x64),執行uname確定你的版本:

uname -m


如果你是64bit版本會看到結果:

x86_64


32bit比較特別,可能會有兩種:

i686


i386


安裝套件

  • 32bit

apt install git autoconf build-essential gperf bison flex texinfo libtool libncurses5-dev wget gawk libc6-dev-i386 python-serial libexpat-dev
  • 64bit

apt install git autoconf build-essential gperf bison flex texinfo libtool libncurses5-dev wget gawk libc6-dev-amd64 python-serial libexpat-dev

Arch

Arch Linux具有套件群組安裝套件,套件群組意指具備某些類型操作需要,像base-devel套件群組針對開發者安裝開發時需要的基本套件,像gcc、autoconf已經包含,所以另外再安裝二個套件有關pySerial、gpref:

pacman -S base-devel python-pyserial gperf


開發工具

ESP8266 Community Forum提供開發工具建置教學放在Github上的esp8266-wiki上,不過此次是利用該團隊建立的ESP8266 Core for Arduino中有提供package_esp8266com_index.json給Arduino IDE當設定檔,丹尼從裡面解析出Linux平台開發工具(Toolchain)的下載位置,如此一來,不用照教學透過crosstool-NG重新編譯ESP8266的開發工具。

64bit

http://arduino.esp8266.com/linux64-xtensa-lx106-elf-gb404fb9.tar.gz


32bit

http://arduino.esp8266.com/linux32-xtensa-lx106-elf.tar.gz


下載完後自行解開至自已的環境並記住路徑。

標頭檔與函式庫

開發工具並未包含ESP8266使用的函式庫及標頭檔必需要先下載,首先先假設開發工具解壓至xtensa-lx106-elf目錄。

進入開發工具所在目錄

cd xtensa-lx106-elf

查看目錄結構,執行列表

ls -l


執行結果

    total 1660
    drwxrwxr-x 2 danny danny   4096  8月  4 14:47 bin
    -rw-rw-r-- 1 danny danny 691490  5月 13  2015 build.log.bz2
    drwxrwxr-x 7 danny danny   4096  8月  4 14:47 include
    -rw-rw-r-- 1 danny danny 979111  8月  2 13:50 include.tgz
    drwxrwxr-x 4 danny danny   4096  8月  4 14:47 lib
    drwxrwxr-x 3 danny danny   4096  8月  4 14:47 libexec
    drwxrwxr-x 4 danny danny   4096  8月  4 14:47 share
    drwxrwxr-x 9 danny danny   4096  8月  4 14:47 xtensa-lx106-elf

進入第二層目錄xtensa-lx106-elf

    cd xtensa-lx106-elf


下載缺少的函式庫至lib目錄

    wget -O lib/libc.a https://github.com/esp8266/esp8266-wiki/raw/master/libs/libc.a
    wget -O lib/libhal.a https://github.com/esp8266/esp8266-wiki/raw/master/libs/libhal.a


標頭檔下載並解壓

wget -O include.tgz https://github.com/esp8266/esp8266-wiki/raw/master/include.tgz
tar zxvf include.tgz


解壓後會將標頭檔全部解壓至include目錄。

路徑設定

開發環境建置完成後,接下來將開發工具移動至你存放的路徑,並進入xtensa-lx106-elf/bin目錄,並且執行


pwd

執行結果會回報路徑


/opt/xtensa-lx106-elf/bin

丹尼將開發工具移至/opt目錄,一般來說只要自行安裝的都會建議移至此目錄,此時將路徑加到PATH變數,加到PATH環境變數提供二種

~/.bashrc

使用編輯器開啟~/.bashrc檔案

nano ~/.bashrc

並加入PATH環境變數

PATH="/opt/xtensa-lx106-elf/bin:$PATH"

profile

進入/etc/profile.d,建立一個新檔案名為xtensa-lx106-elf-env.sh


sudo nano /etc/profile.d/xtensa-lx106-elf-env.sh

並加入PATH環境變數後存檔

PATH="/opt/xtensa-lx106-elf/bin:$PATH"

以上完成後,路徑生效時就能執行xtensa-lx106-elf-gcc -v測試一下路徑有沒有正確,正確會看到執行結果如:


Using built-in specs. COLLECT_GCC=xtensa-lx106-elf-gcc COLLECT_LTO_WRAPPER=/opt/xtensa-lx106-elf/bin/../libexec/gcc/xtensa-lx106-elf/4.8.2/lto-wrapper Target: xtensa-lx106-elf Configured with: /opt/Espressif/crosstool-NG/.build/src/gcc-4.8.2/configure --build=x86_64-build_unknown-linux-gnu --host=x86_64-build_unknown-linux-gnu --target=xtensa-lx106-elf --prefix=/opt/Espressif/crosstool-NG/builds/xtensa-lx106-elf --with-local-prefix=/opt/Espressif/crosstool-NG/builds/xtensa-lx106-elf/xtensa-lx106-elf/sysroot --disable-libmudflap --with-sysroot=/opt/Espressif/crosstool-NG/builds/xtensa-lx106-elf/xtensa-lx106-elf/sysroot --with-newlib --enable-threads=no --disable-shared --with-pkgversion='crosstool-NG 1.20.0' --disable-__cxa_atexit --with-gmp=/opt/Espressif/crosstool-NG/.build/xtensa-lx106-elf/buildtools --with-mpfr=/opt/Espressif/crosstool-NG/.build/xtensa-lx106-elf/buildtools --with-mpc=/opt/Espressif/crosstool-NG/.build/xtensa-lx106-elf/buildtools --with-isl=/opt/Espressif/crosstool-NG/.build/xtensa-lx106-elf/buildtools --with-cloog=/opt/Espressif/crosstool-NG/.build/xtensa-lx106-elf/buildtools --with-libelf=/opt/Espressif/crosstool-NG/.build/xtensa-lx106-elf/buildtools --enable-lto --enable-target-optspace --disable-libgomp --disable-libmudflap --disable-nls --disable-multilib --enable-languages=c Thread model: single gcc version 4.8.2 (crosstool-NG 1.20.0)

參考資料

關鍵字:

快速建立ESP8266 Linux開發環境