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


     http://www.cnblogs.com/yangfengwu/p/9336274.html

    基础教程源码链接请在淘宝介绍中下载,由于链接很容易失效,如果失效请联系卖家,谢谢

    https://item.taobao.com/item.htm?spm=a1z10.1-c-s.w4004-18540610442.6.36a74814ZSaRsu&id=569295486025

    注意哈,这一节只是介绍自己如何编译固件,对于初学者而言不必深究哈

    虚拟机和ubuntu的安装 

    https://www.cnblogs.com/Alier/p/6337151.html

    https://blog.csdn.net/colin_lisicong/article/details/70193539

    https://blog.csdn.net/zqxdsy/article/details/79758194

    总有一款适合你,没有百度一下解决不了的问题,如果有那就是百度两下。。。

    链接:https://pan.baidu.com/s/1I9xAIMQ4RdVDmClbVI7DvQ 密码:0zjg

    里面链接有视频教程和配置环境过程,我只是简单的演示一下编译过程,还有就是如何把自己的lua执行文件打包进bin,然后就是下载

    我一般资料都放在opt目录(如果大家也是这样放的,就可以直接运行后面的指令编译)

     想要打开SmartConfig

     选择一些模块的功能

    把自己的lua执行文件打包进bin,把自己的lua文件放在

               

     然后就是编译

    cd ..
    
    
    cd ..
    
    
    cd opt/nodemcu-firmware-master

     

     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

    编译完成之后,进入bin目录

    编译完之后bin里面是这样子

    0x00000和0x10000实质上就是上一节,只不过咱是自己动手编译的,还打开了SmartConfig功能

     0x80000-8mb和0x80000-32mb是咱写的程序然后打包成了bin

    一个是8mb一个是32mb,咱用的芯片有的是8mb的有的是32mb的

    ESP01就是8mb的     esp12就是32mb的   根据自己的芯片选择刷哪一个

     咱现在看怎么合成

    先把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开始,
    其实吧0x00000到0x10000 是65536个字节,就是从65536开始写入,后面再说为什么是0x10000,其实是和flash有关

    注意:这里1.bin就可以使用了,后面的合成实质是把运行文件也打包进bin文件

    如果不想运行我写的可以直接刷1.bin地址是0

    现在再把1.bin和0x80000-8mb或者0x80000-32mb 合成一个bin 
    先和
    1.bin和0x80000-8mb   生成一个 nodemcu_8mb
    srec_cat -output "nodemcu_8mb.bin" -binary 1.bin -binary -fill 0xff  0x00000 0x80000 0x80000-8mb.bin -binary -offset 0x80000
    
    
    我发现必须要先填充,否则固件就是不行
    整体上说就是先内部生成一个文件(内部文件),0x00000 到 0x80000填充上0xff
    然后把1.bin 拷贝到内部文件(从0地址开始拷贝)
    然后 把
    0x80000-8mb.bin 从0x80000开始拷贝(感觉这里应该叫粘结)
    然后生成nodemcu_8mb这个文件

    现在生成32mb的
    srec_cat -output "nodemcu_32mb.bin" -binary 1.bin -binary -fill 0xff         0x00000 0x80000 0x80000-32mb.bin -binary -offset 0x80000
    
    

    好了现在清除一下,方便下次编译
    返回上一级目录
    cd ..

    make clean
    整体的
    cd ..
    
    cd ..
    
    //进入nodemcu-firmware-master
    cd opt/nodemcu-firmware-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
    
    //进入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
    
    //把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
    
    //返回上一级
    cd ..
    
    //清理编译
    make clean
    
    
    

    https://www.cnblogs.com/yangfengwu/p/9349579.html

  • 相关阅读:
    一条短信控制你的手机! Android平台的SQL注入漏洞浅析
    技术分享 Android动态调试程序
    [Java] java byte数组与int,long,short,byte转换
    技术分享:. 外部动态加载DEX文件风险浅谈
    TestLink的使用
    selenium_页面设计模式PageFactory与动态Xpath
    selenium_maven高级实战
    selenium_Jenkins高级实战篇
    将本地Git仓库中的内容上传至GitHub
    将本地下载的jar导入到本地的私有仓库中
  • 原文地址:https://www.cnblogs.com/yangfengwu/p/9337033.html
Copyright © 2020-2023  润新知