ZYNQ+linux网口调试笔记(3)PL-ETH

作者&投稿:魏婵 (若有异议请与网页底部的电邮联系)
~ 在ZYNQ上使用gigE Vision协议的网络接口相机。

第一步:调通PS侧网口GEM0(Xilinx BSP默认配好)。

第二步:调通PS侧网口GEM1(见前一篇文档:开发笔记(1))。

第三步:调通PL侧网口(本文阐述)。

第四步:在PL侧网口上验证Jumbo Frame特性,并在应用层适配gigE Vision协议。

根据《xapp1082》可知,PL侧的PHY支持1000Base-X和SGMII两种配置,这两种配置对应两种不同的PHY引脚接口(连接到MAC)。而我们的hdf文件使用的是1000Base-X的配置。

关于网口的Linux驱动,我们在官网找到一份资料: Xilinx Wiki - Zynq PL Ethernet 。资料很长,我们只看与我们相关的2.4.1 PL Ethernet BSP installation for 1000Base-X”这一章节就可以了。

首先导入FPGA设计同事提供的hdf文件:

在弹出的图形界面里,进入Subsystem AUTO Hardware Settings——Ethernet Settings——Primary Ethernet,确认可以看到PL侧网络设备axi_ethernet_0,说明hdf文件里已包含了必要的网口硬件信息:

上图中被选中的网口将成为Linux上的设备eth0。这里我们默认选择ps7_ethernet_0,即使用GEM0作为首选网口。

启用Xilinx AXI Ethernet驱动

进入Device Drivers -- Network device support – 选中Xilinx AXI Ethernet(以及Xilinx Ethernet GEM,这是PS侧网口的驱动)

进入Networking support – 选中 Random ethaddr if unset

进入Device Drivers -- Network device support -- PHY Device support and infrastructure – 启用Drivers for xilinx PHYs

进入~~~~Device Drivers -- DMA Engine Support -– 禁用~~~~Xilinx AXI DMAS Engine~~~ (对应的配置项名为 ~~ CONFIG_XILINX_DMA ~~~)

注意: Xilinx Wiki里对设备树节点的引用有误(&axi_ethernet),导致编译报错,应改为&axi_ethernet_0。

注:PL-ETH驱动所在路径:<project>/build/tmp/work-shared/plnx_arm/kernel-source/drivers/net/ethernet/xilinx/xilinx_axienet_main.c和xilinx_axienet_mdio.c。对应的内核配置项为CONFIG_NET_VENDOR_XILINX和CONFIG_XILINX_AXI_EMAC。

启用ethtool和tcpdump(调试用,非必须):

然后将生成的BOOT.BIN和image.ub拷贝到SD卡根目录下,将SD卡插入板子上,上电运行。

上电后,使用ifconfig eth1查看网口信息,观察MAC地址与设置的一致,且ifconfig eth1 192.168.1.11 up没有报错。

测试网络通路:ping PC是通的。说明网口工作正常。

Linux下eth1(即PL-ETH)的MAC地址有误

问题描述:

开机打印:

注意:

MAC地址是错的,驱动里解析出的是GEM0的MAC地址。

试验发现,即使在system-user.dtsi里不写local-mac-address,也照样解析出的是GEM0的MAC。

而将system-user.dtsi里的local-mac-address改名为pl-mac-address,并将驱动里解析的字符串也对应更改为pl-mac-address,则可以正确解析出来:

Passing MAC address to kernel via Device Tree Blob and U-Boot:

http://zedboard.org/content/passing-mac-address-kernel-device-tree-blob

通过更改u-boot环境变量和设备树,为每个板子设置一个独特的MAC地址:

https://www.xilinx.com/support/answers/53476.html

U-Boot里的环境变量ethaddr会覆盖掉设备树里pl-eth的local-mac-addr字段,从而影响Linux启动后的网卡MAC地址;

但U-Boot里的环境变量ipaddr不会对Linux启动后的配置产生任何影响。因为设备树里根本就没有关于IP地址的配置。

phy-mode怎么会是sgmii?查了下官方的提供的BSP里,也是“sgmii”。说明这个没问题。具体原因不清楚。

@TODO: 设备树里的中断号的顺序如何影响功能?

为何读出来的IRQ号不对呢?这是因为这里读到的不是硬件的中断号,而是经过系统映射之后的软件IRQ number。两者不具有线性关系。

