6-学会编译lua固件,固件的合成

 http://www.cnblogs.com/yangfengwu/p/9336274.html基础教程源码链接请在淘宝介绍中下载,由于链接很容易失效,如果失效请联系卖家,谢谢https://item.taobao.com/item.htm?spm=a1z10.1-c-s....

 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

  • 发表于 2018-11-16 15:09
  • 阅读 ( 1679 )

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
不写代码的码农
杨奉武

18 篇文章

作家榜 »

  1. 技术销售Delectate 43 文章
  2. 陈夏 26 文章
  3. 国梁 24 文章
  4. miuser 21 文章
  5. 晨旭 20 文章
  6. 朱天华 19 文章
  7. 金艺 19 文章
  8. 杨奉武 18 文章