作者: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。
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>,然后在配置界面里需要做下面图片里高亮部分的修改
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