文档章节

ESP8266 LUA脚本语言开发: 准备工作-动手编译LUA固件

o
 osc_aq3v6w0z
发布于 2019/11/28 11:25
字数 1717
阅读 39
收藏 0

「深度学习福利」大神带你进阶工程师,立即查看>>>

 

 

 

 

前言

  这节咱自己编译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下载的那么清除程序的时候

 

 清除不了程序

你需要

 

 

 

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
Flappy Bird(安卓版)逆向分析(一)

更改每过一关的增长分数 反编译的步骤就不介绍了,我们直接来看反编译得到的文件夹 方法1:在smali目录下,我们看到org/andengine/,可以知晓游戏是由andengine引擎开发的。打开/res/raw/at...

enimey
2014/03/04
6.1K
18
beego API开发以及自动化文档

beego API开发以及自动化文档 beego1.3版本已经在上个星期发布了,但是还是有很多人不了解如何来进行开发,也是在一步一步的测试中开发,期间QQ群里面很多人都问我如何开发,我的业余时间实在...

astaxie
2014/06/25
2.7W
22
极速博客引擎--Gor

gor 是使用 golang 实现的类Ruhoh静态博客引擎(Ruhoh like),基本兼容ruhoh 1.x规范. 相当于与ruhoh的官方实现(ruby实现), 有以下优点: 速度完胜 -- 编译wendal.net近200篇博客,仅需要1秒 安装...

wendal
2013/01/20
3.9K
0
TDD的测试框架--Machine.Specification

Machine.Specification 是一个 TDD 测试驱动开发的测试框架,简化了测试,无需关心语言本身特性。 Machine.Specifications 带来的好处是不需要在代码里有注释,但同时阅读代码的人可以一目了...

匿名
2013/01/22
1.2K
0
在多个浏览器上运行脚本--Queen

假设你想和朋友们玩这么个游戏:你写下某个数字,然后让朋友们猜你写的是什么数字。你的朋友们将不断的给你一些猜测的数字,直到猜中为止。 现在想象你的朋友都是使用的浏览器,这个游戏就相...

匿名
2013/01/24
4.7K
1

没有更多内容

加载失败,请刷新页面

加载更多

利用Numpy中的ascontiguousarray可以是数组在内存上连续,加速计算

1. 概述 在使用Numpy的时候,有时候会遇到下面的错误: AttributeError: incompatible shape for a non-contiguous array 看报错的字面意思,好像是不连续数组的shape不兼容。 有的时候,在看...

osc_9we1w99u
32分钟前
0
0
如何管理客户的期望值?

根据客户关系管理(CRM)中的三角定律,客户满意度=客户体验-客户期望值。客户期望值与客户满意度成相对反比,因此需要引导客户期望值并维持在一个适当的水平,同时客户期望值需要与客户体验协...

cailisuper
今天
11
0
阿里研究员:软件测试中的18个难题

阿里QA导读:对于软件测试来说,怎么样才算测够了?如何评价测试的有效性?那么多测试用例,以后怎么删?在软件测试中会遇到非常多的问题,阿里研究员郑子颖分享了18个他总结出的难题以及相关...

阿里巴巴技术质量
昨天
0
0
Numpy的常用函数总结

1、np.argmax()、np.max()、np.argmin()、np.min()用法: argmax返回的是最大数的索引.argmax有一个参数axis,默认是0。看二维的情况如下: a = np.array([[1, 5, 5, 2],            ...

osc_auwur47t
34分钟前
0
0
【报告分享】2020抖音进阶-挑战赛2.0产品营销方案.pdf(附下载链接)

大家好,我是文文(微信:sscbg2020),今天给大家分享抖音营销中心出品的《2020抖音进阶-挑战赛2.0产品营销方案.pdf》,方案里面的玩法解析、案例、营销重点分析等都很清晰,对短视频及品牌...

智能推荐系统
昨天
11
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部