zynq+linux固化程序,MiZ702学习笔记6——ZYNQ如何固化程序

fa6ec34e02b5f3c9f44448ea66f3a388.png

上次,我们讲到了EMIO的使用,其实那就是一个最简的“PS + PL”运用的体现。我们之前是通过JTAG先下载bit流文件,再下载elf文件,之后点击Run As来运行的程序。但是这样只要一断电,程序就没了。那么今天我们就来试试如何让程序断电不消失。

之前,JTAG的方法是通过TCL脚本来初始化PS,然后用JTAG收发信息,可用于在线调试。这次我们得想办法把,程序放到一个非易失的存储器件里。

那我们先要稍微了解下zynq的启动过程,启动过程有3个阶段:

阶段 0:即传统的BootROM过程,zynq芯片里有个rom里面固化了一段不可修改的程序,只有zynq一上电,这段程序就会执行,它将对zynq的NAND、NOR、SD等基本外设控制器进行初始化。把SD卡这类易失的存储器件初始化好了之后,就会把其中的程序拷贝到zynq的OCM(On-chip memory),那么这个被拷贝到片上RAM执行的程序就是我们今天要制作的文件——BOOT.bin。

这里有个疑问,zynq他怎么知道BOOT.bin是在SD还是NAND或是NOR?看到MiZ702按键旁的拨码开关了吗?MiZ702默认拨码的顺序,就是让BootRom去SDRAM中寻找启动代码。怎么配置拨码开关详见MiZ702的硬件使用手册。8b722579b506b534d1fcef7de1634b1a.png

阶段 1:说到BOOT.bin,他其实是由3个文件制作而成,第一个是FSBL.elf, 第二个是bit文件,第三个是运行在PS

上的elf文件。第二个和第三个上次我们已经见过了,bit文件是由vivado产生里面包含了zynq PS的配置部分内容,

以及PL部分的逻辑内容。第三个文件就是SDK里写的用户程序生成的。那么第一个文件FSBL.elf是干嘛的呢?

它做的这个事情就是第一阶段的内容:,根据bit文件,首先配置PS部分,PS完成初始化后,会去配置PL部分,之后会去加载第二阶段的代码。

阶段 2:这一阶段是可选的,完成Linux系统启动过程(U-BOOT)。我们这次是还是裸奔,不需要。

再回到最初的问题,如何制作BOOT.bin。因为制作BOOT.bin需要三个文件,第二个和第三个我们已经有了,现在就差FSBL.elf了。

下面就介绍如何生成FSBL.elf,SDK可以完成这个过程,虽然你自己也可以写,但是xilinx提供了,你不用吗?哈哈!

过程如下:

1、直接双击SDK,选择一个工作空间之后,新建一个FSBL的工程:297021c7b0a96dcde30daaf78646b912.png

d83c6432ca7646e8950abb2ea61f6632.png

那么,编译之后,就会生成FSBL.elf,再把上一个工程的生成的bit和elf文件找到,就可以开始,制作BOOT.bin了。

2、在SDK的工具栏找到:Xilinx Tool->Creat Zynq Boot Imageed507d115e9eaf29e7f6c2bce6615557.png

3、分别添加以上3个文件,但是最好按顺序添加,因为FSBL最先启动,然后配置PS,最后配置PL,所以顺序就是1、FSBL.elf 2、bit 3、程序的elf。66a18d827de1771233a6912b53c482cd.png

4、点击add,添加FSBL.elf66f91b9ea754cbd507616a99ea954ef8.png

5、点击add,添加LED_wrapper.bit5450bd010cbbfcd135a84ea8cd13da32.png

6、点击add,添加led.elf4e2a4b27114cb3ce029aceb445ac01fa.png

7、点击Creat Image生成BOOT.bind4a436a693f9e0ac0d69ded2fd108c5e.png

看到这条信息的时候,就是BOOT.bin制作好的时候:9d1a4cdb1dbd1628eb0f964cacd68282.png

在之前设定的文件夹下找到,BOOT.bin并且将其拷到SD卡中,再把SD卡插到MiZ702,打开电源,和上次工程出现的现象重现了,这次断电之后,程序也不会消失了~~

这次,我把1、FSBL.elf 2、bit 3、程序的elf,这三个文件,以及BOOT.bin都上传,大家可以试试。最后提醒下放大SD卡的bin文件,一定得叫BOOT.bin,不然不识别,具体为什么可以参考FSBL的源代码。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值