相信聰明伶俐的你,肯定完成了上一篇文章的環境搭建,如果你是第一次看本系列文章,可以先去看看前兩篇文章,先了解一下並完成一些基礎操作。

這裡推薦大家安裝一下Git這個灰常炒雞好用的分散式版本管理神器,本人是非常喜歡這款由Linux之父Linus Torvalds開發的工具,可以很方便讓我完成一些工作,比如說copy程式碼~哈哈,作為初級菜鳥程式設計師會用Git也是一個加分項,大家可以去看一下廖雪峰的Git的教程:

廖雪峰Git教程

Git下載安裝連結

大家根據自己的系統選擇合適的下載,貌似Linux都是自帶的,因為Linux原始碼本身就是使用Git進行分散式開發管理的,可以想象一下像Linux這樣大的專案都是使用的Git進行開發管理,你還有什麼理由不去嘗試一下呢?

上篇文章的最後給大家了ESP8266-NonOS-SDK 3.0的下載地址,相信大家都已經下載完成了,如果還有沒下載的,剛好我們嘗試一下使用Git是如何快速的copy程式碼,安裝好Git了嗎?安裝好了那我們就開始吧,先找一個你想將程式碼copy到的目錄,最好不要在含有中文的路徑下copy,然後右鍵選擇Git bash here

然後輸入如下命令:

 1 git clone -b v3.0 [email protected]:espressif/ESP8266_NONOS_SDK.git 

其中clone就是克隆(copy)的意思,-b v3.0是選擇3.0這個分支,如果你問分支又是什麼,這就又是Git的相關知識了,相信廖大神的教程一定會讓你明白的,這裡就不做解釋了,[email protected]:espressif/ESP8266_NONOS_SDK.git這一大串就是我們要clone(copy)的程式碼在github倉庫中的地址了。

我們開啟下載完成後的資料夾,看一下檔案目錄結構,然後將下圖中我圈出來的檔案直接刪掉,我們這裡暫時用不到,不然等會編譯會報錯:

然後將examples檔案下的smart_config資料夾複製到ESP8266_NONOS_SDK資料夾下並重新命名為app(可以不改,這裡為了看著好看),最後的目錄結構是這樣:

開啟上篇文章中安裝的安信可一體化開發環境,這是一個開源的開發工具,我們先將改好的工程導進來,左上角點選file->import:

選擇Existing Code as Makefile Project,點選Next:

點選Browse瀏覽到你剛剛clone(copy)程式碼的目錄,專案名稱隨便起,最後選擇Cygwin GCC,然後點選Finish,就可以在左側看到我們的工程樹了,恭喜你,萬里長征走了大半步了,先不要急著編譯,我們先修改幾個地方。

 

開啟主目錄中的makefile檔案,找到第29行將0改為6,我這裡使用的是NodeMCU,flash是32Mbit的,也就是4MByte=4096KB,可以在此檔案的第100行找到參考,但是SPI_SIZE_MAP等於6時也是4096KB,其實6跟4的區別主要時程式碼分佈不同而已,我們這裡讓SPI_SIZE_MAP等於6就可以了,具體程式碼分佈有什麼不同,我們後面再細說,修改完成後不要忘記CTRL+S一下。

然後開啟app->user->user_main.c檔案,找到第251行,user_init函式,這是整個工程的入口函式,底層初始化完成後,程式碼就從這個地方開始往下執行,我們這裡串列埠列印一下“Hello World!”,將程式碼修改一下,如下:

1     os_printf("SDK version:%s\n", system_get_sdk_version());
2     os_printf("\n\nHello World! ZHIHU IAMLIUBO\n\n");
3 //    smartconfig_set_type(SC_TYPE_AIRKISS); //SC_TYPE_ESPTOUCH,SC_TYPE_AIRKISS,SC_TYPE_ESPTOUCH_AIRKISS
4 //    wifi_set_opmode(STATION_MODE);
5 //    smartconfig_start(smartconfig_done);

註釋下面三行,我們暫時用不到,增加一行,然後儲存,點選工具欄中的Project->Build Project,Console中出現以下程式碼,就表示編譯成功了:

生成的Bin檔案在工程目錄的Bin資料夾下,然後我們需要將程式碼下載到ESP8266上去了,開啟上篇文章中已經下載好的程式碼下載工具flash_download_tools,沒有下載的可以看一下上篇文章去下載一下,也可以直接點這裡:下載。開啟後選擇ESP8266 DownloadTool,然後參考下圖設定好,程式碼下載地址也取決於你的Flash大小,這裡是32Mbit flash的下載地址,埠號是你的硬體實際埠號,波特率建議選大點,下載速度快,也不要太大。

下載地址參考:

  • eagle.flash.bin-------->0x00000
  • eagle.irom0text.bin---->0x10000
  • esp_init_data_default_v08.bin --> 0x3FC000
  • blank.bin --> 0x3FE000

設定好後,我們點選START,就看到開始下載了,NodeMCU是有一鍵下載電路的,不需要我們手動去設定,如果你用的是別的開發板,沒有一鍵下載電路,你需要將GPIO0拉低,復位一下,然後點選START,不然是沒法下載的。下載完成後我們開啟串列埠助手,波特率選擇76800(這是ESP8266在使用26Mhz晶振下的預設波特率),按一下NodeMCU上的RST鍵,可以看到列印一些資訊後,就打印出我們的“Hello World”來了,關於上電列印資訊,是ESP8266底層初始化的時候列印日誌,這部分程式碼不對使用者開放,所以沒辦法看到,我們可以遮蔽掉上電列印日誌,這個後面再講。

恭喜你,成功完成了“Hello World”實驗,通過一個簡單的小例程,相信你對整個ESP8266開發流程有了一定的瞭解,沒錯,後面我們還是一樣的套路去編寫程式碼,編譯程式碼,下載程式碼,檢視程式碼執行結果,但是最重要的如何去編寫我們的程式碼,後面將會跟大家一起來探討如何深入開發ESP8266。

最後附上一個小視訊,從修改程式碼開始,但是由於沒有麥克風,所以沒有聲音,大家就當參考一下吧。

最後附上我的ESP8266倉庫,後面程式碼會全部在此倉庫更新,歡迎小夥伴們Star~

makingfunxyz-esp8266

本系列文章在知乎同步更新,知乎搜尋專欄:IAMLIUBO的神奇物聯網之旅