自己動手編譯NodeMCU韌體

weixin_33912246發表於2017-12-03
9339831-d19a6acad05ec061

目前常用的編譯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.huser_config.h
下面介紹的都是可選配置,完全根據個人需求進行選擇。

  • 選擇要編譯的模組: user_model.h

    9339831-37da3eb13e0d88f4.png

  • 預設波特率: user_config.h中的BIT_RATE_DEFAULT(使用74880波特率啟動時無亂碼)

    9339831-ddedda921f7baedc.png

  • 只使用整數: user_config.h中的LUA_NUMBER_INTEGRAL(可節省記憶體)

    9339831-2550fcea92ced879.png

  • 開啟WIFI SMART智慧配網: user_config.h中的WIFI_SMART_ENABLE(手機配網SmartConfig或AirKiss)

    9339831-550b65cd7fdd7eea.png

  • 可以將nodemcu-firmware/local/fs目錄下的檔案打包成可在燒錄時寫入快閃記憶體中的二進位制檔案。(比如可以通過燒錄的方式將lua檔案直接寫入,詳情請檢視 [ Internal filesystem # Technical Details ] )

    9339831-151c39adb3837770.png

還有很多設定,具體參考 [ 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目錄中。

9339831-deba229832395a3f.png

  • 韌體:
    nodemcu_20180627.bin -> 0x00000
  • 準備預先寫入的二進位制檔案(根據快閃記憶體容量進行選擇):
    512KByte:0x74000-4mb.bin -> 0x74000
    1MByte:0x80000-8mb.bin -> 0x80000
    4MByte:0x80000-32mb.bin -> 0x80000

提示: 可以使用srec_cat命令將韌體與準備預先寫入的二進位制檔案連線成一個檔案進行燒錄。

燒錄工具

詳見 [ 自己動手編譯NodeMCU韌體 ]

相關文章