物聯網模塊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


分享到:


相關文章: