99久久全国免费观看_国产一区二区三区四区五区VM_久久www人成免费看片中文_国产高清在线a视频大全_深夜福利www_日韩一级成人av

如何使用gpio模擬mdio通信?

一、前言

實際項目開發(fā)中,由于設計原因,會將phy的mdio引腳連接到SoC的2個空閑gpio上,

這樣就無法通過Gmac自有的架構(gòu)實現(xiàn)修改phy,

因此只能通過GPIO模擬的方式實現(xiàn)MDIO,

好在Linux支持MDIO via GPIO功能。

該功能需要用到內(nèi)核驅(qū)動mdio-bitbang.c和mdio-gpio.c。

本例 :

  • 平臺:復旦微
  • kernel 版本:linux 4.14.55-xxxxx
  • phy芯片:yt8521
  • phy連接到:gmac0
  • mdio總線連接到:gpioc 2portc 3

二、mdio基礎概念

1、SMI接口

SMI是MAC內(nèi)核訪問PHY寄存器接口,它由兩根線組成,雙工:

  • MDC(Management Data Clock)為時鐘,
  • MDIO(Management Data Input/Output)為雙向數(shù)據(jù)通信,

原理上跟I2C總線很類似,也可以通過總線訪問多個不同的phy。

MDIO協(xié)議是以太網(wǎng)標準IEEE802.3中專門用于MAC和PYH之間管理的串行接口總線,該接口主要用于MAC控制器對PYH層的狀態(tài)讀取和設置(寄存器操作)、獲取鏈路狀態(tài),控制物理層協(xié)商等操作。

MDC/MDIO基本特性:

  • 兩線制 :MDC(時鐘線)和MDIO(數(shù)據(jù)線)。分主從設備。
  • 時鐘頻率:2.5MHz
  • 通信方式:總線制,可同時接入的PHY數(shù)量為32個
  • 通過SMI接口,MAC芯片主動的輪詢PHY層芯片,獲得狀態(tài)信息,并發(fā)出命令信息。

其中主設備稱作STA,從設備稱作MDI,一個主設備可以對多個從設備進行命令讀寫操作。

?三、mdio協(xié)議波形

1、MDIO接口數(shù)據(jù)幀

在IEEE802.3協(xié)議中,把MDIO接口數(shù)據(jù)幀分為兩種,一種是Clause22,另一種是Clause45

前者主要用于百兆千兆以太網(wǎng),后者用于千兆以上的以太網(wǎng)。

2、Clause22

MDIO 接口的讀寫通信協(xié)議如下圖所示:

CLAUSE22 數(shù)據(jù)幀協(xié)議

  • Preamble:

32 位前導碼,由 MAC 端發(fā)送 32 位邏輯“1”,用于同步 PHY 芯片。

  • ST(Start of Frame):

2 位幀開始信號,用 01 表示。

  • OP(Operation Code):

2 位操作碼,讀:10 寫:01。

  • PHYAD(PHY Address):

5 位 PHY 地址,用于表示與哪個 PHY 芯片通信,因此一個 MAC 上可以連 接多個 PHY 芯片。

  • REGAD(Register Address):

5 位寄存器地址,可以表示共 32 位寄存器。

  • TA(Turnaround):

2 位轉(zhuǎn)向,

在讀命令中,MDIO 在此時由 MAC 驅(qū)動改為 PHY 驅(qū)動,在第一個 TA 位,MDIO 引腳為高阻狀態(tài),第二個 TA 位,PHY 將 MDIO 引腳拉低,準備發(fā)送數(shù)據(jù);

在寫命令中,不需 要 MDIO 方向發(fā)生變化,MAC 固定輸出 2’b10,隨后開始寫入數(shù)據(jù)。

  • DATA:

16 位數(shù)據(jù),在讀命令中,PHY 芯片將讀到的對應 PHYAD 的 REGAD 寄存器的數(shù)據(jù)寫到 DATA 中;在寫命令中,PHY 芯片將接收到的 DATA 寫入 REGAD 寄存器中。需要注意的是,在 DATA 傳 輸?shù)倪^程中,高位在前,低位在后。

  • IDLE:

空閑狀態(tài),此時 MDIO 為無源驅(qū)動,處于高阻狀態(tài),但一般用上拉電阻使其上拉至高電平。

波形舉例

向phy:3 寄存器0x00 寫入 數(shù)據(jù)0x4140

3、Clause45

四、YT8521

YT8521S是一款高度集成的以太網(wǎng)收發(fā)器,符合10BASE-Te、100BASE-TX和1000BASE-T IEEE 802.3標準。

1、引腳

