文章目录
固化程序介绍
ZYNQ MPSoC的启动步骤
普通的FPGA一般是可以从flash启动,或者被动加载,ZYNQ的启动是由ARM主导的,包括FPGA程序的加载,ZYNQ MPSoC启动一般为三个步骤,在UG1085中也有介绍:
①Pre-configuration stage:预加载阶段由PMU(平台管理单元)控制,执行PMU ROM中的代码设置系统。PMU处理所有的复位和唤醒过程
②Configuration stage:接下来进入最重要的一步,当BootRom(CSU(配置安全单元)ROM代码的一部分)搬运FSBL到OCM后,处理器开始执行FSBL代码,FSBL主要有以下几个作用:
1,初始化PS端配置,MIO,PLL,DDR,QSPI,SD等
2,如果有PL端程序,加载PL端bitstream
3,搬运用户程序到DDR,并跳转执行
③Post-configuration stage:FSBL开始执行后,CSU ROM代码进入post-configuration阶段,负责起系统干预响应,CSU 为验证文件正确性、通过 PCAP 加载 PL、存储管理安全密钥、解密等提供持续的硬件支持
另外需要注意的是,对于ZYNQ而言,是不能够单独固化PL的程序的,这是因为ZYNQ系列中的PL部分通常是通过PS来配置的(可认为PL是作为PS的外设),且许多非易失性存储器(如NorFlash、SD卡等)是连接在PS端的。PL的配置和启动通常依赖于PS端的引导过程,因此ZYNQ不能单独固化PL的程序。PL的程序需要通过PS端的引导过程来加载和配置
那么如果只关注PL部分(相当于“只固化”PL端),该怎么办呢?其实也很简单,只需要利用Vivado导出的xsa文件再创建一个简单的Vitis程序就行了,比如可以直接在创建Vits工程的时候选择Xilinx提供的hello world应用工程,后续操作按照下面介绍的进行即可
Vitis 的FSBL代码所在位置
以我的一个zynqmp的工程为例,如下图所示,zynq-7000系列类似。
让FSBL在启动时打印更多信息
只需在fsbl文件夹中,找到xfsbl_config.h文件,把宏定义中的FSBL_DEBUG_INFO_VAL值改为1,但需要注意的是,这也会导致在启动的时间比较长,因为打印的信息比较多。
如何生成boot.bin
生成步骤
1,选中应用工程
2,右键选择Bulid Project,或者直接点击上方的锤子
3,等待完成生成boot.bin
生成的boot.bin在工程文件夹中的位置
这里注意是带"_system"的文件夹,不是那个不带"system"的文件夹
程序固化方式1 SD卡启动
1,按照如何生成boot.bin中的方法先生成boot.bin
2,将生成的boot.bin放入SD卡中即可。Alinx这里是把生成的boot.bin替换掉了它们出厂的boot.bin,但它们出厂的盘中还有boot.scr与image.ub两个文件,视频中并未介绍这两部分如何生成。用SD卡启动时也需要注意把自己的板子切换到SD卡启动模式!
程序固化方式2 QSPI Flash启动(Vitis下载)
1,按照如何生成boot.bin中的方法先生成boot.bin
2,先把开发板的启动模式改为JTAG模式,否则它下载时可能会出现一些问题,给板子上电
3,在上方导航栏点击Xilinx,后选择"Program Flash"
4,在Image File栏中,点击Browse,找到前面生成的boot.bin,boot.bin所在位置参考boot.bin在工程文件夹中的位置,Flash Type根据自己的板子进行选择,再把"Verify after flash"勾选上,最后点击Program下载即可,下载速度与程序复杂程度相关
5,把开发板切换到QSPI Flash启动模式,启动即可
程序固化方式2 QSPI Flash启动(Vivado下载)
从步骤上来看要比vitis麻烦,而且依赖vitis生成boot.bin,看不出来有什么优势,这里仅作介绍。
1,在Vivado左侧,点击"Open Hardware Manager",打开自动连接"Auto Connect"
2,右键芯片型号,选择"Add Configuration Memory Device"
3,选择板载的flash型号,点击“OK"
4,在接下来的窗口被询问是否立即去下载memory,点击“OK"
5,在Configuration file选择boot.bin,boot.bin所在位置参考boot.bin在工程文件夹中的位置,在Zynq FSBL中选择FSBL文件。
FSBL文件所在位置如下图所示,design_1_wrapper为硬件描述平台的名字,若Vivado导出xsa中没有改名字,默认就是这个
最后点击OK即可下载
程序固化方式2 QSPI Flash启动(批处理文件下载)
该方法本质上与使用Vitis相同
1,创建一个文件夹,在文件夹中放入boot.bin与fsbl.elf,新建一个批处理文件
2,在批处理文件中输入以下内容,只需要把自己的Vitis路径进行替换(定位到bin就行),选择自己的flash类型即可。
call E:\XilinxVitis\Vitis\2020.1\bin\program_flash -f BOOT.bin -offset 0 -flash_type qspi-x4-single -fsbl fsbl.elf -verify
pause
3,直接运行批处理文件即可完成下载
参考资料
主要参考了Alinx的MPSoC开发之固化程序视频,选取了其中的重点部分进行记录。