关于中断号的疑问:

Linux上的网口eth0、eth1的顺序,似乎是按照phy地址从小到大来排布的。

Xilinx xapp1082-zynq-eth.pdf (v5.0) July 16, 2018

https://www.xilinx.com/support/documentation/application_notes/xapp1082-zynq-eth.pdf

Xilinx Wiki - Zynq PL Ethernet:

https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18841633/Zynq+PL+Ethernet

Xilinx Wiki - Linux Drivers:

https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18841873/Linux+Drivers

Xilinx Wiki - Linux Drivers - Macb Driver:

https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18841740/Macb+Driver

Xilinx Wiki - Zynq Ethernet Performance:

https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18841743/Zynq+Ethernet+Performance

查到关于Jumbo frame MTU的定义,当前值为9000,可否改大一些?

驱动源码里关于jumbo frame的说明:

设置MTU为9000,发现ping包最大长度只能设为ping 192.168.1.10 -s 1472

https://lore.kernel.org/patchwork/patch/939535/

【完】


如何实时查看linux下的日志
1.如下图所示,先cd到我们需要监控的日志目录。2.这里我们先使用cat命令查看下日志信息,方便与动态监控进行对比。3.下面先讲解下tail命令实现查看最后一部分日志的方法。tail 文件名,默认显示最后10行。4.接着我们把10行的默认值改成显示20行。tail -n 20 文件名 5.通过上面的铺垫,我们来看看如何...

Win7VNC客户端连接RedHatLinuxAS5.8的配置
RpdGxlICZxdW90OyRWTkNERVNLVE9QIERlc2t0b3AmcXVvdDsgJmFtcD s8YnIgLyZndDsjdHdtICZhbXA7PGJyIC8mZ3Q7Z25vbWUtc2Vzc2lvbiAmYW 1wOzxiciAvJmd0OzxiciAvJmd0OzxiciAvJmd0OzEwoaLW2Mb0Vk5Dt\/7O8Txi ciAvJmd0O1tyb290QGd1b2RiMiBEaXNrMV0jIHNlcnZpY2Ugdm5jc2VydmVyI HN0b3A8YnIgLyZndDtT...

当我在虚拟机安装linux时,输入序列号后,弹出对话框:你没有输入许可证...
MV4YN-0L38Q-2ZK60-XUA7K-AAZ18 JC6AP-D4H0P-TZ131-4A2QM-8CNP7 0U6UU-6AJDL-RZTK9-230Q0-8ARJQ JG2TD-DJL95-FZZZ8-DU1NH-33GH7

怎么在vmware上安装linux系ǻ
9.输入密钥:【秘钥:MV4YN-0L38Q-2ZK60-XUA7K-AAZ18】 10.安装完成后选择finish。 11.安装完成后,进行汉化,运行“VMware Workstation 8.0.4 汉化包”,选择64位的汉化,安装过程中,会出现一大串的提示,直接忽略掉就好,不影响最后的汉化效果,原因就是在安装虚拟机的过程中,提示的进程已经被启动,所以汉化会有...

linuxat安装
-q,--quietquiet(noprogressreports)-s,--stop-at{HH:MM|+N}stoptransmissionatHH:MMorinNseconds --tcpbuildaTCPconnectiontotransmitfiles --tcp-serveropensocket,waitforconnection -u,--unlinkunlinkfileaftertransmission -U,--unrestrictturnoffrestrictedmode(ifallowedto)-v,--verbosebeverbose,...

Linux 下网关怎么都改不过来呢
Kismet 是一个基于Linux 的无线网络扫描程序,这是一个相当方便的工具,通过测;Qfz!\\ZX 量周围的无线信号来找到目标WLev,\\)s` AN。虽说Kismet 也可以捕获网络上的数据通信,但在还有其他更好的工具 TN"G8ro7\\l*A 使用(如Airodump),在这里我们只使用它来确认无线网卡是否正常工作和用来扫描...

如何将as400主机的表数据导入linux和win下的db2表中
替换为Windows 的路径然后执行db2 -tvf yn.ddl 4.导入数据库 db2move yn load 其中会生成 一个load.out的文件 记录错误信息或者 导入失败的表 ,如加载了多少行,拒绝多少行 等。5.查看load.out 找到那些导入不成功的进行 处理,然后倒入。然后进行完整性约束 这些检查。如有问题 Q 我吧。

铁锋区13751134889: 如何在zynq上挂linux -
琦舍依那: 第一章就直接让你把linux挂起来了 假如你有ZC702或者ZC706的话 如何在zynq上挂linux_第一章.pdf

铁锋区13751134889: 在Linux下怎么确定哪个网卡对应哪个接口 -
琦舍依那: 、大多数linux系统都是按顺序来的 2、比如用ifconfig -a 或ip addr命令看到的eth0/eth1对应就是1网口/2网口 3、部分系统是相反的,比如eth0对应的是最后一个网口 4、不确定就通过mac地址确认一下

铁锋区13751134889: 如何在Zynq 7000平台上使用Linux spidev.c驱动 -
琦舍依那: 一、在前一篇博客中,我们采用xilinx针对Zynq 7000处理器提供的spi-cadence.c驱动实现了芯片上SPI总线驱动的注册,接下来需要修改设备树文件以时我们的外设挂接在SPI总线下.在petalinux工程的../subsystems/linux/configs/device-tree目录下找到zynq相关的设备树文件,目录所包含的文件如下图所示.打开其中的zynq-7000.dtsi文件,找到其中的spi0节点(具体使用spi0还是spi1根据硬件工程的配置情况),并在该节点下添加如下内容:

铁锋区13751134889: linux下怎样开启infiniband网口 -
琦舍依那: 1、ctrl+alt+F1~F6之间使用,这是纯终端使用2、在linux桌面环境下,鼠标点击程序菜单,找到一般为实用程序或者系统工具类的菜单中找到终端程序3、还一种是调试模式的终端模式,在开机时候esc键,根据linux版本不同,进入方式也不同,这一般为系统出现故障才使用的终端模式4、可以使用类似SSH类型的软件,远程登录终端,这属于网络版终端,使用终端服务器软件,远程开启终端,这需要配置终端服务器

铁锋区13751134889: zynq bootargs参数怎么设置 -
琦舍依那: ynq7000的I2C控制器是cadence公司的IP,做一个驱动如果从阅读数据手册开始,效率会很低,因此首先找到了其Linux的I2C驱动文件i2c_cadence.c,话一部分时间阅读两遍后,会了解Zynq7000的I2C控制器工作流程和操作方法.开始是基于...

铁锋区13751134889: zynq怎么用ddr controller
琦舍依那: 你好!操作环境:ubuntu10.04lts X64_64bit,PlanAhead/XPS14.1 Zynq-700 EPP CTT MT41K128M16HA-15E datasheet1、建立完PSbase system后,可以配置了,下面开始DDR3的设置,在XPS下操作.2、在Zynq的tab下点击“...

铁锋区13751134889: linux下如何测试一个IP地址的某个端口通不通 -
琦舍依那: ping只能检查IP,无法检查端口啊 ------解决的方法--------------------------------------------------------如果是TCP的 telnet 102.106.228.173 8601即可 ------解决的方法--------------------------------------------------------探讨引用: 如果是TCP的 telnet 102.106.228.173 ...

铁锋区13751134889: LINUX 如何开放端口和关闭端口 -
琦舍依那: 一、查看哪些端口被打开 netstat -anp二、关闭端口号:iptables -A INPUT -p tcp --drop 端口号-j DROPiptables -A OUTPUT -p tcp --dport 端口号-j DROP三、打开端口号:iptables -A INPUT -ptcp --dport 端口号-j ACCEPT四、以下是linux打开...

铁锋区13751134889: linux如何实现对网口 -
琦舍依那: 网络信息查看 查看网路接口信息 1.了解linux中的网络接口设备 $/sbin/ifconfig 查看所有活动网络接口信息,其中包括一个lo环回端口. 2.查看指定网络接口的信息 $/sbin/ifconfig 查看指定接口信息. 3.查看系统中所有网络接口的信息 $/sbin/i...

铁锋区13751134889: linux 怎么设置固定ip上网 -
琦舍依那: 小编用的是Linux服务器有多个网口,配置在eth2口上,所以我们进入的是以太口2,我们可以看到ip addr和掩码网关的设置点,如果新配置我们可以加上这两条,如果默认已设置我们对其修改即可. 配置IP地址上网一般就三个步骤,那么第二个...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网