其中與mdio相關引腳:

14  MDC         Management Data Clock15  MDIO        Input/Output of Management Data.      Pull up 3.3V/2.5V/1.8V for 3.3V/2.5V/1.8V I/O respectively

2、模塊圖

3、MDIO協(xié)議時序-[重要]

下面YT8521的SMI時序圖:

上升沿讀數(shù)據(jù),下降沿寫數(shù)據(jù)。

五、驅(qū)動移植

1、驅(qū)動文件及移植

mdio-gpio.cmdio-bitbang.c

在這里插入圖片描述

勾選 下面幾項:

  │ │                   <*>   Bitbanged MDIO buses                                            │ │    │ │                   <*>   GPIO controlled MDIO bus multiplexers                           │ │    │ │                   <*>   MMIO device-controlled MDIO bus multiplexers                    │ │  

2、移植設備樹

 aliases {    …………     mdio-gpio0 = &mdio0; };  mdio0: mdio {     compatible = "virtual,mdio-gpio";     gpios = <&portc 2 0 >,<&portc 3 0>;                                                    #address-cells = <1>;     #size-cells = <0>;        phy0: ethernet-phy@7 {         reg = <0x7>;         yt,phy-delay = <0xfc>;         phy-connection-type = "rgmii-id";     }; }; &gmac0 {  status = "okay";  phy-handle = <&phy0>; };

由設備樹可知,

  1. 我們創(chuàng)建了1個獨立的mdio設備節(jié)點
  2. 當用命令mdio修改phy時,就會根據(jù)gmac0的phy-handle
  3. 找到mdio0節(jié)點從而調(diào)用mdio-gpio驅(qū)動模塊來配置phy:8521

下圖,是phy直接連接到gmac0的mdio接口,mdio命令執(zhí)行的通路:

下圖是phy連接到gpio口,mdio命令執(zhí)行的通路:

3、查看log

開機有以下log,說明驅(qū)動 移植成功:

# dmesg | grep MDIO[    3.257270] libphy: GPIO Bitbanged MDIO: probed[    3.274202] libphy: Fixed MDIO Bus: probed
# cd /sys/class/mdio_bus/# lsfixed-0   gpio-0    stmmac-0  stmmac-1# cd gpio-0/# lsdevice     gpio-0:03  of_node    power      subsystem  uevent# cd gpio-0\:03/# lsattached_dev    phy_has_fixups  powerdriver          phy_id          subsystemof_node         phy_interface   uevent

4、操作

修改eth0為百兆速率,則設置Speed_Selection位為01,同時自動協(xié)商為Autoneg_En要禁用,即設置該寄存器值為0x2140:

# mdio eth0 0x00 0x2140 write phy addr: 0x3  reg: 0x0  value : 0x2140

抓取波形如下:

聲明:本內(nèi)容為作者獨立觀點,不代表電子星球立場。未經(jīng)允許不得轉(zhuǎn)載。授權(quán)事宜與稿件投訴,請聯(lián)系:editor@netbroad.com
覺得內(nèi)容不錯的朋友,別忘了一鍵三連哦!
贊 3
收藏 5
關注 181
成為作者 賺取收益
全部留言
0/200
成為第一個和作者交流的人吧
主站蜘蛛池模板: 热久久久久久久久 | 91亚洲影院| 麻豆疯狂做受xxxx高潮视频 | 亚洲毛片AV日韩AV无码 | 中文字幕日韩高清 | 四虎娱乐| 女人本色免费观看 | 久久99久久久 | 亚洲美女久久久 | 无码AV免费一区二区三区四区 | 亚洲色偷偷av男人的天堂 | 国产一区二区三区国产精品 | 九九久久精品国产 | 激情欧美一区 | 国产精品蜜臀av免费观看四虎 | 亚洲欧美另类一区 | 日本精品中文字幕在线不卡 | 亚洲乱色熟女一区二区三区 | 激情综合网五月激情 | 日日噜噜大屁股熟妇 | 日本黄色五级片 | 性色av一区二区三区四区 | 国产啪视频 | 好男人中文资源在线观看 | 东京热无码av一区二区 | 欧亚在线视频 | 色哟哟~日韩精品 | 亚洲综合色网 | 天天曰夜夜操 | 无码熟妇人妻AV在线影片 | 麻豆影视国产在线观看 | 天天综合网页在线观看 | avtt天堂网人妻系列 | 久艹精品 | 78午夜福利视频 | 精品久久久久久久久久中文字幕 | 性乌克兰xxxx极品 | 小老弟av影院 | 久久久久久免费免费 | h无码精品动漫尤物 | 国产午夜在线播放 |