1. ESP8266固件的编译(交叉编译工具链的建立)
来源:互联网 发布:逻辑回归 知乎 编辑:程序博客网 时间:2024/05/16 10:25
【本文为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:$PATHalias 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
- 1. ESP8266固件的编译(交叉编译工具链的建立)
- 2. ESP8266固件的编译(nodemcu固件)
- cross compiler Toolchain(交叉编译工具链)的建立
- cross compiler Toolchain(交叉编译工具链)的建立
- AT91RM9200引导程序的建立--------建立交叉编译工具链
- 3. ESP8266固件的编译(乐鑫原厂SDK)
- qt交叉编译工具的建立
- 4. ESP8266固件的编译(NONOS SDK固件 AT固件)
- 建立交叉编译工具链
- ARM-Linux交叉编译工具链的建立
- 5. ESP8266固件的编译(RTOS SDK固件)
- 编译ESP8266固件说明
- arm-linux-gcc(4.6.1)交叉编译工具链的建立
- imote2交叉编译链的建立
- 交叉编译环境的建立
- 交叉编译环境的建立
- 交叉编译环境的建立
- 交叉编译环境的建立
- 算法课第十三周作业 | Counting Bits
- LINUX GDB调试器
- 拾遗
- Android Studio常用技巧汇总
- 25道核心JavaScript面试题
- 1. ESP8266固件的编译(交叉编译工具链的建立)
- 查频段
- Valid Parentheses
- 多线程编程需要注意的问题
- 【Linux】SecureCRT的快捷键
- Spring+Springmvc+Hibernate框架搭建
- 制作动态库并使用
- 实际工作:----Redis之——Spring基于注解整合Redis
- Java语言实现二进制与十进制间转换