目前常用的编译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
命令将固件与准备预先写入的二进制文件连接成一个文件进行烧录。