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文件
如上圖所示。這時候說明我們的交叉編譯環境已經完成了。這時候需要把這個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
會看到這目錄下有這些文件。
編譯工程
我們進入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。
執行完命令需要用戶選擇幾個編譯選項。
需要用戶必須選擇的
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大,否則燒錄不進去。其他選項之間回車選擇默認即可。執行完畢就開始編譯了。如果沒有錯誤最後會看到這個結果。
生成的二進制固件沒有在當前目錄,在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
閱讀更多 物聯網電子世界 的文章