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開發環境