物联网模块ESP8266环境搭建

物联网模块ESP8266环境搭建

ESP8266是当下非常流行的一款物联网wifi模块,虽然是国产芯片,但国外也同样有非常多的应用。很多极客用这款物联网模块做出非常炫酷的东西。

ESP8266官方网站网提供了两种SDK,RTOS SDK和非OS SDK,都是基于Linux环境。由于芯片的烧录是Windows环境,所以最好使用虚拟机来搭建ESP8266开发环境,不然你安装了一个Linux电脑还需要另外一个windows电脑来烧录程序。

如果使用AT命令操作请使用非OS的SDK,其他环境建议使用RTOS的SDK,使用RTOS程序可以更加灵活,多任务实现更加容易,可以轻松的写出复杂的程序逻辑控制。

安装步骤

1、安装Linux虚拟机,VMware 或者VirtualBox都可以。我选择的是VirtualBox下的Lubuntu(Ubuntu的轻量级版)。这一步网络上教程多的是,这一步不多赘述。

下一步就是要搭建esp8266的交叉编译环境,交叉编译环境官网上面有一个镜像,可以下载来直接使用,如果想自己编译一个需要下载ESP8266芯片的交叉编译环境源码。

2、下载Esp8266交叉编译环境源码

ESP8266内嵌的CPU既不是ARM也不是MIPS,更不是X86,是Tensilica公司开发的一种嵌入式CPU Tensilica L106,需要下载这种CPU的交叉编译器。

交叉编译器在github上可以下载到,按照说明编译即可。编译完后,在xtensa-lx106-elf/bin目录下会有一大堆xtensa-lx106-elf-xxx文件

物联网模块ESP8266环境搭建

如上图所示。这时候说明我们的交叉编译环境已经完成了。这时候需要把这个bin文件的路径写到系统变量PATH里面。

3、下载ESP8266 的SDK。

下载 ESP8266_RTOS_SDK-2.0.0.tar.gz

解压 tar xzvf ESP8266_RTOS_SDK-2.0.0.tar.gz

把路径ESP8266_RTOS_SDK-2.0.0 改为 ESP8266_RTOS_SDK

物联网模块ESP8266环境搭建

会看到这目录下有这些文件。

编译工程

我们进入example文件夹下去编译一个工程。

cd ESP8266_RTOS_SDK/examples/mqtt_demo/

可以看到有gen_misc.sh文件,这个文件我们需要修改它。

vim gen_misc.sh

=====================================

#!/bin/bash

:<

******NOTICE******

MUST set SDK_PATH & BIN_PATH firstly!!!

example:

export SDK_PATH=~/esp_iot_sdk_freertos

export BIN_PATH=~/esp8266_bin

!

export SDK_PATH=$SDK_PATH --------------这行需要修改

export BIN_PATH=$BIN_PATH --------------这行需要修改

echo "gen_misc.sh version 20150911"

echo ""

。。。。。。其他略

=====================================

把SDK_PATH 和BIN_PATH的路径修改为你自己的SDK的路径。如下所示。

export SDK_PATH=/mnt/cygwin/ESP8266_RTOS_SDK/

export BIN_PATH=/mnt/cygwin/ESP8266_RTOS_SDK/bin/

修改好这两个变量后保存gen_misc.sh文件。

编译执行命令 ./gen_misc.sh,不是执行make。

物联网模块ESP8266环境搭建

执行完命令需要用户选择几个编译选项。

需要用户必须选择的

Please check SDK_PATH & BIN_PATH, enter (Y/y) to continue:

回答‘y’

STEP 2: choose bin generate(0=eagle.flash.bin+eagle.irom0text.bin, 1=user1.bin, 2=user2.bin)

enter (0/1/2, default 0):

这个默认是0,如果需要网络升级的选择1或者2.

STEP 5: choose spi size and map

0= 512KB( 256KB+ 256KB)

2=1024KB( 512KB+ 512KB)

3=2048KB( 512KB+ 512KB)

4=4096KB( 512KB+ 512KB)

5=2048KB(1024KB+1024KB)

6=4096KB(1024KB+1024KB)

7=4096KB(2048KB+2048KB) not support ,just for compatible with nodeMCU board

8=8192KB(1024KB+1024KB)

9=16384KB(1024KB+1024KB)

enter (0/2/3/4/5/6/7/8/9, default 0):

这个需要根据用户的实际flash大小来选择,可以选择的比实际的flash小,但不能选择比实际的flash大,否则烧录不进去。其他选项之间回车选择默认即可。执行完毕就开始编译了。如果没有错误最后会看到这个结果。

物联网模块ESP8266环境搭建

生成的二进制固件没有在当前目录,在SDK目录下面的bin目录下。如果编译选择的是网络升级版本则在bin/upgrade目录下。

root@esp8266-VirtualBox:/mnt/cygwin/ESP8266_RTOS_SDK/bin/upgrade# ls -l

total 6832

-rwxrwxrwx 1 root root 0 4月 2 13:55 readme.txt

-rwxrwxrwx 1 root root 298244 9月 1 00:00 user1.1024.new.2.bin

-rwxrwxrwx 1 root root 1752489 9月 1 00:00 user1.1024.new.2.dump

-rwxrwxrwx 1 root root 4943001 9月 1 00:00 user1.1024.new.2.S

user1.1024.new.2.bin是生产的固件二进制文件,可以烧写到ESP8266芯片中去。user1.1024.new.2.S是生成的反汇编文件,可以定位错误使用,格式如下。

0241bf0 <readchar>:/<readchar>

40241bf0: 0238 l32i.n a3, a2, 0

40241bf2: 000342 l8ui a4, a3, 0

40241bf5: 331b addi.n a3, a3, 1

40241bf7: 0239 s32i.n a3, a2, 0

40241bf9: 042d mov.n a2, a4

40241bfb: f00d ret.n

40241bfd: 000000 ill


分享到:


相關文章: