ZYNQ+linux网口调试笔记(1)PS-GEM0

1. 开发环境

  • Windows SDK 2017.4

  • Ubuntu Petalinux 2017.4

  • 硬件平台:米联客ZYNQ开发板MIZ7035

2. 开发目标

在ZYNQ上使用网络接口。调通PS侧网口GEM0(本文阐述)。

3. 预备知识

(1) 熟悉ZYNQ网口硬件资源

阅读《xapp1082 - PS and PL Ethernet Performance and Jumbo Frame Support with PL Ethernet.pdf》,在Introduction一节可知,ZYNQ芯片支持三个网口:

  • PS-GEM0:PS侧内置MAC,通过RGMII接口连接到外部PHY芯片。不支持Jumbo Frame。见下图紫线。
  • PS-GEM1:PS侧内置MAC,通过EMIO接口连接PL侧的PHY(1000BASE-X或SGMII)。不支持Jumbo Frame。见下图蓝线。
  • PL侧软核MAC,连接PL侧的PHY(1000BASE-X或SGMII)。支持Jumbo Frame。见下图红线。
    其中PS-GEM0是独立的,而PS-GEM1与PL侧软MAC共用一个MAC和输出接口,因此二者不能同时使用。


    image.png

(2) 我们所使用的网口硬件资源

我们使用的PS-GEM0网口由如下几部分组成:PS侧MAC + PS侧 GMII to RGMII转换器 + PS侧外接PHY芯片(Micrel KSZ9031RN)。因此我们的Linux驱动也需要从这三方面来着手。

4. Linux设备驱动

(1) MAC驱动

PS侧MAC驱动对应的内核驱动:

名称:CONFIG_MACB

路径:


image.png

驱动源码:

drivers/net/ethernet/cadence/macb.c

相关链接:

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

https://github.com/Xilinx/linux-xlnx/blob/master/Documentation/devicetree/bindings/net/ethernet.txt

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

(2) GMII to RGMII转换器的驱动

PS侧 GMII to RGMII转换器驱动对应的内核驱动:

名称:CONFIG_XILINX_GMII2RGMII

路径:


image.png

驱动源码:

drivers/net/phy/xilinx_gmii2rgmii.c

相关链接:

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

https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18842246/Xilinx+GMII2RGMII+convertor

https://github.com/Xilinx/linux-xlnx/blob/master/Documentation/devicetree/bindings/net/xilinx_gmii2rgmii.txt

https://forums.xilinx.com/t5/Embedded-Linux/Petalinux-2017-2-dts-node-for-GMII-to-RGMII-ip/td-p/807905

image.png

(3) 外部PHY芯片的驱动

PS侧外接PHY芯片(Micrel KSZ9031RN)的内核驱动:

名称:CONFIG_MICREL_PHY

路径:

image.png

驱动源码:

drivers/net/phy/micrel.c

分析此源码,找到关键字PHY_ID_KSZ9031:


image.png

可以看到头文件micre_phy.h里定义了PHY_ID为0x00221620。

相关链接:

https://github.com/Xilinx/linux-xlnx/blob/master/Documentation/devicetree/bindings/net/phy.txt

https://github.com/Xilinx/linux-xlnx/blob/master/Documentation/devicetree/bindings/net/micrel.txt

https://github.com/Xilinx/linux-xlnx/blob/master/Documentation/devicetree/bindings/net/micrel-ksz90x1.txt

https://blog.csdn.net/qq_15270979/article/details/78016173

(4) 驱动适配

我们更改设备树,增加对GMII2RGMII和外部PHY芯片的描述信息:

image.png
image.png

编译BOOT.bin下载到板子上运行,启动过程中报出“macb xxxx: Could not attach to phy”。启动后发现找不到网口eth0。

失败。

与硬件工程师沟通,得知外部PHY的地址为4而不是7。据此更改设备树如下:

image.png

编译烧写后,发现可以找到PHY设备了,网口也eth0出现了。插拔网线能够正常识别,但在网口up的时候会报出“macb e000b000.ethernet eth0: unable to generate target frequency: 125000000 Hz”,不知为何以及影响如何。

另外的一个问题是无法ping通。

上网查阅资料发现如下信息:

(1)《米联《ZYNQ SOC修炼秘籍》网手版20170510(已更1183页未完).pdf》P830:

image.png

(2)https://lore.kernel.org/patchwork/patch/690605/

image.png

以上两点线索都指向同一个问题:我们需要更改Linux网卡驱动源码,根据当前外部PHY协商得到的速率来配置PL GMII2RGMII IP的寄存器0x10,以便GMII2RGMII可以正常工作。

在网上找到了两份补丁,第一份(https://www.xilinx.com/support/answers/67923.html)似乎用于更老的内核版本和petalinux 2016.2,无法对应到我们的内核源码里去,第二份来自上述(2)的网址,似乎是用于较新的内核版本,经小心比对后可以打patch到我们的内核里去。

将第二份补丁打入我们的内核,然后编译烧写,启动发现:无法找到网卡eth0了……shit。

继续排查,追到内核GMII2RGMII驱动(drivers/net/phy/xilinx_gmii2rgmii.c),发现这里其实已经实现了上文提到的补丁,即对GMII2RGMII IP的0x10寄存器进行配置。我们对该寄存器的内容进行打印,发现在插拔网线时该寄存器已经被正确配置了。

【完】

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
禁止转载,如需转载请通过简信或评论联系作者。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,657评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,662评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,143评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,732评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,837评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,036评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,126评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,868评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,315评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,641评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,773评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,470评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,126评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,859评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,095评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,584评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,676评论 2 351

推荐阅读更多精彩内容