写在前面:

本人纯属菜鸟,不敢保证自己的观点正确,各位看官多指教。

本文讨论的主题是zynq启动过程。

阅读本文要对Zyna EPP有那么一点点了解,最好使用过Xilinx的PlanAhead、EDK、XPS、SDK开发工具,我用的版本是14.2。

建议阅读本文前先看一下pkilllo前辈的一篇文章《ZYNQ "HELLO,WORLD!"背后的故事》,链接为:http://bbs.myir-tech.com/thread-7225-1-1.html

文章最后有文中提到的文档的下载链接。

这篇博文没有编辑格式,附件给出word版本下载。

接触zc702和z-turn Board也有一阵子了,最大的感触就是开发工具做的工作实在太多。以前都是用Altera的片子,用Quartus II,从来没有用过Xilinx的东西,是一个不折不扣的新手,刚接触Xilinx就是他们最新产品Zynq,结果可想而知:相当摸不到头脑。

几位前辈做了简单的测试之后,都已经开始做比较大的方案,这对于我这个还没有入门的人跳跃太大,所以在打算将自己规划的学习过程记录下来,希望对和我同样是门外汉的人有所帮助。

跟着官方的教程一直next,超级终端就能打印出“HelloWorld”,测试串口发送的目的是达到了,可是自己除了知道去点哪些菜单之外,对整个平台到底在做什么真的是一无所知!

为了让自己不那么白痴,只能硬着头皮肯官方文档。那时候我还不知道ChinaAET上开展了ZedBoard体验的活动,一直在闭门造车的研究Xilinx和ZedBoard的官方英文文档,直到昨天才在ChinaAET上发现很多有用的资料。其中pkilllo前辈的一篇文章《ZEDBOARD入手体验------ZYNQ "HELLO,WORLD!"背后的故事》跟我正在研究的东西很类似,令我受益匪浅,但是我觉得这篇文章对Zynq的启动过程分析稍微缺了一部分,故将自己的心得写下来。

废话不多说了,直奔主题。

首先提一下Xilinx官方提供的文档《Zynq-7000 Extensible Processing Platform Technical Reference Manual(ug585)》,这篇文档总共有1700左右,可想而知它的信息量有多丰富,可以说是搞Zynq离不开的资料。这篇文档第6章Boot and Configuration对Zynq的启动过程进行了描述。文中指出:------------------------------------------------翻译并引用原文-------------------------------------------------

配置Zynq-7000系列可扩展器件需要多个步骤,最少要2个阶段,通常需要3个阶段,如下:

Stage0:称为BootROM,这一阶段控制最初的器件启动,BootROM是不可改动的可执行代码,处理器在上电复位和热重启之后执行。

Stage1:通常称为第一阶段引导程序(First Stage Boot Loader,FSBL),它可以是任何用户可控的代码。关于FSBL的细节请参考UG821:《Zynq-7000 EPP Software Developers Guide》。

Stage2:该阶段通常开始执行用户所设计的处理系统,但是它也可以是第二阶段引导程序(Second Stage Boot Loader,SSBL)。这一阶段完全在用户的控制之下,本章并不予以详述。请参考UG821:《Zynq-7000 EPP Software Developers Guide》了解FSBL和Stage 2 images。-----------------------------------------------------引用结束-----------------------------------------------------

由上述描述可以看出,Zynq上电后最先执行的是BootROM启动,由于它不可更改,所以我们可以跳到Stage1,FSBL。查阅ug821相关章节:

------------------------------------------------翻译并引用原文-------------------------------------------------

第一阶段引导程序(FSBL)在启动后开始。它由BootROM加载到OCM(On Chip Memory)或者在BootROM header所指明的加密位置执行。

FSBL负责:利用XPS提供的PS配置数据进行初始化。(见Zynq PS 配置)

将比特流(bitstream)下载到PL。将第二阶段引导程序(SSBL)或者是“裸奔”应用代码加载到内存。

开始执行SSBL或是“裸奔”应用程序。……

查看SDK提供的FSBL代码可以了解FSBL如何初始化CPU和FSBL所用到的外设,以及它如何使用一个简单的C run-time library。

……

Zynq PS 配置

