nodemcu固件編譯
by HYH | 2017 年 10 月 10 日 下午 8:27
一.編譯環境搭建
1.下載
百度雲盤:https://pan.baidu.com/s/1dEOw8bZ 下載密碼:v81b
下載vbox及ova虛擬機包。
里面也有安裝文檔。
2.安裝及必要軟件安裝
安裝vbox時一路next即可,安裝完成后雙擊.ova文件,點擊導入即可。導入后虛擬機所有文件在 用戶目錄\VirtualBox VMs 下
設置共享文件夾(主要是用於文件傳輸)
設置->共享文件夾(新建或更改共享文件夾為一個存在的目錄)
接下來運行虛擬機,注意用戶密碼是espressif
運行sudo -s后輸入此密碼。
安裝git,python,python-serial.
apt-get install git python python-serial
下載頭文件
wget https://github.com/esp8266/esp8266-wiki/raw/master/include.tgz
解壓頭文件
tar –directory=/opt/xtensa-lx106-elf/lib/gcc/xtensa-lx106-elf/4.8.2/ -xvf include.tgz
下載sdk頭文件
git clone https://github.com/espressif/ESP8266_RTOS_SDK.git extra_include/xtensa
復制sdk頭文件
cd extra_include/xtensa/extra_include/xtensa
cp -r * /opt/xtensa-lx106-elf/lib/gcc/xtensa-lx106-elf/4.8.2/include/xtensa/
二.nodemcu 0.9x固件下載及編譯
1.下載
git clone -b old-master https://github.com/nodemcu/nodemcu-firmware.git
下載完成后,當前目錄下的nodemcu-firmware文件夾即為源碼文件夾。
2.編譯
下面幾個文件是可由用戶配置
app/include/user_config.h:nodemcu配置
app/include/user_version.h:版本信息配置
app/include/user_modules.h:模塊配置
以上配置均為注釋define或取消注釋來配置
若采用默認配置,直接編譯即可(如果編譯失敗,請嘗試注釋掉user_module.h中的部分模塊)
make
編譯成功后,會重新生成
0x00000.bin
0x10000.bin
下面直接燒錄到nodemcu上即可。
備用下載:https://github.com/HEYAHONG/nodemcu-firmware/tree/old-master/bin
如果會把usb設備中的串口設備接入虛擬機,或使用實機。在直接接入一個USB串口轉設備且設備且為nodemcu,可直接在源碼目錄使用make flash燒寫。
三.nodemcu最新版編譯
1.說明
最新版的配置方式和0.9x版一樣。
由於編譯環境限制,需要修改源碼中esp-gdbstub組件,而且需要調整cc.h。
2.下載
如果下了nodemcu的源碼,需要把原來的源碼刪除或者移動到別的地方。
git clone https://github.com/nodemcu/nodemcu-firmware.git
2.下載libm.a:
wget https://github.com/nodemcu/nodemcu-firmware/raw/old-master/lib/libm.a
先make一下,下載sdk。
make
移動libm.a到sdk目錄。
3.修改esp-gdbstub
nano app/esp-gdbstub/gdbstub.c
在頭部添加一下行:
#ifndef XCHAL_DEBUGLEVEL
#define XCHAL_DEBUGLEVEL 2
#endif
4.調整cc.h
此時如果直接編譯,會出現以下錯誤
重復定義,實際兩個定義的最終值都是14,所以只需要注釋掉其中一個重復定義。最好注釋掉源碼中的那一個。
nano app/include/arch/cc.h
注釋掉:
#define EFAULT 14
或者改為(1.5.4版所用方式)
#ifndef EFAULT
#define EFAULT 14
#endif
注釋掉之后,就能正常編譯了。
5.編譯
make
6.燒錄(直接接入nodemcu開發板,本人板子不是4m的)
make flash512k
https://hyhsystem.cn/wordpress/
Copyright ©2018 何亞紅的博客 unless otherwise noted.