http://www.cnblogs.com/yangfengwu/p/9336274.html
基础教程源码链接请在淘宝介绍中下载,由于链接很容易失效,如果失效请联系卖家,谢谢
https://item.taobao.com/item.htm?spm=a1z10.1-c-s.w4004-18540610442.6.36a74814ZSaRsu&id=569295486025
注意哈,这一节只是介绍自己如何编译固件,对于初学者而言不必深究哈
虚拟机和ubuntu的安装
https://www.cnblogs.com/Alier/p/6337151.html
https://blog.csdn.net/colin_lisicong/article/details/70193539
https://blog.csdn.net/zqxdsy/article/details/79758194
总有一款适合你,没有百度一下解决不了的问题,如果有那就是百度两下。。。
![](https://img.haomeiwen.com/i8454753/dca2ad8d48a8de1a.png)
链接:https://pan.baidu.com/s/1I9xAIMQ4RdVDmClbVI7DvQ密码:0zjg
里面链接有视频教程和配置环境过程,我只是简单的演示一下编译过程,还有就是如何把自己的lua执行文件打包进bin,然后就是下载
我一般资料都放在opt目录(如果大家也是这样放的,就可以直接运行后面的指令编译)
![](https://img.haomeiwen.com/i8454753/67e6b2c9b1785cbf.png)
想要打开SmartConfig
![](https://img.haomeiwen.com/i8454753/f943693d381bccd9.png)
选择一些模块的功能
![](https://img.haomeiwen.com/i8454753/be840fe25d73ec74.png)
把自己的lua执行文件打包进bin,把自己的lua文件放在
![](https://img.haomeiwen.com/i8454753/846e2a887bd719be.png)
![](https://img.haomeiwen.com/i8454753/3e71c639986e53c8.png)
![](https://img.haomeiwen.com/i8454753/b37a229194373382.png)
![](https://img.haomeiwen.com/i8454753/974e1af1fc221fa8.png)
然后就是编译
![](https://img.haomeiwen.com/i8454753/688ed8f6a3ccde9c.gif)
cd ..
cd ..
cd opt/nodemcu-firmware-master
![](https://img.haomeiwen.com/i8454753/e9d8b99db0069919.gif)
![](https://img.haomeiwen.com/i8454753/9c924043366a1a8a.png)
tar -Jxvf tools/esp-open-sdk.tar.xz
![](https://img.haomeiwen.com/i8454753/20313920836a6f8d.png)
然后设置一下环境变量
export PATH=$PATH:$PWD/esp-open-sdk/xtensa-lx106-elf/bin
![](https://img.haomeiwen.com/i8454753/bf8c10fb453b4218.png)
获得现在的日期
export BUILD_DATE=$(date +%Y%m%d)
![](https://img.haomeiwen.com/i8454753/543f66c0d01cc1f8.png)
然后开始编译
make EXTRA_CCFLAGS="-DBUILD_DATE='\"'$BUILD_DATE'\"'"all
编译完成之后,进入bin目录
![](https://img.haomeiwen.com/i8454753/5ee80adab8c5f4ae.png)
编译完之后bin里面是这样子
![](https://img.haomeiwen.com/i8454753/0072ff5a17260bf8.png)
0x00000和0x10000实质上就是上一节,只不过咱是自己动手编译的,还打开了SmartConfig功能
![](https://img.haomeiwen.com/i8454753/51b3096455918638.png)
0x80000-8mb和0x80000-32mb是咱写的程序然后打包成了bin
一个是8mb一个是32mb,咱用的芯片有的是8mb的有的是32mb的
ESP01就是8mb的 esp12就是32mb的 根据自己的芯片选择刷哪一个
咱现在看怎么合成
先把0x00000 和0x10000合成一个 1.bin的文件,这个文件可以作为开发使用,以后咱就用这个学习开发
srec_cat -output"1.bin"-binary0x00000.bin -binary -fill0xff0x000000x100000x10000.bin -binary -offset0x10000
说一下srec_cat 是文件合成指令
-output "1.bin" -binary 给它说最后输出一个名字是1.bin的二进制文件(-binary)
0x00000.bin -binary 找到第一个文件名字是0x00000.bin的二进制文件(-binary)
-fill 0xff 0x00000 0x10000 先把0x00000到0x10000全部填充0xff(其实内部会先生成一个用于存储的文件)
0x10000.bin -binary -offset 0x10000 找到第二个文件名字是0x10000.bin的二进制文件(-binary),设置合成的时候,把自己的地址偏移到0x10000开始,
其实吧0x00000到0x10000 是65536个字节,就是从65536开始写入,后面再说为什么是0x10000,其实是和flash有关
![](https://img.haomeiwen.com/i8454753/c65ca9b78d68ab1b.png)
注意:这里1.bin就可以使用了,后面的合成实质是把运行文件也打包进bin文件
如果不想运行我写的可以直接刷1.bin地址是0
现在再把1.bin和0x80000-8mb或者0x80000-32mb 合成一个bin
先和
1.bin和0x80000-8mb 生成一个 nodemcu_8mb
srec_cat -output"nodemcu_8mb.bin"-binary1.bin -binary -fill0xff0x000000x800000x80000-8mb.bin -binary -offset0x80000
我发现必须要先填充,否则固件就是不行
整体上说就是先内部生成一个文件(内部文件),0x00000 到 0x80000填充上0xff
然后把1.bin 拷贝到内部文件(从0地址开始拷贝)
然后 把
0x80000-8mb.bin 从0x80000开始拷贝(感觉这里应该叫粘结)
然后生成nodemcu_8mb这个文件
![](https://img.haomeiwen.com/i8454753/3c7fe449111fa69d.png)
现在生成32mb的
srec_cat -output"nodemcu_32mb.bin"-binary1.bin -binary -fill0xff0x000000x800000x80000-32mb.bin -binary -offset0x80000
![](https://img.haomeiwen.com/i8454753/09f4914ca15deb8a.png)
好了现在清除一下,方便下次编译
返回上一级目录
cd ..
![](https://img.haomeiwen.com/i8454753/c678e1539638dbc2.png)
make clean
![](https://img.haomeiwen.com/i8454753/27f42f164155da35.png)
整体的
![](https://img.haomeiwen.com/i8454753/837bc04cdd8735d3.gif)
cd ..
cd ..//进入nodemcu-firmware-mastercd opt/nodemcu-firmware-master//解压esp-open-sdk.tar.xztar -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//进入bin目录cd bin///把0x00000和0x10000合成1.binsrec_cat -output"1.bin"-binary0x00000.bin -binary -fill0xff0x000000x100000x10000.bin -binary -offset0x10000//把0x80000-8mb.bin和1.bin合成nodemcu_8mb.bin(有时候是0x70000注意自己的)srec_cat -output"nodemcu_8mb.bin"-binary1.bin -binary -fill0xff0x000000x800000x80000-8mb.bin -binary -offset0x80000//把0x80000-32mb.bin和1.bin合成nodemcu_32mb.binsrec_cat -output"nodemcu_32mb.bin"-binary1.bin -binary -fill0xff0x000000x800000x80000-32mb.bin -binary -offset0x80000//返回上一级cd ..//清理编译make clean
![](https://img.haomeiwen.com/i8454753/35d35f83086d0b36.gif)
网友评论