您的位置:首页 > Web前端 > Node.js

自己动手编译NodeMCU固件

2017-12-04 23:05 751 查看


目前常用的编译NodeMCU的方式主要有两种,在线构建本地构建

在线构建

使用在线构建服务NodeMCU custom builds来定制自己的固件,只需要在该网站选择你需要的库,留下邮箱,很快就能收到编译好的固件,这里不多叙述。

本地构建

想要自己编译NodeMCU,首先需要一个Linux环境,实体机或虚拟机都可以,安装教程网上有很多,这里以Ubuntu为例。

[b]第一步 - 准备工作[/b]

以apt为例,首先安装编译相关依赖项。

sudo apt-get update
sudo apt-get install make g++ gcc git unzip srecord python python-serial


这里已经打包了所有需要的文件,将它们下载到工作目录。

nodemcu-firmware

[b]第二步 - 配置固件[/b]

打开
nodemcu-firmware/app/include/
目录,我们需要修改
user_model.h
中的宏定义来决定编译哪些模块,这里根据需要进行选择,注意不要选太多。

user_config.h
中修改
#define BIT_RATE_DEFAULT  BIT_RATE_115200
可改变初始波特率。(强迫症可将波特率设置为74880,这样每次启动模块就没有乱码了)

user_version.h
中可修改编译时间。

如果选择了UCG或U8G模块,要配置
ucg_config.h
u8g_config.h


还有很多设置,一般在对应的设置后面都有注释,这里就不多说了。

模块的具体功能可以参考 NodeMCU Documentation

[b]第三步 - 编译固件[/b]

为了让编译更简单化,这里用脚本写成了一键式操作,可以省去很多步骤。

必要步骤可选步骤
清理工程,执行
./nodemcu make clean
合并二进制文件,执行
./nodemcu combine <输出文件名>
编译,执行
./nodemcu make
编译出的二进制文件在nodemcu-firmware/bin目录中,文件名对应烧录地址。

如果未自定义合并输出文件名,则目录nodemcu-firmware/bin中的nodemcu_firmware.bin为合并后文件,烧录地址为0x0。

如果以后的编译莫名出错,可以尝试
make clean
然后再
make


[b]第四步 - 烧录固件[/b]

这是对flash为DIO的4MB模块进行烧录的命令,需要根据自己的实际情况进行调整。

cd nodemcu-firmware/tools
sudo esptool.py --port /dev/ttyUSB0 write_flash \
-fm dio -fs 32m -ff 40m 0x0 nodemcu_firmware.bin


当然,官方也提供了图形化的烧录程序,根据自己的使用习惯,自行选择吧。



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  物联网 开源项目 lua