http://www.javashuo.com/article/p-nnsjjcfg-ch.htmlhtml
由于我如今的Wifi的教程是lua语言编写的,可是有些功能须要本身编译lua固件才能够,这篇文章就详细说一下怎么编译固件node
准备一台linux的机子python
我把固件放到了git上,方便电脑用http下载linux
我先用这个链接linux git
你们随意哈,只要是一台linux的机子就能够,无论是图形页面仍是命令行形式使用,只要本身能够操做就能够ubuntu
我用的是ubuntu16.4vim
若是本身的ubuntu什么都没有安装,,先执行个命令windows
有些指令我就不唠叨了,请自行百度,看看各自的指令究竟是什么意思,不少东西其实都是一层纸(也有多是钢板),只要你肯下功夫戳破.....工具
安装另一些软件测试
apt-get install make gedit git tar unzip srecord python python-serial gcc g++ 分开看(tar unzip ......自行百度都是干什么的)
gedit : 至关于记事本
tar : 解压tar类型的压缩包
unzip:解压zip类型的压缩包
srecord:裁剪拼接文件用
...等等等等吧!!!自行百度去.....领进门,修行靠我的..
进入opt文件夹,本身靠本身进去哈....
不知道git 请
https://www.cnblogs.com/yangfengwu/category/1462061.html git是管理和开发的工具
而后
git clone https://gitee.com/yang456/NodemcuCompile.git 这是我上传到git的,方便编译固件
cd NodemcuCompile
ls
nodemcu-firmware-2.0.0-master 这个是lua的源码
xtensa-lx106-elf 这个是编译8266所须要的环境
解压出来这两个文件
tar -xvf nodemcu-firmware-2.0.0-master.tar.bz2
接着解压
tar -xvf xtensa-lx106-elf-ccf1cfd2.tar.bz2
ls
修改下xtensa-lx106-elf 文件的权限,让文件可读可写,防止后续编译中出现没有权限问题
文件是绿色就不用修改...你们本身百度文件颜色和对应的权限
chmod -R 777 ./xtensa-lx106-elf 自行百度 ./ 和 chmod 把xtensa-lx106-elf及其内部文件全部的权限都是可读可写
设置环境环境 windows 都是鼠标点点点,键盘敲敲敲 linux就是键盘敲敲敲
vim /etc/environment
在文档的后面加上
:/opt/NodemcuCompile/xtensa-lx106-elf/bin
https://www.runoob.com/linux/linux-vim.html vim命令看这个
这是我一开始的
先按键盘 i
移动到上面的位置,输入
source /etc/environment 当即生效环境变量
echo $PATH 查看当前环境变量
咱测试一下
xtensa-lx106-elf-gcc -v
为了防止编译出错,咱也设置 nodemcu-firmware-2.0.0-master 里面全部的权限
chmod -R 777 ./nodemcu-firmware-2.0.0-master
进入 nodemcu-firmware-2.0.0-master
cd nodemcu-firmware-2.0.0-master
//解压esp-open-sdk.tar.xz
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
好了
如今清理一下工程
make clean
进入bin文件
cd bin
ls
里面有两个bin
一个从0x00000地址开始刷 一个从 0x10000 地址开始刷,刷进去这两个就是咱lua 开发的固件
可是刷两个比较麻烦,,咱就把这两个合成一个
//把0x00000和0x10000合成1.bin
srec_cat -output "1.bin" -binary 0x00000.bin -binary -fill 0xff 0x00000 0x10000 0x10000.bin -binary -offset 0x10000
说一下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开始
如今这个1.bin就能够用了...不过如今若是用这个软件编译,若是要下载下来,要么用git 传上去,要么用ftp......
怎么把linux上的文件弄下来本身百度去....
而后刷进去
接着说
为了好叙述我仍是用图形页面的linux说明....这个没有图形页面,叙述起来比较麻烦
修改完最后别忘了点击保存
而后向上面那样编译就能够
不事后期的编译只须要
//进入cd nodemcu-firmware-master
//获取日期
export BUILD_DATE=$(date +%Y%m%d)
//编译
make EXTRA_CCFLAGS="-DBUILD_DATE='\"'$BUILD_DATE'\"'" all
//清理编译
make clean
而后到bin文件里面找到编译好的固件,下载到wifi里面就能够(能够先合成一个再下载,比较方便)
//把0x00000和0x10000合成1.bin
cd bin
srec_cat -output "1.bin" -binary 0x00000.bin -binary -fill 0xff 0x00000 0x10000 0x10000.bin -binary -offset 0x10000
而后刷进去
咱如今看另外一个事情,
一个一个的刷文件是否是感受很不爽
刷完固件刷程序,还要一个一个的下载......麻烦
如今咱把咱写的lua程序打包进bin文件里面
我就写个简单的文件测试测试给你们看,多
而后把咱的程序文件放到
而后编译
//进入cd nodemcu-firmware-master
//获取日期
export BUILD_DATE=$(date +%Y%m%d)
//编译
make EXTRA_CCFLAGS="-DBUILD_DATE='\"'$BUILD_DATE'\"'" all
//清理编译
make clean
而后咱看看bin文件里面
如今下载的话能够
程序默认一启动就运行了咱写的程序
不过这样多麻烦,,我仍是喜欢刷一个固件
//进入bin目录
cd bin
//把0x00000和0x10000合成1.bin
srec_cat -output "1.bin" -binary 0x00000.bin -binary -fill 0xff 0x00000 0x10000 0x10000.bin -binary -offset 0x10000
//把0xa0000-32mb.bin和1.bin合成nodemcu_32mb.bin
srec_cat -output "nodemcu_32mb.bin" -binary 1.bin -binary -fill 0xff 0x00000 0xa0000 0xa0000-32mb.bin -binary -offset 0xa0000
好了,,最后下载这一个就能够了
注意,因为程序文件大小不同,因此这个地址也可能不同
我留下几个
//把0x80000-8mb.bin和1.bin合成nodemcu_8mb.bin(有时候是0x70000注意本身的)
srec_cat -output "nodemcu_8mb.bin" -binary 1.bin -binary -fill 0xff 0x00000 0x80000 0x80000-8mb.bin -binary -offset 0x80000
//把0x80000-32mb.bin和1.bin合成nodemcu_32mb.bin
srec_cat -output "nodemcu_32mb.bin" -binary 1.bin -binary -fill 0xff 0x00000 0x80000 0x80000-32mb.bin -binary -offset 0x80000
//把0x70000-8mb.bin和1.bin合成nodemcu_8mb.bin
srec_cat -output "nodemcu_8mb.bin" -binary 1.bin -binary -fill 0xff 0x00000 0x70000 0x70000-8mb.bin -binary -offset 0x70000
//把0x70000-32mb.bin和1.bin合成nodemcu_32mb.bin
srec_cat -output "nodemcu_32mb.bin" -binary 1.bin -binary -fill 0xff 0x00000 0x70000 0x70000-32mb.bin -binary -offset 0x70000
//把0xb0000-8mb.bin和1.bin合成nodemcu_8mb.bin
srec_cat -output "nodemcu_8mb.bin" -binary 1.bin -binary -fill 0xff 0x00000 0xb0000 0xb0000-8mb.bin -binary -offset 0xb0000
//把0xb0000-32mb.bin和1.bin合成nodemcu_32mb.bin
srec_cat -output "nodemcu_32mb.bin" -binary 1.bin -binary -fill 0xff 0x00000 0xb0000 0xb0000-32mb.bin -binary -offset 0xb0000
注意:
若是把本身的程序打包进bin下载的那么清除程序的时候
清除不了程序
你须要