目前常用的編譯NodeMCU的方式主要有兩種,在線構建和本地構建。
在線構建
使用在線構建服務[NodeMCU custom builds]來定制自己的固件,只需要在該網站選擇你需要的庫,留下郵箱,很快就能收到編譯好的固件,這里不多敘述。
本地構建
想要自己編譯NodeMCU,首先需要一個Linux環境,實體機或虛擬機都可以,安裝教程網上有很多,這里以Ubuntu為例。
第一步 - 准備工作
以apt為例,首先安裝編譯相關軟件包。
N | 命令 |
---|---|
1 | sudo apt-get update |
2 | sudo apt-get install make git tar unzip srecord python python-pip python-serial gcc g++ |
3 | pip install esptool |
接下來克隆或下載 [ NodeMCU-Firmware ] 。
第二步 - 配置固件
配置nodemcu-firmware/app/include
目錄下的user_model.h
和user_config.h
。
下面介紹的都是可選配置,完全根據個人需求進行選擇。
-
選擇要編譯的模塊:
user_model.h
-
默認波特率:
user_config.h
中的BIT_RATE_DEFAULT
(使用74880波特率啟動時無亂碼)
-
只使用整數:
user_config.h
中的LUA_NUMBER_INTEGRAL
(可節省內存)
-
開啟WIFI SMART智能配網:
user_config.h
中的WIFI_SMART_ENABLE
(手機配網SmartConfig或AirKiss)
-
可以將
nodemcu-firmware/local/fs
目錄下的文件打包成可在燒錄時寫入閃存中的二進制文件。(比如可以通過燒錄的方式將lua文件直接寫入,詳情請查看 [ Internal filesystem # Technical Details ] )
還有很多設置,具體參考 [ NodeMCU Documentation ] 。
第三步 - 編譯固件
定位到nodemcu-firmware
目錄,開始編譯。
編譯需要很長時間, 等待編譯完成。
tar -Jxvf tools/esp-open-sdk.tar.xz
export PATH=$PATH:$PWD/esp-open-sdk/xtensa-lx106-elf/bin
export BUILD_DATE=$(date +%Y%m%d)
make EXTRA_CCFLAGS="-DBUILD_DATE='\"'$BUILD_DATE'\"'" all
cd bin/
file_name="nodemcu_${BUILD_DATE}.bin"
srec_cat -output ${file_name} -binary 0x00000.bin -binary -fill 0xff 0x00000 0x10000 0x10000.bin -binary -offset 0x10000
cd ../
make clean
第四步 - 燒錄固件
編譯生成的二進制文件在nodemcu-firmware/bin
目錄中。
- 固件:
nodemcu_20180627.bin -> 0x00000 - 准備預先寫入的二進制文件(根據閃存容量進行選擇):
512KByte:0x74000-4mb.bin -> 0x74000
1MByte:0x80000-8mb.bin -> 0x80000
4MByte:0x80000-32mb.bin -> 0x80000
提示: 可以使用srec_cat
命令將固件與准備預先寫入的二進制文件連接成一個文件進行燒錄。