ESP8266固件SDK開(kāi)發(fā)初體驗(yàn)-打印helloworld
我的硬件實(shí)驗(yàn)環(huán)境:
還沒(méi)有買demo板,所以剛開(kāi)始玩有點(diǎn)痛苦,接下來(lái)進(jìn)入主題。
一、開(kāi)發(fā)環(huán)境搭建
https://wiki.ai-thinker.com/ai_ide_install
到安信可的官網(wǎng)上瀏覽,文檔描述得很詳細(xì),這里就不在多說(shuō)。
二、打開(kāi)AiThinker_IDE
到這里我們看到,AiThinker_IDE一打開(kāi)就有N多個(gè)工程了,安信可已經(jīng)自動(dòng)配好了,不需要我們開(kāi)發(fā)者去導(dǎo)入任何源碼,真是非常方便,良心??!在這里我們只看esp8266_helloworld這個(gè)。
鼠標(biāo)右鍵點(diǎn)擊,然后選擇Clean Project,清楚這個(gè)工程所以已經(jīng)編譯完成的產(chǎn)物
然后再鼠標(biāo)右鍵點(diǎn)擊Build_Project
編譯后,會(huì)看到以下編譯成功的log:
我們可以參考安信可的ESP8266系列入門教程這個(gè)文檔的第17頁(yè)。
其中:
1、boot.bin表示bootloader。
也就是上電的第一個(gè)程序。
2、esp_init_data_default.bin表示初始化其他射頻參數(shù)區(qū)。
這個(gè)需要至少燒錄一次,當(dāng)RF_CAL參數(shù)區(qū)初始化燒錄時(shí),本區(qū)域也會(huì)燒錄。
3、user1.bin也就是對(duì)應(yīng)我們剛剛在IDE上生成的user1.1024.new.2.bin。
這個(gè)就是我們SDK的程序。
4、blink.bin指的是用戶參數(shù)區(qū)。
當(dāng)然還有其它的blink.bin,可用來(lái)初始化系統(tǒng)參數(shù)區(qū)以及RF_CAL參數(shù)區(qū),這里我們只需要用戶參數(shù)區(qū)就可以了。
那這些文件在哪呢?我們找到IDE的安裝目錄,執(zhí)行下面這個(gè)批處理腳本:
OpenWorkSpace.bat,也就是打開(kāi)我們的工程工作空間。
這時(shí)候就會(huì)彈出所有項(xiàng)目的位置了,如下:
我們剛剛編譯的是esp8266_helloworld, 所以我們進(jìn)入這個(gè)目錄找剛剛編譯生成的產(chǎn)物。
發(fā)現(xiàn)少了其它生成的文件,我們?nèi)e的SDK下找,然后復(fù)制過(guò)來(lái)就可以了,這里選擇帶OS SDK下的。
把如圖所示的三個(gè)bin文件復(fù)制到剛剛的upgrade的位置。
三、ESP8266-07硬件連接確認(rèn)
3.1 正常連接
這樣上電后,ESP8266是一個(gè)正常的工作模式,跟我們從淘寶上買回來(lái)是一樣的
3.2 固件下載模式
參考ESP8266系列入門教程的第6頁(yè):
注意:如何進(jìn)入下載模式呢?
如上圖所示:
rst cause :
1 表示模塊上電
2 表示外部復(fù)位
4 表示硬件看門狗復(fù)位
boot mode:
1 下載模式
3 運(yùn)行模式
所以,當(dāng)模塊要處于下載模式時(shí),boot mode的第一個(gè)參數(shù)要為1,以下是我的實(shí)驗(yàn)結(jié)果:
四、下載固件
接下來(lái)打開(kāi)燒錄軟件flash_download_tools_v3.6.6.exe
在https://wiki.ai-thinker.com/esp8266能下載到。
接下來(lái)配置好工具的基本信息:
注意,勾一定要打上。這里我的FLASH SIZE是8Mbit的,千萬(wàn)別選錯(cuò)了,接下來(lái)點(diǎn)擊START開(kāi)始下載固件。
下載成功后會(huì)提示完成。
五、執(zhí)行結(jié)果
我們將模組連接到GPIO0的線去掉,把剛剛用于下載的軟件關(guān)掉,然后復(fù)位一下模組,接下來(lái)打開(kāi)串口終端可以看到。
模組每隔3s會(huì)打印一次hello world,對(duì)應(yīng)的源代碼在user_main.c中:
void ICACHE_FLASH_ATTR
hello_world(void)
{
struct scan_config config;
char ssid[32];
os_printf("\r\nHello world !\r\n");
}
void system_done()
{
os_timer_disarm(&hello_world_timer);
os_timer_setfn(&hello_world_timer, (os_timer_func_t *)hello_world, NULL);
os_timer_arm(&hello_world_timer, 3000, 1);
}
/******************************************************************************
* FunctionName : user_init
* Description : entry of user application, init user function here
* Parameters : none
* Returns : none
*******************************************************************************/
void ICACHE_FLASH_ATTR
user_init(void)
{
os_printf("\r\nSDK version:%s ,", system_get_sdk_version());
os_printf(" Compile time:%s %s\r\n", __DATE__, __TIME__);
system_init_done_cb(system_done);
}
ESP8266開(kāi)發(fā)是基于回調(diào)函數(shù)形式的,這點(diǎn)在以后會(huì)慢慢介紹。
END
請(qǐng)加我的微信:morixinguan ,備注:商務(wù)合作
如果你想要加微信交流群,備注:加群
免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺(tái)立場(chǎng),如有問(wèn)題,請(qǐng)聯(lián)系我們,謝謝!