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的更多相关文章

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

    前言 这节咱自己编译LUA固件 准备一台linux的机子 我把固件放到了git上,方便电脑用http下载 我先用这个连接linux 大家随意哈,只要是一台linux的机子就可以,不管是图形页面还是命令 ...

  2. 6-(基础入门篇)学会编译lua固件,固件的合成

    http://www.cnblogs.com/yangfengwu/p/9336274.html 基础教程源码链接请在淘宝介绍中下载,由于链接很容易失效,如果失效请联系卖家,谢谢 https://it ...

  3. ESP8266 LUA脚本语言开发: 准备工作-为方便学习(统一使用本人编译的固件)

    前言 注:为了咱后期统一起来,所以统一使用我编译的LUA固件 一,固件打开了SmartConfig / AirKiss 配网功能 二,打开了SSL 三,其它模块化程序 刷空固件 一,为了保证固件是干净 ...

  4. ESP8266 LUA脚本语言开发: 准备工作-官网获取LUA固件

    前言 这节咱去官网上获取lua开发的固件. 官网下载 下面是我以前写的,咱不使用官网下载的固件,咱使用自己编译的固件.. 填写好自己的的邮箱地址,然后选择好自己需要的功能,一会编译好的固件就会发到您的 ...

  5. Sublime Text(2/3)编译lua

    想在subLime text 3中集成编译Lua(或其他语言)功能,只需要在Tool->Build System -> New Build System中将原来的 { "shel ...

  6. 用VC编译lua源码,生成lua语言的解释器和编译器

    用VC编译lua源码,生成lua语言的解释器和编译器 1.去网址下载源码 http://www.lua.org/download.html 2.装一个VC++,我用的是VC6.0 3.接下来我们开始编 ...

  7. 转:小白编译openwrt固件教程

    原文地址 编译openwrt固件并没有想象的那么复杂,我也是个小白,以下内容是我将网络上的编译教程稍微进行了一下整合.因为我发现很多编译教程没有说明如何更改flash相关配置.   安装ubuntu, ...

  8. 用vs2013编译lua源码方法(一)

    用vs2013编译lua源码方法 来源:网络    编辑:admin 1.下载lua源码:lua-5.2.3.tar.gz,解压 2.用vs2013建立一个win32工程: 1)下载后解压到一个目录下 ...

  9. windows下编译lua源码

    所有的lua源码都放在了 src 文件夹下,当然,不同的lua版本目录结构有可能不一样,但是都会有 src 这个文件夹,只有这个才是我们编译必须的.而且lua越做越精简了,5.1的版本里面还有一些te ...

随机推荐

  1. 【题解】Kathy函数 [BZOJ1223] [P2235] [HNOI2002]

    [题解]Kathy函数 [BZOJ1223] [P2235] [HNOI2002] 这几疯狂刷了数位\(dp\)的题,到这道题时被卡了一天,一看大佬的讲解发现居然是求回文数╮(╯_╰)╭ 感觉被大佬狠 ...

  2. Linux命令注释—HDFS运维

    HDFS运维—命令注释 1 实验背景 HDFS是大数据其他组件的基础,Hive的数据存储在HDFS中,Mapreduce.Spark 等计算数据也存储在HDFS 中,HBase 的 region 也是 ...

  3. 使用Dbvisualizer 连接 Elasticsearch

    Dbvisualizer 安装 从网上下载该软件,并破解激活 下载地址:http://www.ddooo.com/softdown/142713.htm 1.下载解压,得到dbvisualizer p ...

  4. YAML语言简明教程

    编程免不了要写配置文件,如果你还在用xml/ini/json,就有点过时了,怎么写配置也是一门学问. YAML 是专门用来写配置文件的语言,非常简洁和强大,远比 JSON 格式方便. 本文介绍 YAM ...

  5. Android studio 混淆配置

    混淆 studio 使用Proguard进行混淆,其是一个压缩.优化和混淆java字节码文件的一个工具. 功能:Shrinking(压缩).Optimization(优化).Obfuscattion( ...

  6. hibernate Criteria中多个or和and的用法 and ( or or)

    /s筛选去除无效数据 /*      detachedCriteria.add( Restrictions.or( Restrictions.like("chanpin", &qu ...

  7. echarts的地图省份颜色自适应变化

    在使用echarts的地图的时候省份的颜色可能随着数据的多少显示不同的颜色,但是当后台返回的数据的变化较大时可能就不好控制了,所以需要设置根据后台的数据进行自适应 将后台返回的数据中的value放入一 ...

  8. 从零搭建一个简单的webpack环境

    1.npm Init 2.创建webpack.config.js文件,并配置入口和出口 3.Package.json的script中配置命令对应的操作 .安装webpack-dev-server 模块 ...

  9. JavaScript 数组(一)数组基础

    一.数组 1.概述 数组 就是将多个元素按一定顺序排放到一个集合中,那么这个集合称之为数组. 数组 也是一种数据类型,属于复杂数据类型(Object). 2.特点 存放的元素有序的. 可以存放不同的数 ...

  10. 汽配生产的精益化管理如何实现?这家3000人的企业靠MES系统进行管理

    精益达电子事业部电子车间于在完成车间改造后,生产能力得到大幅提升.但生产制造过程信息化仍处于空白,众多设备处于单机工作模式,车间现场计划排产.物料管理.质量管理等,还处于原始的凭经验.人工干预方式. ...