上一周講了ESP8266的初步開發,也就是AT模式工作,這種模式是最適合初學者使用的,因為wifi模塊內部的函數都已經封裝好了,無論你用什么mcu,都可以直接調用指令來實現你所需要的功能。
當然,如果僅僅是有這種模式,那么這塊芯片就不至于那么火了。這塊芯片的神奇之處在于它本身是一個mcu,而且生產公司對部分的函數免費開源,給了開發者很大的發揮空間。也就是說,本來需要在51或者arduino單片機上運行的程序可以直接燒錄進wifi芯片,讓芯片充當單片機,這樣在產品開發時就節省了成本和空間,可以做出更高效美觀的作品。所以,下面我就講講ESP8266的深度開發。
開發前的準備
usb轉TTL模塊,或者單片機開發板,直接使用它的串口通訊引腳,用來燒錄程序和進行串口信息打印;
從樂鑫官網下載ESP8266_NONOS_SDK,雖然官方有提供在linux下的開發平臺,但是我還是推薦用安信可的IDE開發工具,它把make指令等都集成在eclipse上,直接通過build project就可以編譯出bin文件,當然,安信可的工具集里面是有包括燒錄工具的,所以不須另外下載。
開發步驟
- 將sdk導入安信可IDE,點導入工程,瀏覽到一個要編譯的工程,編譯器選 Cygwin;
- 導入example進行改寫或者自己編寫user_main.c;
- 執行build project,生成bin文件;
- 使用燒錄工具,將blank.bin,flash.bin,irom_text.bin和init_data_default.bin導入對應的地址中,將芯片的GPIO0口置于低電平,按照說明連接串口,點擊一鍵燒錄;
- 燒錄完畢后,將GPIO0口置空,芯片處于正常工作模式。
項目結構
- app為項目源碼文件夾,可以在里面編寫自己的程序;
- bin為燒錄文件文件夾,程序編譯后自動生成的bin文件會在這里,導入燒錄軟件即可進行燒錄;
- documents為說明文檔文件夾,關于這個sdk的使用方法和介紹文檔都在里面;
- driver_lib為驅動鏈接庫,關于串口和IO口的驅動程序的頭文件和源文件都在里面,編譯時后自動生成一個靜態鏈接庫;
- examples為示例代碼文件夾,可以從里面摘取代碼進行模仿和學習;
- include為頭文件文件夾,當你編程時需要用到的封裝函數須在這里引入對應的頭文件;
- ld為flash編譯控制文件夾,里面對應你的不同flash容量給了不同的地址信息,在燒錄時會調用;
- lib為靜態鏈接庫文件夾,里面包含了各種頭文件的靜態鏈接庫,編譯時會調用;
- tools為腳本與工具,一般不用修改;
- license為許可文件,不用修改;
- makefile為配置文件,定義了一系列的規則來指定哪些文件需要先編譯,哪些文件需要后編譯,哪些文件需要重新編譯,也是自動化編譯過程的核心。
關于makefile
一般makefile的關注點有以下幾個:
編譯模式控制(針對根目錄makefile)
這是在linux系統下編譯控制的選擇項,不過在IDE下只需修改makefile文件就可以如愿地控制編譯,如果不使用ota升級功能的話那么就用上圖給的編譯方式就行了。
包含頭文件(所有makefile)
這是makefile編譯時會包含的頭文件,用戶可以根據自己存放頭文件的位置自行對includes 后的內容進行修改。
SUBDIRS(針對app文件夾下的makefile)
變量SUBDIRS : 指定當前目錄下,要遞歸編譯的子目錄。用戶需根據自己app文件夾下的子目錄名稱和個數,分別添加到SUBDIRS變量中,例如你的app目錄如下圖所示,那么對應的makefile就與上圖一致。
COMPONENTS_eagle.app.v6(針對app文件夾下的makefile)
該變量是表明將引用那些app文件夾下的靜態鏈接庫,一般是與用戶自己編寫的文件夾名稱相對應,所以用戶根據需要自行修改,否則會出現函數未定義的錯誤。
LINKFLAGS_eagle.app.v6(針對app文件夾下的makefile)
該變量是表明將引用那些lib文件夾下的靜態鏈接庫,與lib文件夾下的文件名稱相對應,所以用戶根據需要自行調用修改,否則也會出現函數未定義的錯誤。
總之,makefile是一個很重要的文件,管理依賴和控制編譯的整個過程。如果感興趣的話,可以去學習它的語法,簡直就是自動化編譯的神器 ~
總結
這次大概講了ESP8266的深度開發的一些準備工作和整體框架,關于具體的開發和燒錄等細節將在后續的文章中為大家闡明。