基于ESP8266 SDK开发基础
本文编译环境采用ubuntu16.04,一般来说,适用于所有版本Linux,可选择在虚拟机/实体主机中编译安装;更新固件是在win7系统下使用官方工具完成。
一. 编译环境
1. ESP8266编译工具
笔者已将工具链分享到百度网盘,可直接下载。
2. 解压工具链到/opt目录
tar -jxvf xtensa-lx106-elf.tar.bz2 -C /opt
3. 配置编译环境
(1)添加环境变量
sudo chmod -R 777 /opt/xtensa-* sudo vim /etc/bash.bashrc
(2)最后一行添加:
export PATH=$PATH:/opt/xtensa-lx106-elf/bin
(3)重启系统或使用如下命令使配置生效
source /etc/bash.bashrc
4. 打开终端,查看编译链是否安装成功
xtensa-lx106-elf-gcc -v
二. SDK编译演示
1. ESP8266 SDK包分RTOS和Non-OS版本,具体介绍请查看官方文档
2. 不同版本SDK下载,本文以ESP8266 NONOS SDK V2.2.1为例,解压文件如下:
bin:编译生成的 BIN文件,可直接下载到Flash中。 documents: SDK 相关的文档或链接。 driver_lib:外设驱动的库文件,如: UART、I2C 和 GPIO 等。 examples:可供用户二次开发的示例代码,如 IoT Demo 等。 include: SDK 自带头文件,包含了用户可使用的相关 API 函数及其他宏定义,用户需修改。 ld:链接时所需的脚本文件,若无特殊需求,用户无需修改。 lib:SDK 提供的库文件。 third_party:乐鑫开放源代码的第三方库,当前包含 lwIP、mbedTLS等。 tools:编译 BIN 文件所需的工具,用户无需修改。
3. 进入 ./ESP8266_NONOS_SDK-2.2.1/examples 目录下,可以看到官方提供的众多例程,如下:
4. 以at例程作为编译演示
(1)复制 ./ESP8266_NONOS_SDK-2.2.1/examples 下的 at例程到和examples同一级目录下
(2)打开linux终端,切换到at文件夹目录下,输入" xtensa-lx106-elf-gcc -v "确保有信息输出,否则请参考步骤一来安装/生效编译工具。
(3)执行gen_misc.sh脚本,生成和自己硬件配置匹配的bin镜像。
bash ./gen_misc.sh
(4)关于此处的编译选型,可参考目录下的 !!!readme!!!.txt 文件。
<1> BOOT Possible value: none/old/new none: no need boot old: use boot_v1.1 new: use boot_v1.2+ Default value: none **选择1** <2> SPI_SPEED Possible value: 20/26.7/40/80 Default value: 40 **保持默认** <3> SPI_MODE Possible value: QIO/QOUT/DIO/DOUT Default value: QIO **选择2** <4> SPI_SIZE Possible value: 0/2/3/4/5/6 Default value: 0 **选择2** 注意: <3><4>选项和SPI Flash连接方式及容量一定要匹配,本例程使用8Mbit Flash,连接方式为DIO。
5. 编译成功后,输出信息如下:
根据打印信息,可以知道生成的新的bin,位于../bin/upgrade/目录,将编译成功的bin文件copy出来,直接下载即可。
三. 镜像烧写更新
1. 烧写工具下载
2. 从下载的ESP8266_NONOS_SDK-2.2.1包中,提取 boot_v1.7.bin、esp_init_data_default_v08.bin、blank.bin,再添加上编译所得的 user1.1024.new.2.bin,共4个文件。
3. 尽管下载工具有不同版本,但无论选择哪个版本,都必须确保配置正确,如下:
(1)镜像烧写地址:
(2)SPI选项配置:
4. 配置完成后,使用串口直接下载镜像即可。
注意:
下载时,需要先将GPIO0接GND使其进入UART Download模式;下载完成后,将此管脚拉到VCC,才能正常启动。类似STM32的BOOT0。
到此,ESP8266编译环境搭建、SDK编译方法以及更新固件方法介绍完。