ESP8266 LUA脚本语言开发: 准备工作-动手编译LUA固件
前言
这节咱自己编译LUA固件
准备一台linux的机子
我把固件放到了git上,方便电脑用http下载
我先用这个连接linux
大家随意哈,只要是一台linux的机子就可以,不管是图形页面还是命令行形式使用,只要自己可以操作就可以
我用的是ubuntu16.4
执行 apt-get update
如果自己的ubuntu什么都没有安装,,先执行个命令
apt-get update
更新一下软件库列表,其实是发行ubuntu的人们为咱把几乎所有可能用到的软件都放到了一个地方.咱执行这个命令,就可以把所有软件的https下载链接存起来,咱想安装某个软件的时候(假设调用的是Ubuntu自带的安装软件指令), 这样的话系统先检查你输入的是下载哪个软件的指令,然后找到相应的链接,然后下载下来安装
有些指令我就不唠叨了,请自行百度,看看各自的指令到底是什么意思,很多东西其实都是一层纸(也有可能是钢板),只要你肯下功夫戳破.....
安装其它一些软件
执行 apt-get install make gedit git tar unzip srecord python python-serial gcc g++
分开看(tar unzip ......自行百度都是干什么的)
gedit : 相当于记事本
tar : 解压tar类型的压缩包
unzip:解压zip类型的压缩包
srecord:裁剪拼接文件用
自行百度去.....领进门,修行靠个人..
进入opt文件夹
执行 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
设置环境环境 windows 都是鼠标点点点,键盘敲敲敲 linux就是键盘敲敲敲
vim /etc/environment
在文档的后面加上
:/opt/NodemcuCompile/xtensa-lx106-elf/bin
https://www.runoob.com/linux/linux-vim.html vim命令看这个
这是我一开始的
先按键盘 i
移动到上面的位置,输入 :/opt/NodemcuCompile/xtensa-lx106-elf/bin
执行 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就是咱的Lua开发的固件了
现在这个1.bin就是咱的Lua开发的固件了
现在这个1.bin就是咱的Lua开发的固件了
修改或者添加功能
接着说
为了好叙述我还是用图形页面的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
现在的固件就支持了SmartConfig配网
把LUA程序打包进bin固件
咱现在看另一个事情,
一个一个的刷文件是不是感觉很不爽
刷完固件刷程序,还要一个一个的下载......麻烦
现在咱把咱写的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下载的那么清除程序的时候
清除不了程序
你需要
ESP8266 LUA脚本语言开发: 准备工作-动手编译LUA固件的更多相关文章
- ESP8266 LUA脚本语言开发: 准备工作-LUA开发是怎么来的
前言 当前8266有各种开发 1.在官方已经封装好的C库上开发(SDK开发) 2.官方在SDK的基础上封装的AT指令程序(AT指令开发) 3.在SDK的基础上嵌入脚本语言(Lua,Python等开发方 ...
- ESP8266 LUA脚本语言开发: 准备工作-官网获取LUA固件
前言 这节咱去官网上获取lua开发的固件. 官网下载 下面是我以前写的,咱不使用官网下载的固件,咱使用自己编译的固件.. 填写好自己的的邮箱地址,然后选择好自己需要的功能,一会编译好的固件就会发到您的 ...
- ESP8266 LUA脚本语言开发: 准备工作-LUA开发说明
前言 开发Lua需要使用这个软件 注:该软件需要按照JDK 即 JAVA虚拟机,如果没有安装过JDK,请先看JDK安装教程安装JDK USB线连接开发板接入电脑 选择自己的串口号 波特率115200 ...
- ESP8266 LUA脚本语言开发: 准备工作-为方便学习(统一使用本人编译的固件)
前言 注:为了咱后期统一起来,所以统一使用我编译的LUA固件 一,固件打开了SmartConfig / AirKiss 配网功能 二,打开了SSL 三,其它模块化程序 刷空固件 一,为了保证固件是干净 ...
- ESP8266 LUA脚本语言开发: 准备工作-硬件说明
原理图 实物图 硬件说明 开发板板载说明: 1.主控芯片: ESP8266_12F 1.温湿度传感器DHT11 与连接ESP8266 GPIO4引脚 2.一路继电器 ...
- ESP8266 LUA脚本语言开发: 准备工作-LUA文件加载与变量调用
前言 这节说一下多个文件调用 多个文件之间变量调用 准备两个文件 init.lua other.lua 开始 模块默认一开始调用的是init.lua 咱让init.lua调用 other.lua 很简 ...
- 使用Lua脚本语言开发出高扩展性的系统,AgileEAS.NET SOA中间件Lua脚本引擎介绍
一.前言 AgileEAS.NET SOA 中间件平台是一款基于基于敏捷并行开发思想和Microsoft .Net构件(组件)开发技术而构建的一个快速开发应用平台.用于帮助中小型软件企业建立一条适合市 ...
- ESP8266 LUA脚本语言开发: 外设篇-串口
https://nodemcu.readthedocs.io/en/master/modules/uart/ 串口发送数据 发送一个16进制到串口 uart.write(0, 0xaa) 注: 之所以 ...
- ESP8266 LUA脚本语言开发: 测试下诱人的程序
前言 这一节测试一下诱人的程序 实现的功能,APP通过SmartConfig给Wi-Fi模块配网并绑定设备,然后通过MQTT远程控制开发板的继电器, APP显示ESP8266采集的温湿度数据. 简而言 ...
随机推荐
- 基于hash的AB测试
AB测试 为同一个目标,设计两种方案,将两种方案随机投放市场中,让组成成分相同(相似)用户去随机体验两种方案之一,根据观测结果,判断哪个方案效果更好. 基于hash的AB测试 具体的实现方法为: 在A ...
- TCP连接的建立(三次握手和四次挥手)
写到最后发现我描述的挺水的,这个老哥的用语比较专业一点https://blog.csdn.net/qq_38950316/article/details/81087809 (老哥这篇有些许错别字 大 ...
- Linux 分区管理器
下面的列表没有特定的排名顺序.大多数分区工具应该存在于 Linux 发行版的仓库中. GParted 这可能是 Linux 发行版中最流行的基于 GUI 的分区管理器.你可能已在某些发行版中预装它.如 ...
- PHP服务端优化全面总结
一.优化PHP原则 1.1PHP代码的优化 (1)升级最新的PHP版本 鸟哥PPT里的对比数据,就是WordPress在PHP5.6执行100次会产生70亿次的CPU指令执行数目,而在PHP7中只需要 ...
- 想让自己的项目6666,可是 Chrome 不答应!
读万卷书,行万里路!有的技能可以从书里学会,有的技能却需要在实战中打怪升级慢慢掌握,今天就来和大家聊一个很多小伙伴经常遇到的问题. 缘起 有人向松哥反映,在搭建微服务分布式配置中心 Spring Cl ...
- mongodb 更新数据时int32变为double的解决办法
场景: 在命令手动的修改签到表的整型字段synState,multi参数是可以更新多条,如果是false则更新一条. db.getCollection("ClassRecordOneD ...
- 2019-11-29-win10-uwp-如何判断一个控件在滚动条的里面是用户可见
原文:2019-11-29-win10-uwp-如何判断一个控件在滚动条的里面是用户可见 title author date CreateTime categories win10 uwp 如何判断一 ...
- jQuery实现C#CheckBoxList模糊搜索
前言 最近开发的一套系统中需要对商品进行管理,在选择商品时,要分别从品牌.型号.商品三个类别分别选择对应的选项才能找到需要的商品,三者的关系为:品牌包含型号,型号包含商品,因此使用了三个不同的 asp ...
- Laravel处理session(会话)的方法详解
在Web应用程序中,有必要识别跨越请求的用户并为每个用户保存数据,为此,像Laravel这样的框架提供了一种称为会话的机制.本篇文章就来为大家介绍关于Laravel处理session(会话)的方法. ...
- JavaScript 究竟是怎样执行的?
摘要: 理解 JS 引擎运行原理. 作者:前端小智 原文:搞懂 JavaScript 引擎运行原理 Fundebug经授权转载,版权归原作者所有. 一些名词 JS 引擎 - 一个读取代码并运行的引擎, ...