zoukankan      html  css  js  c++  java
  • S02_CH05_UBOOT实验Enter a post title

    S02_CH05_UBOOT实验

    5.1什么是固化

    我们前几章的程序都是通过JTAG先下载bit流文件,再下载elf文件,之后点击Run As来运行的程序。JTAG的方法是通过TCL脚本来初始化PS,然后用JTAG收发信息,可用于在线调试。但是这样只要一断电,程序就丢失了。还得全部重新来过。

    本章介绍通过制作镜像文件,将镜像文件拷贝到SD卡,然后将拨码开关拨到SD启动,那么每次断电之后程序都会自动从SD启动,程序就别固化,而不会掉电丢失了。

    5.2固化的流程

    5.3固化准备

    第四章 ZYNQ User IP的使用》实验其实就是一个最简单的“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的启动的过程。

    5.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系统启动过程。我们这次是还是裸奔,所以暂时不需要。

    5.5 zynq启动模式位的选择

    这里有个疑问,众所周知zynq具有多种启动方式:NOR, NAND, Quad-SPI, SD Card 以及JTAG 。zynq如何判断到底从哪里启动呢?事实上,当上电后,zynq 会根据模式管脚的设定选用boot的方式。而这个管脚的设定是通过核心板上的拨码开关(Miz702的拨码开关在按键旁)。

    MiZ702模式选择通过拨码开关来实现,当拨码开关ON状态接通到GND 否则接通到3V3.

    MiZ702通过拨码开关设置MIO的电平状态

    Miz701N和Miz702N通过拨码开关设置MIO的电平状态

    我们的开发板默认拨码的顺序,就是默认的SD卡启动,具体模式位应该如何选择如下表所示:

    5.6 BOOT.bin制作过程详解

    Step1:打开上一章的工程,并打开SDK软件。

    Step2:新建一个应用工程

    Step3:填写工程名,点击Next

    Step4:现在工程类型为Zynq FSBL

    Step5:按下快捷键Ctrl + B编译工程就能得到我们梦寐以求的FSBL.elf。这个文件可以到我们刚刚设置的工作空间的Debug目录下找打,我这边具体目录是:D:MiZ702FSBLFBLSDebug。

    Step6:我们将FSBL.elf连同《CH04_User_ IP》工程中的elf和bit文件拷贝到一个文件夹下备用。

    Step7:单击SDK的工具栏处的Xilinx Tool->Creat Zynq Boot Image

    Step8:依次添加FBLS.elf,design_1_wrapper.bit,以及emio.elf,请务必按顺序添加。

    Step9:点击add,添加FSBL.elf

    Step10:点击add,添加system_wrapper.bit

    Step11:点击add,添加Helloworld.elf文件

    Step12:三个文件添加完毕之后,点击Creat Image生成BOOT.bin

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

    最后提醒下放大SD卡的bin文件,一定得叫BOOT.bin,不然不识别。

    5.7 从Quad-SPI启动

    Step1:设置配置模式

    正确设置模块开关跳线,也就是把MIO5切换到OFF(上拉为H)其他全部切换到ON(短接到GND)

    Step2:给开发板通电,同时连接串口到PC(不是必须的可以不连接)

    Step3:选择Xilinx Tools > Program Flash

    Step4:下载过程,需要几分钟时间

    Step5:下载过程,输出的情况

    Step6:下载完成后断电重启,就能看到从QSPI FLASH加载了

    5.8 本章小结

    本章详细讲解了SD卡下UBOOT的制作过程和如何编程QSPI FLASH。这样固化后程序就不容易丢失了。

  • 相关阅读:
    Kail命令
    [UIScreen mainScreen].applicationFrame与[UIScreen mainScreen].bounds区别
    Excel使用技巧
    vs2012配置OpenGL
    IP首部校验和的计算
    链接保存
    Android精讲--界面编程1(界面编程与视图的组件)
    Intent对象详解
    安卓四大组件之--Service
    android的事件处理机制
  • 原文地址:https://www.cnblogs.com/milinker/p/6473707.html
Copyright © 2011-2022 走看看