利用Zynq配置UI,XPS生成MIO和SLCR寄存器的初始化代码。这些文件在XPS工程文件夹下:Ps7_init.c和ps7_init.h,用于初始化CLK,DDR和MIO。Ps7_init.tcl完成的初始化和ps7_init.c代码完成的初始化是相同的。

Ps7_init.tcl文件,可以用来初始化CLK,DDR和MIO。它所完成的初始化和ps7_init.c代码完成的初始化是相同的。注意:当使用XMD调试应用程序的时候tcl文件是很有用的。例如,你可以执行Ps7_init.tcl文件然后将应用程序加载到DDR中并调试。在这种情况下,就不需要进行FSBL的全过程。Ps7_init.html,描述了初始化数据。重要:在将来的版本中,可以改变PS初始化数据的位置和形式。

注意:XPS保持PL比特流和这些初始化数据的同步。不建议手动更改这些设置。

-----------------------------------------------------引用结束-----------------------------------------------------

相信大家看了上面两段引文,对Zynq的启动过程已经有了大致的了解。另外,还可以看出,FSBL阶段不仅调用了pkilllo前辈提到的BSP提供的ARM启动代码,而且使用ps7_init.c中的代码对设备进行了初始化工作。这两部分的初始化又是哪个在前,哪个在后呢?

从理论上来讲,假设先后改动这两部分对串口波特率的初始化数据,如果改动之后波特率发生变化,那么就可以知道被改动的部分是后执行的。但是正如pkilllo前辈所说的,这只是理论上的想法,在改动BSP提供的源文件时发现一旦重新build,SDK又会重新生成源码,而不会编译改动后的文件;另外,在改动ps7_init.c和ps7_init.tcl后,波特率也没有发生变化,我想这是由于这些初始化数据是由XPS生成,并且和bitstream同步,应该是PFGA内部硬件连线实现的初始化,所以我手动更改也是无效的。不过,按照ug821的说法,在以后的版本中或许可以在XPS中对初始化数据进行设置。闹了这半天,到头来发现你考虑的这些玩意目前只能由开发工具完成,想随心所欲八成是没戏的,但如果能够自己开发BSP的话,应该可以按照自己的想法做一些事情。对于我这个菜鸟来说,BSP还太遥远,目前只能利用SDK提供的源码学习如果操作各种外设。

经过一番周折,虽然没有能够改变串口通信的波特率,但回过头来再看,我对开发工具到底做了哪些工作已经有所了解,这让我的思路清晰了不少。我打算在下一篇文章结合利用PS在串口打印“Hello ZedBoard!”的工程,讲一下自己对Xilinx一些列开发工具所做工作的理解。

UG585 Zynq-7000 Extensible Processing Platform Technical Reference Manual 下载链接:

http://china.xilinx.com/support/documentation/user_guides/ug585-Zynq-7000-TRM.pdf

UG821 Zynq-7000 EPP Software Developers Guide 下载链接:

http://china.xilinx.com/support/documentation/user_guides/ug821-zynq-7000-swdg.pdf

