前言
之前在做智能家居的時候需要用到esp8266,我這邊因爲esp8266物聯網開發板的技小新教程相對齊全就不用串口模塊,直接使用板子,但是沒想到板子的配備的技小新資料中例程和相關的模板基本不能用,官方的指南有些教程也很是迷惑。於是我這邊和隊友琢磨了相當的一段時間來重新配置其模板和工程文件,並記錄了相關的詳細使用文檔供大家參考
需要的資料
首先提供給大家網址以便資料的下載和學習:
tip:這裏跟大家分享的是不基於操作系統的SDK的開發,比較簡便且資料較爲齊全
- 樂鑫官網 https://www.espressif.com
- 安信可官網https://www.ai-thinker.com/home
- 參考文檔(筆者已爲大家整理好) https://pan.baidu.com/s/181ho5M3PVXI1cnlrQLRtsw 密碼 niuf
- 工程模板(這裏我們採用的是3.0.4版本的SDK並經筆者調試過可使用)https://pan.baidu.com/s/1sCAi1TQJDu7xsE3Jbx2oyQ 密碼 f415
- 開發例程集合test-code(經筆者修改移植技小新調試後的可用代碼)https://pan.baidu.com/s/1l2GDgul9Hy-dUhIPJaUz2Q 密碼 31wg
- SDK 一體化開發環境(IDE1.0) https://pan.baidu.com/share/init?surl=Mbi2xoHQxyYM35lnJEUBTA 密碼 fzfd
- 燒錄WiFi固件工具:ESP_DOWNLOAD_TOOL https://docs.ai-thinker.com/_media/flash_download_tool_v3.8.5_1.zip
- 安信可串口調試助手 https://docs.ai-thinker.com/_media/tools/aithinker_serial_tool_v1.2.3.7z
- TCP/UDP 網絡調試助手(PC版) https://docs.ai-thinker.com/_media/tools/tcpudpdbg.zip
看起來資料好像有點小多哦~不過千萬不要有壓力,跟着小B往下看,保證學起來簡簡單單滴
好了,接下來正文開始搭建SDK開發環境
-
打開ai-thinker-IDE1.0安裝文件,選擇安裝路徑
-
安裝完成後,第一次使用aithinker eclipse集成開發環境先以管理員身份運行
AiThinkerIDE_V1.0\eclipse\
目錄下的Confing.exe 應用來配置esp8266和esp32所需要的環境變量(此配置文件運行一次即可)。點擊Default
設置默認路徑,再點擊save
保存到電腦的環境變量中,記得點一次就行。
-
安裝配置完之後我們會發現在我們桌面沒有對應圖標,我們需要到
AiThinkerIDE_V1.0\eclipse\
下找到eclipse.exe
文件,右鍵,選擇發送到->桌面快捷方式
,我們就可以在桌面看到圖標了。
-
第一次打開eclipse,會彈出選擇eclipse工作區保存的路徑,用戶自行選擇到安裝目錄下的Ai-Thinker\AithinkerIDE_v1.0文件夾
至此環境搭建完成
接下來,我們可以來進行SDK的燒寫和編譯
SDK的編譯和燒寫
- 配置SDK
(1)複製ESP8266_NONOS_SDK-3.0.4-temple,拷貝一份將文件夾重命名
(2)將SDK包中的driver_lib改名爲code(意爲存放代碼的地方)
注意:這裏一定要先在SDK工程包導入IDE之前更改文件夾,切不可在import之後再更改文件名,否則會在源文件夾中留下難以發現的配置參數,後面再導入都會報錯,最好的方法就是在導入之前最好先有備份
(3)將example中選取demo拷貝到code中粘貼替換
(4)將example文件夾刪除(可選)
(5)將third_party/Makefile修改名爲makefile.bak - 2.將SDK工程導入到編譯器中
(1)打開eclipse環境,在’project explorer’中右鍵點擊import
(2)選擇C/C++ ->Existing Code as Makefile Project
,點擊next
3)選擇Cygwin GCC,再點擊Browse…,選擇已配置好的SDK工程路徑,點擊finish
(4)可點擊code->user->user_main.c查看例程程序
(5)在’project explorer’中選中工程名,右鍵點擊’Properties’,在’C/C++Build->Build Commnd’中去掉勾如下圖所示並填寫 make COMPILE=gcc BOOT=none APP=0 SPI_SPEED=40 SPI_MODE=DIO SPI_SIZE_MAP=6,點擊’apply’,再點擊OK
注:SPI_SIZE_MAP的賦值需要根據user_main.c開頭的定義語句(如下圖)去定值,如果沒有的或者不支持的值不能對SPI_SIZE_MAP賦值
(6)針對製作SDK空白模板(可選):
對於 ESP8266_NONOS_SDK_v1.5.2 ⾄ ESP8266_NONOS_SDK_v2.2.1 之間的版本,請在 user_main.c 增加函數 void user_rf_pre_init(void) 和 uint32 user_rf_cal_sector_set(void),可參考 IOT_Demo 的 user_main.c。⽤戶可在 user_rf_pre_init 中配置 RF 初始化,RF 設置接⼝爲 system_phy_set_rfoption,或者在 Deep-sleep 前調⽤ system_deep_sleep_set_option。如果設置爲 RF 不打開,則 ESP8266 Station 及 SoftAP 均⽆法使⽤,請勿調⽤ Wi-Fi 相關接⼝及⽹絡功能。RF 關閉時,Wi-Fi 射頻功能和⽹絡堆棧管理 API
對於 ESP8266_NONOS_SDK_v3.0.0 及之後版本,請在 user_main.c 增加函數 void ICACHE_FLASH_ATTR user_pre_init(void),並且在 user_pre_init 函數中註冊自己的 partition table。(注意,此步驟和2.0版本有所不同,至關重要!)
即v3.x版本都需要在user_pre_init 函數中註冊partition table(分區表)
void ICACHE_FLASH_ATTR
user_pre_init(void)
{
if(!system_partition_table_regist(at_partition_table, sizeof(at_partition_table)/sizeof(at_partition_table[0]),SPI_FLASH_SIZE_MAP)) {
os_printf("system_partition_table_regist fail\r\n");
}
}
而設置分區表則需要前面的聲明代碼和定義代碼才能成爲一個完整可執行的3.0模板,具體代碼詳見ESP8266_NONOS_SDK-3.0.4-temple->code->user_mian.c
文件
(7)編譯之前進行保存,在’project explorer’中選中工程名,右鍵先clean project
,清除之前的編譯聲明,再build project
進行編譯
注意:編譯的時候最好只保留控制檯和功能窗口,其他窗口不要打開,以防編譯出錯
(8)編譯成功後,控制檯會有如下顯示
(9)最後要注意,user_cal_sector_set(暫定),user_pre_init,user_init三個函數在程序中需要保留。
- Esp8266程序燒寫
工程編譯完之後,會在工程文件夾下的bin中生成如下.bin文件
我們需要把生成的文件燒寫到esp8266中
(1) 打開FLASH_DOWNLOAD_TOOLS工具,選擇esp8266,顯示對應燒錄的UI界面
(2)按照圖示配置參數(文件和下載對應地址)
(3)可以下載的程序有如下所示,但是真正需要下載的程序只有兩個系統程序:eagle.flash.bin和eagle.irom0text.bin,其他的只需初次下載即可,但如出現野指針等引發破環了初始配置參數的情況則需要全部選中燒錄
其中燒錄的文件作用如下
(4)根據下載地址圖示來配置我們需要下載的程序地址
注:因爲ESP-12F模組的外部
Flash==4MB==4096KB==32bit 4MB Flash==0x000 000~ 0x3FF FFF
扇區編號:0x000~0x3FF【Flash扇區==4KB】
對應選擇下載地址
一般只燒寫最後兩個系統程序即可
(5)燒寫時如一直停留在等待同步狀態,需要按住開發板的boot,再同時按住restart,再放開restart,最後放開boot,整個過程按住停留時間需要把握好,具體可以嘗試幾遍即可知;如沒有上述情況則不用按鍵直接燒寫即可
下載成功如圖所示
(6)燒寫完成之後再按下restart鍵,此時esp8266藍燈短亮,開始執行燒寫進去的程序
然後就成功了有木有!!!
如果對您有幫助的話,記得一鍵三連喲~