上次,我们讲到了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的硬件使用手册。

阶段 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的工程:

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

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

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

4、点击add,添加FSBL.elf

5、点击add,添加LED_wrapper.bit

6、点击add,添加led.elf

7、点击Creat Image生成BOOT.bin

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

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

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

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

  1. Zynq linux的I2C驱动学习笔记

    最近在用米尔的Z-TURN BOARD单板做小项目.顺便也加强学习I2C驱动,记一篇做记录.  I2C总线知识非常简单,SDA,SCL,他们的时序规则是:I2C总线是由数据线SDA和时钟SCL构成的串 ...

  2. 微信小程序开发学习笔记001--认识微信小程序,第一个微信小程序

    第一天,认识微信小程序,第一个微信小程序 1.什么是微信小程序? 是h5网页嘛?不是 微信张小龙说: 小程序是一种不需要下载安装即可使用的应用, 它实现了应用"触手可及"的梦想,用 ...

  3. 九十分钟极速入门Linux——Linux Guide for Developments 学习笔记

    转载自: 九十分钟极速入门Linux--Linux Guide for Developments 学习笔记 http://mp.weixin.qq.com/s?__biz=MzAwNTMxMzg1MA ...

  4. GTK+图形化应用程序开发学习笔记(一)—概述

    GTK+图形化应用程序开发学习笔记(一)-概述 一.什么是GNOME. GNOME的意思是"GNU Network Object Model Environment"(GNU网络对 ...

  5. Linux性能优化实战学习笔记:第四十六讲=====实战分析

    Linux性能优化实战学习笔记:第四十六讲 一.上节回顾 不知不觉,我们已经学完了整个专栏的四大基础模块,即 CPU.内存.文件系统和磁盘 I/O.以及网络的性能分析和优化.相信你已经掌握了这些基础模 ...

  6. Linux C编程一站式学习笔记2

    Linux C编程一站式学习笔记 chap2 常量.变量和表达式 本书以C99为标准 一.继续hello world 加入更多注释的hello world 可以用ctrl+(shift)+v复制到vi ...

  7. Spark学习笔记1——第一个Spark程序:单词数统计

    Spark学习笔记1--第一个Spark程序:单词数统计 笔记摘抄自 [美] Holden Karau 等著的<Spark快速大数据分析> 添加依赖 通过 Maven 添加 Spark-c ...

  8. 《鸟哥的Linux私房菜》学习笔记

    <鸟哥的Linux私房菜>学习笔记 这是一份学习<鸟哥的Linux私房菜>的学习笔记,记笔记的原则是,感觉平时可能会用到的 就记录的详细一些,感觉暂时用不上的,只需要知道要解决 ...

  9. Linux性能优化实战学习笔记:第十讲==中断

    Linux性能优化实战学习笔记:第十讲 一.坏境准备 1.拓扑图 2.安装包 在第9节的基础上 在VM2上安装hping3依奈包 ? 1 2 3 4 5 6 7 wget http://www.tcp ...

最新文章

  1. lr如何监控linux,LoadRunner如何监控Linux系统资源
  2. 为什么python对空格,缩进要求这么高?缩进稍微不对就报错!
  3. globalmapper如何选取图像上的点_20. 用于纹理合成和转移的图像缝合
  4. c语言窗口程序 画圆,C语言画圆问题。怎么跳过画图界面直接出来了?
  5. 【详解!思路清晰】1095 解码PAT准考证 (25分)
  6. Entity Framework Core 实现MySQL 的TimeStamp/RowVersion 并发控制
  7. 使用迭代器时如何避免ConcurrentModificationException
  8. uva 10723——Cyborg Genes
  9. 一些JavaScript基本函数
  10. 需求阶段如何书写Use Case
  11. HTML Email 编写指南
  12. 服务器多个网站开启quarz,GitHub - WuLex/QuartzSynchroData: 多个不同站点服务器数据同步到总服务器(数据中心)...
  13. grep搜索字串包含特殊字符怎么办
  14. 计算机等级考试一级宝典,计算机等级考试一级通关宝典
  15. 图表控件MsChart使用demo
  16. 装机电脑用什么软件测试,有什么一键装机的软件比较好用?
  17. 如何清理 C 盘空间
  18. 2018-09-27工作日报
  19. 中国芯片自给率激增,芯片库存高企的美国阻止中国发展先进工艺
  20. 时间是6G研发成功的关键

热门文章

  1. Java编码规范注意
  2. 山东中医院大学计算机科学与技术,2021年山东中医药大学计算机科学与技术专业招生...
  3. 基于JAVA+SpringMVC+Mybatis+MYSQL的大学生综合成绩测评系统
  4. 阶段1 语言基础+高级_1-3-Java语言高级_04-集合_05 List集合_4_Vector集合
  5. centos安装桌面和远程连接
  6. dingding post POST请求
  7. angular $location服务获取url
  8. jquery学习--对象
  9. MSDN电子杂志上有关TFS的文章
  10. java的字符串指针数组,C语言字符串中的指针与数组