如何在KR260 starter kit上应用gmii2rgmii IP

作者:Davis Zhang,AMD开发者;来源:AMD开发者社区

目前AMD的SoC器件的PS部分都有GEM(Gigabit Ethernet Controller),它可以配置为使用MIO管脚或者经过EMIO使用PL IO管脚。当配置为使用MIO管脚的时候,接口为RGMII。当配置为使用EMIO的时候,GEM经过EMIO连接到PL的接口为GMII。很多客户希望在PL里把GMII接口转换为RGMII接口,这就会用到gmii2rgmii converter IP。经常看到客户在使用这个IP的过程中遇到一些问题,本文给出了基于KR260 starter kit板卡应用gmii2rgmii的范例。

KR260板卡的J10接插件有四个RJ45接口,每个接口连接到一个以太网PHY芯片。J10A和J10B对应的PHY分别连接到K26 module的PL管脚。J10C对应的PHY连接到K26 module的MIO管脚,而J10D对应的PHY连接到K26 module的GTR管脚。所以我们会使用J10A和J10B对应的PL管脚来连接gmii2rgmii converter IP。

图1.png

KR260板卡上的PHY芯片需要在上电之后进行一次复位,所以我们会在vivado工程里增加gpio core来复位PHY芯片。Vivado工程里使用了两个gmii2rgmii core,它们的时钟级联方式参考了gmii2rgmii IP手册PG160的方法。下面介绍如和使用附件里的文件创建vivado工程和petalinux工程。

创建vivado工程:

1. 设置vivado 2023.2的环境

2. 在vivado console里输入命令“vivado -source kr260_gmii2rgmii_bd.tcl”

3. 添加附件里的“design_1_wrapper.v”到vivado工程

4. 添加附件里的两个xdc文件到vivado工程

5. 编译vivado工程,最后导出xsa

6. 创建petalinux工程:

1. KR260板卡没有直接使用PS SDIO controller来访问micro-SD卡,而是通过USB switch芯片来连接micro-SD卡。KR260 petalinux BSP里有一些设置来实现在u-boot中从micro-SD卡加载linux镜像,所以我们会通过KR260 petalinux BSP的工程来生成qspi flash 启动所需的“BOOT.BIN”。首先使用这个BSP来建立petalinux工程,然后在petalinux工程里导入我们的xsa文件,最后编译petalinux工程并生成“BOOT.BIN”。参考下面这个wiki page里的方法,把“BOOT.BIN”烧写到qspi flash里。https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/3020685316/Kria+SOM+Boot+Firmware+Update#Boot-Image-Recovery-Tool

a. Petalinux-create -t project -s xxxx.bsp

b. 切换到petalinux工程路径

c. Petalinux-config –get-hw-description=<directory-of-xsa-file>

d. Petalinux-build

e. petalinux-package --boot --u-boot

2. 创建一个新的petalinux工程,导入xsa文件,将附件里的“system-user.dtsi”替换到petalinux工程路径下的“project-spec/meta-user/recipes-bsp/device-tree/files/”,然后编译petalinux工程,最后把生产的“boot.scr”和“image.ub”拷贝到micro-SD卡。 

a. Petalinux-create -t project –template zynqMP –name xxx

b. Cd xxx

c. petalinux-config –get-hw-description=<directory-of-xsa-file>,然后在配置界面里需要做下面图片里高亮部分的修改

图2.png

d. 拷贝附件里的 “system-user.dtsi” 到 “project-spec/meta-user/recipes-bsp/device-tree/files/”

e. petalinux-build

上板测试:

准备工作完成后,下一步上板测试。首先将micro-SD卡插入KR260板卡,连接串口显示端口,连接电源,板卡启动到u-boot读秒阶段,按键盘任意键进入u-boot控制台,使用下面命令完成板上PHY芯片复位,加载Linux后就可以用ifconfig命令配置IP地址并做ping测试。

Hit any key to stop autoboot:  0

ZynqMP> md 0xA0000000 1

a0000000: 00000001                             ....

ZynqMP> mw 0xA0000000 0

ZynqMP> md 0xA0000000 1

a0000000: 00000000                             ....

ZynqMP> mw 0xA0000000 1

ZynqMP> md 0xA0000000 1

a0000000: 00000001                             ....

ZynqMP> boot