ESP8266学习之路 八 (再次编译烧写固件)
第一次编译固件是通过官网编译,但是官网有些默认功能是关闭的 比如说 smartconfig 通过官网编译的是不能使用的 , ESP8266模块的这个功能是通过一键配置连接Mqtt服务器的
这次记录是 如何自己在官方给的源码 去挑选自己想要的功能- 编译
首先是要有Linux环境:
如果你是第一次安装Linux Ubuntu 你需要在你虚拟机联网的情况下执行下面两条指令
1.更新软件源: sudo apt-get update
2.安装gcc ,g++: sudo apt-get install make git tar unzip srecord python python-serial gcc g++
安装好普通的编译环境后,接下来正式编译--nodemcu-firmware-master
一.创建编译环境--xtensa-lx106-elf-ccf1cfd2.ta
在Linux Ubuntu中输入一下指令
1.修改xtensa-lx106-elf目录权限:这一步非常重要,否则在后续编译中很容易出现没有权限问题
sudo chmod 777 /opt/xtensa-lx106-elf
2.输入sudo gedit /etc/environment 按照格式要求输入“:/opt/xtensa-lx106-elf/bin”,保存并退出。最终结果如下:
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/opt/xtensa-lx106-elf/bin"
3. source /etc/environment
4. echo $PATH 查看当前环境变量,是否已经存在/opt/xtensa-lx106-elf/bin
5. xtensa-lx106-elf-gcc -v 查看版本号为gcc版本为4.8.2
二.编译--nodemcu-firmware-master
1.根据需求打开所需要的功能,配置nodemcu-firmware/app/include目录下的user_model.h和user_config.h。更多设置请参考http://nodemcu.readthedocs.io/en/master/
2.编译固件--按顺序输入如下指令即可
(1)tar -Jxvf tools/esp-open-sdk.tar.xz
(2)export PATH=$PATH:$PWD/esp-open-sdk/xtensa-lx106-elf/bin
(3)export BUILD_DATE=$(date +%Y%m%d)
(4)make EXTRA_CCFLAGS="-DBUILD_DATE='\"'$BUILD_DATE'\"'" all
(5)cd bin/
(6)file_name="nodemcu_${BUILD_DATE}.bin"
(7)srec_cat -output ${file_name} -binary 0x00000.bin -binary -fill 0xff 0x00000 0x10000 0x10000.bin -binary -offset 0x10000
(8)cd ..
(9)make clean
最后根据需要进行烧入就可以了。
以上就是根据自己的需要修改添加目标功能....
此编译固件方法还可以把我们自己写好的lua文件添加进去,就不用每次使用ESPlorer.jar上传程序了,,不过这样也费事,只有最终确定了lua程序在这样编译才可以,,,不然有问题就重新编译一次固件费事
想要lua不被看见直接在编译固件放在 要编译的固件工程中 对应的目录:"nodemcu-firmware-master/local/fs"中, 把写好的lua文件放在此目录下然后编译工程,就不需要在使用ESPlorer.jar下载xxx.lua文件了,
不过此时编译的 .bin 文件有多个 ,其中的 nodemcu_xxxxxxxx.bin (xxxxxxxx是生成的日期) 主文件这个是必须要烧写的,,, 其余的 如当时使用的是esp8266模块选择 0x70000-32mb.bin 文件烧写 这个是lua功能的文件 0x70000-表示烧写的地址
但是这样需要写两个 .bin 文件啊 下面是合成的 bin文件这样就可以只烧写一个了 .....