【本文为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)
二、编译
有两种模式可供选择:
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