zynq7000创建fsbl启动_【转】Zynq启动过程探讨-进入main函数前不了解的事-Zynq-7000系列-米尔科技论坛...相关推荐

  1. 普中科技开发板使用说明书_百度大脑加持,米尔科技FZ3深度学习计算卡评测

    如果你要问我现在电子产业什么最热,那无疑是AI,而基于大数据训练的深度学习技术可以说是目前AI应用的最广,最成功的产品形态了,覆盖我们生活的方方面面,诸如购物.看病.新闻编辑等,在这高深技术的背后少不 ...

  2. 米尔科技zynq三色灯 linux 驱动

    一.目标 在zynq的randisk操作系统上,通过编写驱动,实现对三色灯的控制.采用的是米尔科技 7z020开发板. 二.分析 1)逻辑分析 三色灯是挂载在PL上,可以通过AXI-GPIO实现ps控 ...

  3. 米尔科技ZYNQ -Linux下的DMA驱动

    一.目标 在米尔科技的z-turn板上实现linux下的DMA驱动,同时对DMA中断进行测试. 二.分析 ZYNQ的AXIDMA有Direct Register Mode和Scatter/Gather ...

  4. 米尔科技Zynq pl中断的linux驱动

    一.目标 在米尔科技zynq的开发平台上,通过zynq的按键开关,实现pl中断. 二.分析 原理图 挂在pl端,需要在vivado上进行引脚锁定.配置如下 当然可以通过中断函数操作三色灯,也可以不用管 ...

  5. 米尔科技Zynq利用EMIO操作三色灯的linux驱动

    一.目标 在米尔科技的zynq的z-turn开发板上利用EMIO操作三色灯亮灭. 二.分析 三色灯是挂载在PL部分的,PS想要操作它可以通过EMIO接口实现. IP配置关键如下 产生顶层文件中有gpi ...

  6. 米尔科技zynq利用MIO操作LED灯的linux驱动

    一.目标 在米尔科技zynq的z-turn开发板上,通过编写驱动,实现对两盏灯的控制. 二.分析 ①硬件部分 这两盏绿灯位于zynq的MIO0和MIO9上. 有关操作IO口的地址,查找ug585-zy ...

  7. 基于xilinx Zynq UltraScale MPSoC平台的核心板及开发板介绍-米尔科技

    近日,米尔科技推出国内首款基于xilinx Zynq UltraScale+MPSoC 平台的核心板及开发板.其优势主要有:采用16纳米制程,相比Znyq7000系列每瓦性能提升5倍,且单芯片融合4核 ...

  8. zynq7000创建fsbl启动_Xilinx Zynq 7000 FSBL启动分析(一)

    花了几天看完了FSBL的代码,在这里做个总结,分析一下zynq的启动过程. 众所周知,xilinx zynq 7000系列的芯片中包括两个部分,PS和PL,也就是FPGA的逻辑编程的部分跟嵌入式ARM ...

  9. 大数据之-Hadoop完全分布式_集群下_单个节点启动_一个一个启动集群节点---大数据之hadoop工作笔记0035

    前面我们已经配置好了,完全分布式下的,hadoop102,hadoop103,hadoop104,这3台机器. 然后我们去启动节点去, 首先启动之前,我们说一定要先去格式化namenode,但是格式化 ...

最新文章

  1. AI = “Automated Inspiration(灵感自动化)”
  2. 系统测试方案如何写?
  3. NUC_HomeWork1 -- POJ1088(DP)
  4. MyBatis使用ResultMap处理一对多多对一
  5. sed、awk、xargs正则表达式
  6. Js~对数组进行分组户数
  7. ffmpeg 硬件解码rtsp流_树莓派使用硬件加速视频转码
  8. 线段树POJ3468(成段更新,区间求和)
  9. Windows Excel 中的符号字体 webdings (C:\Windows\Fonts\webdings.ttf)
  10. oracle使用cgi吗_php架构之CGI、FastCGI、php-fpm有什么关系?原来这么简单
  11. HDU1757:A Simple Math Problem(矩阵快速幂)
  12. 读python源码--对象模型
  13. PHP 日期时间类 Carbon 的常见用法
  14. android10禁用华为桌面,华为禁用第三方桌面 简介办法
  15. Windows NT引导过程源代码分析(一)
  16. dmrman恢复数据报错Segmentation fault (core dumped)
  17. Zotero-word中引用跳转到参考文献/建立超链接-引用格式(Xie et al 2021, Achanta et al 2012)
  18. IOS开发之——第一个IOS应用
  19. 哪些 iOS 应用让你用了很满意并能提高生活质量?
  20. 【物联网03】 CentOS7编译EMQ源码

热门文章

  1. k8s pod has unbound immediate PersistentVolumeClaims
  2. java毕业生设计信息学院网站分析计算机源码+系统+mysql+调试部署+lw
  3. vuepress 热更新失效研究
  4. linux gcc、gcc-c++离线(内网)环境安装 附rpm包~
  5. oracle去重复合计,如何在excel合并同类项数据并求和(去除重复项)
  6. 电路设计漫谈之:高频喜欢低感抗,低频喜欢低(电)阻抗 - 再谈接地
  7. IDEA 项目结构旁边出现 0%classes,0% lines covered 干嘛用的,怎么去掉
  8. 使用野狗(Wilddog)云setValue写入数据
  9. 使用 Helm Cli 将 chart 推送到 Harbor
  10. 河北海格里斯HEGERLS箱式四向穿梭车物流解决方案|5G人工智能机器人自动化立体库