【本文爲ydogg原創,轉載請註明】
注意,不要用root用戶進行操作,需新建普通用戶執行。
本文的環境是CentOS7.2 x64。
一、 交叉編譯環境代碼下載
ESP8266 內部有一個完整的 32bit MCU 核心,主頻 80/160MHz,其體系結構爲 Xtensa lx106。Xtensa 是專爲嵌入式單芯片系統而設計的微處理器,由Tensilica 公司開發。Tensilica 也是發展極爲迅猛的一家公司,主要是在專業性應用程序微處理器上爲高容量嵌入式系統提供解決方案。
Esp8266使用Tensilica
git clone https://github.com/pfalcon/esp-open-sdk.git
根據Readme的說明,代碼主要包含如下部分:
1) 交叉編譯器自身
https://github.com/jcmvbkbc/crosstool-NG
https://github.com/jcmvbkbc/gcc-xtensa
https://github.com/jcmvbkbc/newlib-xtensa
https://github.com/tommie/lx106-hal
2) 樂鑫官方提供的IoT SDK
http://bbs.espressif.com/viewforum.php?f=46
3) 其他第三方依賴代碼
lwIP, http://savannah.nongnu.org/projects/lwip/
Contiki, http://www.contiki-os.org/
axTLS, http://axtls.sourceforge.net/
wpa_supplicant, http://w1.fi/wpa_supplicant/ (source withheld by Espressif)
net80211/ieee80211 (FreeBSD WiFi stack)
如果是桌面安裝,一般以下依賴包都需要安裝:
sudo yum -y install autoconf
sudo yum -y install autoconf
sudo yum -y install gcc
sudo yum -y install gcc.g++
sudo yum -y install gperf
sudo yum -y install bison
sudo yum -y install flex
sudo yum -y install makeinfo
sudo yum -y install texinfo
sudo yum -y install help2man
sudo yum -y install gpatch patch
sudo yum -y install libtool
sudo yum -y install curses
sudo yum -y install curses-lib
sudo yum -y install ncurses-libs.x86_64
sudo yum -y install ncurses-devel.x86_64
sudo yum -y install gcc-c++
sudo yum -y install expat
另外,還要安裝pip以及esptool(固件打包必須用)所依賴的seriral庫。
sudo yum -y install epel-release
sudo pip install esptool
sudo pip install serial
二、編譯
有兩種模式可供選擇:
1) 分離模式
在此模式下,生成交叉編譯工具鏈和樂鑫的IoT SDK沒有依賴關係,
也就是說需要主動設置IoT SDK的頭文件路徑和庫路徑。
用官方的話來說,就是License更clear,也更容易配合樂鑫官方的SDK升級。
執行make STANDALONE=n
2) StandAlone模式
和某版的樂鑫SDK綁定,從而無需單獨指定IoT SDK路徑,方便一些。
執行
make STANDALONE=y
或者 make
執行make命令後,會自動git各種所需組件,會花費相當長的一段時間。
作爲參考,在海外阿里雲主機上花費了約40min。
編譯成功後,需要將路徑添加到PATH中,並添加別名xgcc。
export PATH= 安裝路徑/esp-open-sdk/xtensa-lx106-elf/bin:$PATH
alias xgcc="xtensa-lx106-elf-gcc"
編譯後,在esp-open-sdk目錄下,可以看到各依賴包和樂鑫SDK的目錄已經被生成。Sdk目錄其實是一個符號鏈接,指向被下載的ESP8266_NONOS_SDK_V2.0.0_16_08_10。
參考鏈接:
http://www.esp8266.com/wiki/doku.php?id=toolchain#how_to_setup_a_vm_to_host_your_toolchain