如何学习zynq以太网控制器及协议栈

如何学习zynq以太网控制器及协议栈,第1张

说到学习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

四,以上介绍大部分均为本人在学习,做项目时的总结,在此分享给大家,希望对广大的学习群体有所帮助,本人水平有限,在此希望各路大神们勿喷。接下来就靠大家自己努力加油了!

存放锋敏派在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_flash.exe已停止工作是说明在 *** 作时有不违规的 *** 作,导致flash程皮空巧序错误。

1、首先,将zynq_flash.exe软件程序关闭。

2、然燃键后,再亏宴重新打开即可重新继续工作。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12416567.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存