编译lua固件NodeMcu 8266
https://www.cnblogs.com/yangfengwu/p/10547024.html
因为我现在的Wifi的教程是lua语言编写的,但是有些功能需要自己编译lua固件才可以,这篇文章就详细说一下怎么编译固件
准备一台linux的机子
我把固件放到了git上,方便电脑用http下载
我先用这个连接linux
大家随意哈,只要是一台linux的机子就可以,不管是图形页面还是命令行形式使用,只要自己可以操作就可以
我用的是ubuntu16.4
如果自己的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 请
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下载的那么清除程序的时候
清除不了程序
你需要
编译lua固件NodeMcu 8266的更多相关文章
- ESP8266 LUA脚本语言开发: 准备工作-动手编译LUA固件
前言 这节咱自己编译LUA固件 准备一台linux的机子 我把固件放到了git上,方便电脑用http下载 我先用这个连接linux 大家随意哈,只要是一台linux的机子就可以,不管是图形页面还是命令 ...
- 6-(基础入门篇)学会编译lua固件,固件的合成
http://www.cnblogs.com/yangfengwu/p/9336274.html 基础教程源码链接请在淘宝介绍中下载,由于链接很容易失效,如果失效请联系卖家,谢谢 https://it ...
- ESP8266 LUA脚本语言开发: 准备工作-为方便学习(统一使用本人编译的固件)
前言 注:为了咱后期统一起来,所以统一使用我编译的LUA固件 一,固件打开了SmartConfig / AirKiss 配网功能 二,打开了SSL 三,其它模块化程序 刷空固件 一,为了保证固件是干净 ...
- ESP8266 LUA脚本语言开发: 准备工作-官网获取LUA固件
前言 这节咱去官网上获取lua开发的固件. 官网下载 下面是我以前写的,咱不使用官网下载的固件,咱使用自己编译的固件.. 填写好自己的的邮箱地址,然后选择好自己需要的功能,一会编译好的固件就会发到您的 ...
- Sublime Text(2/3)编译lua
想在subLime text 3中集成编译Lua(或其他语言)功能,只需要在Tool->Build System -> New Build System中将原来的 { "shel ...
- 用VC编译lua源码,生成lua语言的解释器和编译器
用VC编译lua源码,生成lua语言的解释器和编译器 1.去网址下载源码 http://www.lua.org/download.html 2.装一个VC++,我用的是VC6.0 3.接下来我们开始编 ...
- 转:小白编译openwrt固件教程
原文地址 编译openwrt固件并没有想象的那么复杂,我也是个小白,以下内容是我将网络上的编译教程稍微进行了一下整合.因为我发现很多编译教程没有说明如何更改flash相关配置. 安装ubuntu, ...
- 用vs2013编译lua源码方法(一)
用vs2013编译lua源码方法 来源:网络 编辑:admin 1.下载lua源码:lua-5.2.3.tar.gz,解压 2.用vs2013建立一个win32工程: 1)下载后解压到一个目录下 ...
- windows下编译lua源码
所有的lua源码都放在了 src 文件夹下,当然,不同的lua版本目录结构有可能不一样,但是都会有 src 这个文件夹,只有这个才是我们编译必须的.而且lua越做越精简了,5.1的版本里面还有一些te ...
随机推荐
- CSP-S2019 自闭记
$Day0:$ 最后一场zr十连测从200挂到60,嘴上说着攒rp心里觉得药丸. 得知自己在本校考试感觉8错. $Day1:$ 早上7点50到了校门口,没让进QAQ早知道我再下一把棋了. 于是跟熊聊天 ...
- Windows ----tasklist/taskkill
1) Tasklist命令详解 “Tasklist”命令是一个用来显示运行在本地或远程计算机上的所有进程的命令行工具,带有多个执行参数. 作用:结束一个或多个任务或进程.可以根据进程 ID 或图像名来 ...
- jsMind思维导图模式展示数据
效果图: jsmind组件下载地址:https://files.cnblogs.com/files/fengyeqingxiang/jsmind.zip 后端代码,此处以C#编写的后台,Java或其他 ...
- Django---MTV和MVC的了解,Django的模版语言变量和逻辑,常见的模板语言过滤器,自定义过滤器,CSRF了解,Django的母版(继承extends,块block,组件include,静态文件的加载load static),自定义simple_tag和inclusion_tag
Django---MTV和MVC的了解,Django的模版语言变量和逻辑,常见的模板语言过滤器,自定义过滤器,CSRF了解,Django的母版(继承extends,块block,组件include,静 ...
- 27、获取图片验证需要的uuId
export function getUUID() { return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, c => ...
- JS 正则表达式转换字符串
获取第一个.前面的字符串,以及后面的字符串: const transform = str => { str.replace(/([^\.]*)\.(.*)/, function($0, $1,$ ...
- Python 序列、列表(List)、元组(Tuple)
序列 序列是Python中最基本的数据结构,包括字符串.列表.元组. 序列,顾名思义,是有序的,序列都有索引,都能进行索引.切片(截取).加(连接).乘(倍增).检查成员的操作. 因为序列有序,可通过 ...
- BLAS快速入门
一.简介 BLAS[Basic Linear Algebra Subprograms,基础线性代数程序集]是一个应用程序接口[API]标准,用于规范发布基础基础线性代数操作的数值库[常用于向量或矩阵计 ...
- selenium.获取浏览器大小、设置浏览器位置、最大化浏览器
此篇博客学习控制浏览器的api,分别有: get_window_size() 获取浏览器大小 set_window_size() 设置浏览器位置 get_window_position() 获取浏览器 ...
- Python之路(第四十三篇)线程的生命周期、全局解释器锁
一.线程的生命周期(新建.就绪.运行.阻塞和死亡) 当线程被创建并启动以后,它既不是一启动就进入执行状态的,也不是一直处于执行状态的,在线程的生命周期中,它要经过新建(new).就绪(Ready).运 ...