前言:
前面我们都是使用jtag方式下载比特流文件,然后下载elf文件,最后点击run as或者debug as来运行程序。jtag方式是通过tcl脚本来初始化ps,然后用jtag收发信息,优点是可以在线调试,缺点是断电后程序就丢失了。为了解决程序丢失的问题,可以制作镜像文件烧写到sd卡或者flash中,上电即可加载程序。
zynq有两大类启动模式:从bootrom主动启动,从jtag被动启动。
在没有外部jtag的情况下,处理系统(ps)与可编程逻辑(pl)都必须依靠ps来完成芯片的初始化配置。即借助cpu来完成配置,这也是zynq系列的不同之处。
板子依然使用的是zc702.
启动模式设置:
zynq 具有多种启动方式: nor, nand, quad-spi, sd card以及 jtag 。 zynq 如何判断从哪里启动呢? 上电后, zynq 会根据模式管脚的设定选用 boot 的方式。 而这个管脚的设定是通过核心板上的拨码开关实现的。zc702的拨码开关是sw16。
the zc702 board supports these configurationoptions:
• ps configuration: quad spi flash memory
• ps configuration: processor system boot from sd card (j64)
• pl configuration: usb jtag configuration port (digilent module)
• pl configuration: platform cable header j2 and flying lead header j58 jtag configurationports
jtag启动:
配置界面如下:
设置完之后点击apply-->debug即可开始调试,run as类似。
通过制作镜像文件在外设控制器中启动,也称之为固化。固化需要三个文件:fsbl.elf、该工程的bit文件、该工程的elf文件,由此三个文件制作一个boot.bin文件。
那么通过外设启动的过程是怎样的呢?
分为三个阶段,大多数的arm都是这个启动过程。
阶段0:即传统的 bootrom 过程, zynq 芯片里有个 rom 里面固化了一段不可修改的程序, 只有 zynq 一上电, 这段程序就会执行, 它将初始化cpu和 nand、 nor、 sd卡等基本外设。初始化好,bootrom读取存储器中的程序代码,并将fsbl拷贝到ocm(on-chip memory)里 , 这个被拷贝到片上 ram 执行的程序就来自于我们要制作的文件——boot.bin。
阶段1:第一阶段引导程序(first stage boot loader,fsbl)启动,boot.bin开始执行:首先继续配置ps,ps初始化好后,再配置pl,最后还可以加载阶段2的代码。
阶段2:开始执行ps端代码,也可以是第二阶段引导程序(second stage boot loader,ssbl)。完全在用户的控制之下,是可选的。
啰嗦第二遍:
bootrom负责:
1.上电复位以后,ps端即开始进行配置。在不使用jtag的情况下,arm将在片上的bootrom中开始执行代码。bootrom中的代码对nand、nor、quad-spi、sd与pcap的基本外设控制器进行初始化,使得arm核可以访问、使用这些外设。(而ddr等其他外设将在阶段1或者之后进行初始化。)
2.bootrom读取mio[2..8]的引脚设置来确定启动设备,将选定设备的头192kbyte内容,也就是fsbl,复制到ocm中,并将控制权交给fsbl。
fsbl启动时可以使用整块256kb的ocm,当fsbl开始运行后,器件就正式由由用户控制了。
fsbl负责:
1. 根据vivado中的配置,完成ps端的初始化。
2. 使用比特流文件对pl进行配置
3. 加载第二阶段引导程序(ssbl)或者裸跑程序(直接在arm上运行无操作系统程序)到内存空间。
4. 跳转执行ssbl或者裸跑程序。
关于ps配置:
ps7_init.c和ps7_init.h,用于初始化clk,ddr和mio。ps7_init.tcl完成的初始化和ps7_init.c代码完成的初始化是相同的。
由于不是通过jtag运行,所以没有运行p7_init.tcl,直接在裸机程序开始处调用ps7_init()。
xilinx为我们写好了一个fsbl程序,没有特殊要求可以直接使用。
制作boot.bin文件:
1.vivado那边完成之后,打开sdk,新建应用工程
工程名设为fsbl
点击next选择自带的fsbl程序,右边是fsbl功能介绍
点击finish会自动编译,在debug目录下可以找到fsbl.elf文件
2.点击xilinx tools ->create zynq boot image
一般 该添加的文件它都会帮你添加好。
需要添加的文件如下:
在fsbl文件夹下新建一个bootimage文件,点击browse,将输出指向这里
点击add,先添加fsbl.elf文件,作为bootloader
再添加hw_platform下的.bit文件,这是pl部分的
最后添加裸机程序.elf文件
都添加完如下图:
以上三个文件的添加顺序不可变,点击create image,就可以生成boot.bin文件了,默认的输出路径在bootimage下。
sd卡启动
1.将生成的boot.bin文件拷贝到sd卡中,2.启动模式设置为sd卡启动,上电,程序就可以运行了。
我这里的现象led闪烁,断电再上电,程序依然在,从sd卡加载的。
flash启动
1.启动模式设置为qspi启动,
2.开发板上电,
3.点击xilinx tool-->program flash
4.点击program
下载好后程序就固化了,断电后重启,程序从qspi flash加载。
如果你使用已经存在的bsp文件时出现这种情况:
右键那个bsp工程,点击board support pacage setting,勾选这两个库
总结:
主流的下载方式就这三种,基本可以满足你的一切需要了。
继比特大陆之后科技圈的第二场年度宫斗大戏
激光光斑测量系统的电路设计与实现[图]
网友反馈魅族X8通话有问题,魅族科技创始人表达歉意
华为618欢乐购再升级 P20送你去俄罗斯看梅西!
无人驾驶汽车最新消息_无人驾驶的现状及发展
浅谈ZYNQ的三种启动方式-JTAG、SD card、Flash
活塞式压缩机的基本构造_活塞式压缩机的组成系统
电阻抗断层成像技术监测水泥基材料中的非饱和水分流动
无线运动蓝牙耳机什么牌子的好、好的蓝牙运动耳机推荐
五方光电预先披露招股书 保荐机构为民生证券
“5G+无人机”为和平饭店“体检”
三星宣战台积电 7nmEUV工艺即将量产
直线传感器正确的接线方式,基本的电路连接图解
ssd固态硬盘和机械硬盘存在什么区别
判断防水连接器质量好坏的方法
台积电3nm工艺细节分享
不负众望的“机皇” 华为Mate9性能和颜值都是旗舰
苏宁小Biu空调即将上市 售后服务政策曝光
OPS电脑——引领智慧教学新潮流
调速电机简介