自己動手編譯NodeMCU韌體
目前常用的編譯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
命令將韌體與準備預先寫入的二進位制檔案連線成一個檔案進行燒錄。
燒錄工具
相關文章
- 自己動手編譯OpenJDK編譯JDK
- 2018年後 OpenWrt原始碼下載及韌體編譯原始碼編譯
- 編譯打包自己的雲手機(redroid)映象編譯
- 自己動手,在macOS High Sierra中編譯一個可debug的JDKMac編譯JDK
- WIN32 手動編譯Win32編譯
- 自己動手寫basic直譯器 一
- cmake編譯指定自己編譯的庫路徑編譯
- Python3 動手自己寫谷歌翻譯Python谷歌
- 越獄手記:手動編譯安裝 Electra編譯
- ESP32-S3 搭建 micropython 開發環境,韌體編譯,燒錄S3Python開發環境編譯
- Rxjava深入理解之自己動手編寫RxjavaRxJava
- Banana Pi ESP32-S3 搭建 micropython 開發環境,韌體編譯,燒錄NaNS3Python開發環境編譯
- 《DNK210使用指南 -CanMV版 V1.0》第五章 編譯CanMV韌體編譯
- 開源編譯工具和編譯軟體編譯
- 圖解韌體、驅動、軟體的區別圖解
- 自己動手寫PromisePromise
- 使用Rust編寫嵌入式韌體入門教程Rust
- 自己動手編寫一個Mybatis外掛:Mybatis脫敏外掛MyBatis
- 自己動手實現OkHttpHTTP
- 自己動手寫Impala UDF
- 自己動手列印整數
- 自己動手實現springboot執行時執行java原始碼(執行時編譯、載入、註冊bean、呼叫)Spring BootJava原始碼編譯Bean
- Java動態編譯優化——提升編譯速度(N倍)Java編譯優化
- 編譯lua動態庫編譯
- Qt編譯MySQL驅動QT編譯MySql
- nodemcu arduino設定按鍵UI
- 自己手動建立https證書HTTP
- arduino韌體燒錄UI
- pytest(6)-Fixture(韌體)
- Banana PI BPI-Leaf S2,ESP32-S2 搭建 micropython 開發環境,韌體編譯,燒錄NaNPython開發環境編譯
- iOS自動化編譯打包iOS編譯
- 精讀《手寫SQL編譯器-回溯》SQL編譯
- 手撕Vue-編譯指令資料Vue編譯
- C語言編譯器手機版C語言編譯
- Android編譯期插樁,讓程式自己寫程式碼(一)Android編譯
- Android編譯期插樁,讓程式自己寫程式碼(二)Android編譯
- 深入理解Java虛擬機器之自己編譯JDKJava虛擬機編譯JDK
- [譯] 如何手動啟動 Angular 程式Angular
- 自己動手寫SQL執行引擎SQL