第四章 MIZ701 ZYNQ制作UBOOT固化程序
4.0难度系数★☆☆☆☆☆☆
4.1是什么是固化
我们前几章将的程序都是通过JTAG先下载bit流文件,再下载elf文件,之后点击Run As来运行的程序。JTAG的方法是通过TCL脚本来初始化PS,然后用JTAG收发信息,可用于在线调试。但是这样只要一断电,程序就丢失了。还得全部重新来过。
本章介绍通过制作镜像文件,将镜像文件拷贝到SD卡,然后将拨码开关拨到SD启动,那么每次断电之后程序都会自动从SD启动,程序就别固化,而不会掉电丢失了。
4.2固化的流程
4.3固化准备
第三章中的实验其实就是一个最简单的“PS + PL”运用的体现。如果我们想固化这个程序,及为这个程序做一个镜像文件,制作改镜像需要哪些材料呢?
首先,想到的两个文件就是PL部分需要的bit文件,以及PS需要的elf文件。但是仅仅是这两个文件是远远不够的。我们还需要一段代码吧bit文件以及elf文件安置好。那么这段代码就是大名鼎鼎的FSBL.elf。
所以要制作这样一个镜像文件我们需要:FSBL.elf、bit、elf。
最后得到一个等式就是:BOOT.bin = FSBL.elf+该工程.bit+该工程.elf。该工程的bit文件和elf文件在我们的程序编译完之后都有了,关键是这个FSBL.elf这么那里找?不用担心,FSBL.elf文件xilinx找就为我们准备好了,我们可以利用SDK生成它。再次之前,我们先简单了解一下zynq的启动的过程。
4.4 zynq的从SD卡的启动的过程
和大多数arm启动过程一样,这个启动过程也分为3个阶段,这三个阶段分别称之为阶段0、阶段1和阶段2。
阶段 0:即传统的BootROM过程,zynq芯片里有个rom里面固化了一段不可修改的程序,只有zynq一上电,这段程序就会执行,它将对zynq的NAND、NOR、SD等基本外设控制器进行初始化。把SD卡这类易失的存储器件初始化好了之后,就会把其中的程序拷贝到zynq的OCM(On-chip memory),那么这个被拷贝到片上RAM执行的程序就是我们今天要制作的文件——BOOT.bin。
阶段 1:BOOT.bin加载到OCM上就开始执行了,之前说过BOOT.bin其实就是由FSBL.elf+该工程.bit+该工程.elf构成。而阶段1要做的就是:首先配置PS部分,PS完成初始化后,会去配置PL部分,最后还可以去加载阶段 2的代码。
阶段 2:这一阶段是可选的,主要是为了完成Linux系统启动过程。我们这次是还是裸奔,所以暂时不需要。
4.5 zynq启动模式位的选择
这里有个疑问,众所周知zynq具有多种启动方式:NOR, NAND, Quad-SPI, SD Card 以及JTAG 。zynq如何判断到底从哪里启动呢?事实上,当上电后,zynq 会根据模式管脚的设定选用boot的方式。而这个管脚的设定是通过MiZ701按键旁的拨码开。
SD卡启动模式选择拨码开关1-2-5-6 为ON 接到GND 3-4 为OFF 上拉到VCC
QSPI FLASH启动模式选择拨码开关1-2-3-5-6为ON 接到GND 4 为OFF 上拉到VCC
MiZ701模式选择通过拨码开关来实现,当拨码开关ON状态接通到GND 否则接通到3V3.
MiZ701通过拨码开关设置MIO的电平状态
我们的开发板MiZ701默认拨码的顺序,就是默认的SD卡启动,具体参看模式位应该如何选择:
· MIO[2]/Boot_Mode[3]设置JTAG模式
· MIO[5:3]/Boot_Mode[2:0] 选择Boot模式
· MIO[6]/Boot_Mode[4] 使能内部PLL
· MIO[8:7]/Vmode[1:0] 用于配置
4.6 增加QSIP和SD硬件驱动
Step1:本章内容仍然是基于第三章的程序上做一些修改,主要增加QSPI FLASH SD卡接口 I2C接口,具体配置如下图所示。
Step2:右击 system 选择Generate Output Products
Step3:右击 system 选择 Create HDL Wrapper
Step4:产生bit之后导入到SDK,并且启动SDK(如果SDK工程的硬件描述重复了,可以删除,然后重新导入)
4.7 BOOT.bin制作过程详解
Step2:新建一个应用工程
Step3:填写工程名,点击Next
Step4:现在工程类型为Zynq FSBL
Step5:按下快捷键Ctrl + B编译工程就能得到我们梦寐以求的FSBL.elf。这个文件可以到我们刚刚设置的工作空间的Debug目录下找打,我这边具体目录是:D:\MiZ701\FSBL\FBLS\Debug。
Step6:单击SDK的工具栏处的Xilinx Tool->Creat Zynq Boot Image
Step7:依次添加FBLS.elf,design_1_wrapper.bit,以及emio.elf,请务必按顺序添加。
Step9:点击add,添加FSBL.elf
Step10:点击add,添加system_wrapper.bit
Step11:点击add,添加EMIOTest.elf文件
Step12:三个文件添加完毕之后,点击Creat Image生成BOOT.bin
在之前设定的文件夹下找到,BOOT.bin并且将其拷到SD卡中,再把SD卡插到MiZ701,打开电源,和上次工程出现的现象重现了,这次断电之后,程序也不会消失了~~
最后提醒下放大SD卡的bin文件,一定得叫BOOT.bin,不然不识别。
4.8 从Quad-SPI启动
Step1:设置配置模式
正确设置模块开关跳线,也就是把MIO5切换到OFF(上拉为H)其他全部切换到ON(短接到GND)
Step2:给开发板通电,同时连接串口到PC(不是必须的可以不连接)
Step3:选择Xilinx Tools > Program Flash
Step4:下载过程,需要几分钟时间
Step5:下载过程,输出的情况
Step6:下载完成后断电重启,就能看到从QSPI FLASH加载了
4.9 本章小结
本章详细讲解了SD卡下UBOOT的制作过程和如果编程QSPI FLASH。这样固化后程序就不容易丢失了。
第四章 MIZ701 ZYNQ制作UBOOT固化程序的更多相关文章
- 第十章 MIZ702 ZYNQ制作UBOOT固化程序
10.0难度系数★☆☆☆☆☆☆ 10.1是什么是固化 我们前几章将的程序都是通过JTAG先下载bit流文件,再下载elf文件,之后点击Run As来运行的程序.JTAG的方法是通过TCL脚本来初始化P ...
- “全栈2019”Java第四章:创建第一个Java程序
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- 第四章 “我要点爆”微信小程序云开发之疯狂点击与糖果点爆页面制作
疯狂点击点爆方式页面制作 疯狂点击为用户提供一个60秒的按钮点击时间,同时点击过程中有背景音乐,系统根据用户点击按钮的此时来进行热度值的计算. <view class="the_hea ...
- [uboot] (第四章)uboot流程——uboot编译流程
http://blog.csdn.net/ooonebook/article/details/53000893 以下例子都以project X项目tiny210(s5pv210平台,armv7架构)为 ...
- [uboot] (第四章)uboot流程——uboot编译流程 (转)
以下例子都以project X项目tiny210(s5pv210平台,armv7架构)为例 [uboot] uboot流程系列:[project X] tiny210(s5pv210)上电启动流程(B ...
- 精通Web Analytics 2.0 (6) 第四章:点击流分析的奇妙世界:实际的解决方案
精通Web Analytics 2.0 : 用户中心科学与在线统计艺术 第四章:点击流分析的奇妙世界:实际的解决方案 到开始实际工作的时候了.哦耶! 在本章中,您将了解到一些最重要的网络分析报告,我将 ...
- 第四章初始CSS3预习笔记
第四章 初始CSS3预习笔记 一: 1: 什么是CSS? 全称是层叠样式表;/通常又称为风格样式表,.他是用来进行网页风格设计的; 2:CSS的优势: 1>内容以表现分离,即使用u前面学习的HT ...
- 第四章Android移植环境搭建
第四章Android移植环境搭建 这一章主要学习如何搭建 Android 移植的环境.因为 Android 底层是基于 Linux 内核的,所以本章从交叉编译环境等嵌入式开发环境的搭建开始,介绍了 B ...
- CentOS 7.4 初次手记:第四章 CentOS安全了解
第四章 CentOS安全了解... 66 第一节 user.group.chmod. 66 I 10位文件属性... 66 II user/group增删改... 67 III user/group配 ...
随机推荐
- 绕过本机DNS缓存
--转载注明来源 http://www.cnblogs.com/sysnap/ 0x1 背景 往HOST文件添加127.0.0.1 www.baidu.com, 可以劫持百度的域名.病毒经常篡改HO ...
- 拆分项目搞成framework 实例
目前工作中遇到的问题,是讲项目三大模块拆分, 将Discover.Shop和Events的源代码拆分到独立的项目中 拆分是个麻烦事,里面相互依赖很多 ,打包编译也异常复杂,各种报错 编译Event 遇 ...
- 黑马vue---56-58、vue组件创建的三种方式
黑马vue---56-58.vue组件创建的三种方式 一.总结 一句话总结: 不论是哪种方式创建出来的组件,组件的 template 属性指向的模板内容,必须有且只能有唯一的一个根元素 1.使用 Vu ...
- vagrant系列三:vagrant搭建的php7环境
原文:https://blog.csdn.net/hel12he/article/details/51107236 前面已经把vagrant的基础知识已经基本过了一遍 了,相信只要按着教程来,你已经搭 ...
- 五子棋AI教程
https://github.com/Chuck-Ai/gobang 我写了非常详细的中文教程,教你如何一步步编写自己的五子棋AI: 五子棋AI设计教程第二版一:前言 五子棋AI设计教程第二版二:博弈 ...
- Flutter移动电商实战 --(18)首页_火爆专区商品接口制作
1.获取接口的方法 在service/service_method.dart里制作方法.我们先不接收参数,先把接口调通. Future getHomePageBeloConten() async{ t ...
- 一百三十六:CMS系统之发布帖子后台逻辑
模型 class PostModel(db.Model): __tablename__ = 'post' id = db.Column(db.Integer, primary_key=True, au ...
- Swagger下载的zip文件无法打开,而且大小比直接下载的要大
以前写的一个rest提供的是浏览器下载zip包的功能,前端界面调用rest可以正常地下载. 今天使用Swagger来调试下载功能时,发现下载的zip包打不开,而且大小也比直接在浏览器中输入rest地址 ...
- 用于Python文件转换.exe文件的pyinstaller工具安装
安装方法: 注:python环境一定要配置好. 1.第一步:下载 官方网站:http://www.pyinstaller.org/downloads.html 此处下载版本为稳定版. 2.第二步:下载 ...
- Kali中安装 Shodan
工具介绍 Shodan 是一个搜索引擎,但它与 Google 这种搜索网址的搜索引擎不同,Shodan 是用来搜索网络空间中在线设备的,你可以通过 Shodan 搜索指定的设备,或者搜索特定类型的设备 ...