在制作nodemcu-firmware时,除了选择必要模块和系统文件,往往需要将编写的lua程序和文档直接制作成硬件,方便批量烧录进芯片。本来,文档说明提到只要在nodemcu-firmware/local/fs目录里面包含了文件,在根目录运行make,会自动生成包含spiffs image的bin文件的。但实际上仅生成了0x000000.bin和0x010000.bin两个文件。于是需要手动制作spiffs image文件。下面就介绍如何使用spiffsimg程序生成固件。
本案例的系统环境:固件制作使用linux平台(在天翼云服务器上进行,Centos7),本地系统使用Windows10(flash软件和ESPlorer).

在生成spiffs image前,首先要生成nodemcu firmware:

我这边user_config.h的配置:

#define LUA_NUMBER_INTEGRAL
#define LUA_FLASH_STORE                   0x10000

然后,根据教程,回到nodemcu-firmware/,运行make指令就会生成两个bin文件。
然后将两个bin文件通过flash工具写入nodemcu相应的地址(文件名就是地址)。
这时用ESPlorer连接芯片,重启芯片,会正常启动,并提示:Could not find init.lua。
然后我们可以运行指令查看spiffs的开始地址:

dolocal s,p={},node.getpartitiontable()for _,k in ipairs{'lfs_addr','lfs_size','spiffs_addr','spiffs_size'} dos[#s+1] ='%s = 0x%06x' % {k, p[k]}endprint ('{ %s }' % table.concat(s,', '))
end

得到以下结果:

{ lfs_addr = 0x07c000, lfs_size = 0x010000, spiffs_addr = 0x08c000, spiffs_size = 0x071000 }

这就知道spiffs开始地址为:0x08c000

然后进入spiffs image文件制作:

具体spiffsimg介绍见https://github.com/nodemcu/nodemcu-firmware/blob/master/docs/en/spiffs.md
先进入/nodemcu-firmware/tools/spiffsimg/目录
查看有没有一个spiffsimg的文件,如没有,就运行make指令,会编译生成一个spiffsimg文件。否则无法运行spiffsimg命令。
执行:

make

然后在目录中会生成一个spiffsimg文件,这样就可以运行spiffsimg指令来将需要的文件打包了。
指令:

./spiffsimg -f lua.img -S 1MB -U 573440 -r lua.script

其中:-S后面的参数1MB,表示芯片flash大小为1MB,-U表示前面固件和LSF使用数;实际生成的img文件大小为1*1024 - 573440/1024 - 48 = 424k。573440是根据上面固件刷入后,查看spiffs的开始地址为0x08c000,其十进制地址为573440。
在打包前先在spiffsimg目录里创建一个lua.script文件,文件名可以自定。
lua.script内容:

import /filedriver/nodemcu-firmware/local/fs/init.lua init.lua
import /filedriver/nodemcu-firmware/local/fs/init_config.lua init_config.lua
import /filedriver/nodemcu-firmware/local/fs/get_ip.lua get_ip.lua
import /filedriver/nodemcu-firmware/local/fs/checkVersion.lua checkVersion.lua
import /filedriver/nodemcu-firmware/local/fs/program.lua program.lua
import /filedriver/nodemcu-firmware/local/fs/enduser_setup.html enduser_setup.html
ls

其中:
import <文件的路径> <mcu中的文件名>:导入文件
ls:显示包含的文件信息
然后运行spiffsimg指令:

./spiffsimg -f lua.img -S 1MB -U 573440 -r lua.script

最后就会生成一个lua.img的文件,就可以烧录进mcu了,但需要搞清楚烧录的地址,就是spiffs的地址。这个地址可以用ESPlorer连接nodemcu,通过以下指令活得:

dolocal s,p={},node.getpartitiontable()for _,k in ipairs{'lfs_addr','lfs_size','spiffs_addr','spiffs_size'} dos[#s+1] ='%s = 0x%06x' % {k, p[k]}endprint ('{ %s }' % table.concat(s,', '))
end

得到以下结果:

{ lfs_addr = 0x07c000, lfs_size = 0x010000, spiffs_addr = 0x08c000, spiffs_size = 0x071000 }

这就知道spiffs开始地址为:0x08c000
于是就可以用flash工具,在以上地址上写入上面生成的img文件了。
写入后,再用ESPlorer查看,重启芯片后直接就可以运行init.lua了。

最后为方便批量刷写固件,将三个文件合并为一个bin文件:

先将上面生成的0x000000.bin、0x010000.bin、lua.img放在同一个目录bin
然后进入bin目录,执行srec_cat指令合并文件:

cd bin
srec_cat -output "temp.bin" -binary 0x00000.bin -binary -fill 0xff 0x00000 0x10000 0x10000.bin -binary -offset 0x10000
srec_cat -output "nodemcu_32mb.bin" -binary temp.bin -binary -fill 0xff 0x00000 0x8c000 lua.img -binary -offset 0x8c000

最终生成"nodemcu_32mb.bin"文件,这样就可以直接flash一个文件了。

提示:

1、必须用git colne 来下载nodemcu-firware,选择master分支下载

git clone --recurse-submodules -b master https://github.com/nodemcu/nodemcu-firmware.git

2、以上生成的bin和img文件在esp8266和esp8285芯片上均正常,记得在flash时选择正确的flash大小和SPI MODE(esp8266:DIO;esp8285:DOUT)

个性化制作nodemcu-firmware(esp8266/esp8285 固件制作)----包含lua程序bin的制作相关推荐

  1. Windows程序安装包制作——EasySetup

    0 前言 这里略去关于EasySetup的下载和安装,直接描述使用EasySetup创建程序安装包的过程.下面的步骤都已经假设您您已经安装并启动了EasySetup,而且已经准备好用于制作安装包的程序 ...

  2. esp8266 蓝牙耳机_走进物联网智能家居-手把手带你制作wifi智能开关-ESP8266学习笔记(二)...

    走进物联网智能家居-手把手带你制作wifi智能开关-ESP8266学习笔记(二) 2020-05-09 13:44:11 9点赞 72收藏 6评论 小编注:此篇文章来自即可瓜分10万金币,周边好礼达标 ...

  3. NodeMcu arduino ESP8266 使用Ticker库(多任务处理)

    NodeMcu arduino ESP8266 本文章学习借鉴于太极创客团队,以表感谢.官网http://www.taichi-maker.com/ ESP8266 使用Ticker库(多任务处理) ...

  4. esp8266 丢失固件 丢失程序问题

    1.首先esp8266 丢失固件 丢失程序问题已经解决 2.解决方法 我们制作了一个固件保护主板,提供2种供电接口,支持5v稳压,串口电平保护,固件保护,反电动势保护,支持复位按键,烧录触发按键,配网 ...

  5. 程序安装包制作工具 v1.0官方版

    2019独角兽企业重金招聘Python工程师标准>>> 名称:程序安装包制作工具 v1.0官方版 版本:1.0更新日期:2016-06-27 大小:2.9MB软件语言:简体中文 软件 ...

  6. mfc 制作不同的文档模板mdi不同的子窗体_制作ACK集群自定义节点镜像的正确姿势...

    随着云原生时代的到来,用户应用.业务上云的需求也越来越多,不同的业务场景对容器平台的需求也不尽相同,其中一个非常重要的需求就是使用自定义镜像创建ACK集群. ACK支持用户使用自定义镜像创建Kuber ...

  7. 【arduino】nodemcu(ESP8266)发送邮件库测试笔记,SMTP email

    前一阵子看到群里有人问arduino发送邮件的相关问题,正好我也有搞这块的计划,于是便简单试了几个项目,(虽然就整出来一个)这里简单总结一下(防止日后忘了),如果你恰好也需要用这块,这篇文章可能会帮你 ...

  8. linux bin文件制作

    linux bin文件制作 一 Linux安装文件 Linux常见的安装为tar,zip,gz,rpm,deb,bin等.我们可以简单的分为三类, 第一:打包或压缩文件tar,zip,gz等,一般解压 ...

  9. 计算机广告制作未来发展还行吗,计算机多媒体设计专业和广告设计制作那个好...

    技校网专门为您推荐的类似问题答案 问题1: 计算机多媒体技术和广告设计与制作哪个专业好 计算机多媒体涵盖范围广.广告与制作就业前景好.如果想学更多东西的话选择计算机多媒体.包含广告设计. 问题2: 计 ...

  10. 数字信号 fft c源码_如何制作一个简单的人体动态识别微信小程序(附源码)

    知乎小白第一次写专栏,还请多指教. 先放成果. GitHub源码: lrioxh/HAR-applet-of-Wechat​github.com b站演示视频: 居然不需要服务器?!如何制作一个简单的 ...

最新文章

  1. 统计应用计算机基础,计算机基础应用试题及答案参考
  2. PyCharm使用技巧:PyCharm重构
  3. java 文件随机读取_Java 实现文件随机读写-RandomAccessFile
  4. scrapy-redis
  5. mybatis中自建的类型别名
  6. 刚开始学C 语言 怎么编写小程序,用C 语言 程序怎么样编写一个小程序 工具
  7. 730阵列卡支持多大硬盘_凯捷月销破2万,配6座头等舱空间,到底有多舒服?试驾了才知道...
  8. redisTemplate.opsForValue()中方法讲解
  9. BootStrap笔记-分页
  10. 理解mysql 底层原理
  11. 计算机组成原理——计算机的工作过程
  12. C++实现排列组合问题
  13. Ubuntu 常用软件推荐(QQ、微信、MATLAB等)及安装过程
  14. Datawhale数据分析思考与问题解决
  15. selenium自动化之PO模型
  16. FFmpeg色度抠图
  17. win7系统提示计算机内存不足,win7电脑提示计算机内存不足怎么办
  18. 人工智能知识图谱研究
  19. 个人项目总结---微信扫描二维码强制群发
  20. 个人能力--认知能力

热门文章

  1. Activity的神奇启动模式之singleTask
  2. 2021.7.28魔鬼训练报告
  3. 为什么要学习数据库,数据库有什么作用呢,以及为什么要选mysql
  4. docx4j linux上文件内容乱码问题
  5. 德信计算机真人发声怎么变音乐,文字转语音真人发声 文字转语音制作真人语音广告...
  6. cass等距离等分线段的命令键_cad等分快捷键(cad等分线段快捷键命令)
  7. 854计算机专业基础,2020年哈工大考研《854计算机基础》考试大纲
  8. 医疗相关计算机系统,智能医疗信息管理系统
  9. linux中安装rpm命令,linux下,如何安装rpm命令?
  10. 数据仓库分层设计,零基础一看就会