1、首先,将zynq_flash.exe软件程序关闭。
2、然后,再重新打开即可重新继续工作。
存放在ZYNQ芯片内部ROM不可更改,用于找到FSBL并启动它(从SD或者QSPI或者NAND),ug585第六章
用于引导U-Boot
用于引导Linux Kernel
petalinux工具可以构建2和3还有内核
BOOT.BIN包括fsbl,bitstream,用户程序(uboot)
image.ub包括了kernel(devicetree DTB和rootfs通过设置可选包不包含在ub内)
主要是分析下FSBL工程的main函数
调用ps7_init函数
主要是对PS端配置信息进行初始化 *** 作,包括MIO,PLL,CLK and DDR
我们在vivado软件中可以通过图形化的方式对ZYNQ PS端外设进行相关配置,那么这些配置信息会写入到hdf文件,SDK(或petalinux)会对hdf文件进行解析并生成对应的寄存器配置表,然后FSBL工程中会通过ps7_init函数将寄存器配置表写入到对应的寄存器中,完成对MIO/PLL/CLK/DDR等外设的硬件配置。
先调用Xil_DCacheFlush函数完成刷DCache缓存的 *** 作,然后再调用Xil_DCacheDisable禁用DCache缓存。
调用RegisterHandlers函数
调用DDRInitCheck函数
调用InitPcap函数
处理器配置访问端口
这个寄存器记录ZYNQ的启动方式(QSPI、SD、NAND、Nor、JTAG)
可以通过MIO3 MIO4 MIO5这三个引脚去配置ZYNQ的启动方式
ZYNQ上电复位的时候,会将这三个引脚的电平状态保存在BOOT_MODE寄存器当中。
每一种启动方式会有不同的处理方式。
第一、先初始化对应的flash设备
第二、再将MoveImage函数指针指向Flash设备的读写函数实体
调用LoadBootImage函数
FSBL的主要工作是启动U-Boot(终极目标),也要将bitstream文件加载到PL端。
找到U-Boot、bitstream
在读取U-Boot拷贝DDR中对应的加载地址,读取bitstream加载到PL端
调用FsblHandoff(HandoffAddress)
启动完U-Boot之后,FSBL的使命的就完成了。
说到学习ZYNQ+SOC+Linux开发,我认为主要应该细分为lian两大点:zynq,soc合为一个点,linux为一个点。下面我就给大家介绍学习的流程和路线。
一,学习zynq+soc的FPGA开发部分和片上ARM核的寄存器,裸奔应用开发,我推荐大家收阅读文档《ZYNQ+SOC修炼秘籍-最全面的pdf》,下面我给大家贴上下载地址。
CSDN下载链接:https://pan.baidu.com/s/1wjUXx5_l6EPE58UZwcnRZw
二,如果各位能按部就班的阅读并自己动手编写测试《ZYNQ+SOC修炼秘籍-最全面的pdf》里面的内容,我相信大家对于zynq的硬件部分已经足够了解,并且能够写出基于FPGA+ARM构架的裸奔程序应用了。
那么接下来,我们就应该学习管如何在zynq平台上搭建Linux *** 作系统了。
(1)u-boot的编译
我相信大家已经肯定在网上搜索理解了很多关于u-boot编译的资料,所以在此我给大家提供的shi是如何解决编译过程中遇到的一些问题,将自己在项目实践中的记录分享给大家,具体请参考《zynq-u-boot编译说明书》这个资料,下面为下载链接地址。
CSDN下载链接:https://pan.baidu.com/s/1Gqs3V3U6N6kW2AeJkMn-dA
(2)kernel的编译
众所周知,kernel为Linux的内核,这个是最最核心的部分,在此不做过多的赘述,给大家分享项目中的记录吧。具体参考《zynq-kernel编译说明书》这个资料。
CSDN下载链接:https://pan.baidu.com/s/1p1o_3dLZMxWubc-rXGLelw
(3)设备树的编译
不知道大家是否知道,Linux上的驱动是怎么和硬件挂钩的吗?没错,就是使用的设备树,话不多说,请参照《zynq设备树配置说明》这个资料,下面为下载链接地址。
CSDN下载链接:https://pan.baidu.com/s/102qqfR0OAhJvGW8h2PO1eg
(4)文件系统的搭载
在完成上述三步的 *** 作之后,需要一个完整的Linux系统我们就还需要搭载上文件系统,国外很多人喜欢利用buildroot自己及定制文件系统,但是对于初学者我的建议是先使用已经完善的文件系统,具体的做法请参照《zynq文件系统挂载》这个资料,下面为下载链接地址。
CSDN下载链接:https://pan.baidu.com/s/1O10BNKid73fguDs4ZZDrXg
三,在完成了u-boot的编译,kernel的编译,设备树的编译,文件系统的编译挂载后,一个完整的Linux系统就搭建成功了。不过我相信在过程中肯定会遇到或多或少的各种各样的问题,在此本人为大家分享一些在过程中遇到的问题以及解决方法,水平有限望大神勿喷。
(1)在运行挂载文件系统的时候本人就曾经遇到,系统默认挂载的是ramdisk,所以无法挂载我搭建在SD卡上的ext4的文件系统,请参考《zynq不加载ramdisk的方法》资料里的解决方法,下面为资料xixi下载链接。
CSDN下载链接:https://pan.baidu.com/s/1ESMO4FtbykTzN-7nqZqvTg
(2)如何解决板子每次上电都动态分配ip,导致用户无法准确知道板子的ip呢?那就请参考《zynq_linux配置静态和动态ip的方法》这个资料里的内容,下面为下载链接。
CSDN下载链接:https://pan.baidu.com/s/1s4RduCWI2cVCrZqfxvJ9oA
(3)配置好静态ip后,那么肯定是kai'开始用用SSH连接板子,现在就让我们来解决SSH连接的问题,请参考《zynq上的SSH无法链接问题》这个资料里的内容,下面为下载链接。
CSDN下载链接:https://pan.baidu.com/s/1bzMbyBzbIG74ot9EymaAHw
(4)以上问题都解决了后,自然是想自己动手编写Linux下的驱动咯。只有有了驱动才能使得FPGA为Linux所用,那么接下来给大家分享几个编写Linux下的axi dma驱动的资料供大家参考。
《zynq字符设备驱动代码》
CSDN下载链接:https://pan.baidu.com/s/11kTG3LMHKdVyAOY_WzRBhA
《zynq_linux字符驱动之自动创建设备节点》
CSDN下载链接:https://pan.baidu.com/s/1TVDDxkk1KdDxcunXbfTdmg
《zynq上axi-dma作为字符设备的驱动代码》
CSDN下载链接:https://pan.baidu.com/s/1ZViLZ1EHWGcshYiaIcHTgw
《zynq_dma_device_tree说明文件》
CSDN下载链接:https://pan.baidu.com/s/14ulkwrGJjqk6IrU010qEsw
四,以上介绍大部分均为本人在学习,做项目时的总结,在此分享给大家,希望对广大的学习群体有所帮助,本人水平有限,在此希望各路大神们勿喷。接下来就靠大家自己努力加油了!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)