xilinx uboot網(wǎng)卡驅(qū)動(dòng)分析和一些概念掃盲_第1頁(yè)
xilinx uboot網(wǎng)卡驅(qū)動(dòng)分析和一些概念掃盲_第2頁(yè)
xilinx uboot網(wǎng)卡驅(qū)動(dòng)分析和一些概念掃盲_第3頁(yè)
xilinx uboot網(wǎng)卡驅(qū)動(dòng)分析和一些概念掃盲_第4頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

xilinxuboot網(wǎng)卡驅(qū)動(dòng)分析和一些概念掃盲1、MAC控制器、網(wǎng)卡、PHY、MDIO、mii、gmii、rgmii概念掃盲網(wǎng)卡在功能上包含OSI模型的兩個(gè)層,數(shù)據(jù)鏈路層和物理層。物理層定義了數(shù)據(jù)傳送與接收所需要的電與光信號(hào)、線路狀態(tài)、時(shí)鐘基準(zhǔn)、數(shù)據(jù)編碼和電路等,并向數(shù)據(jù)鏈路層設(shè)備提供標(biāo)準(zhǔn)接口。數(shù)據(jù)鏈路層則提供尋址機(jī)構(gòu)、數(shù)據(jù)幀的構(gòu)建、數(shù)據(jù)差錯(cuò)檢查、傳送控制、向網(wǎng)絡(luò)層提供標(biāo)準(zhǔn)的數(shù)據(jù)接口等功能。網(wǎng)卡中負(fù)責(zé)數(shù)據(jù)鏈路的芯片叫做MAC控制器,負(fù)責(zé)物理層的芯片叫做PHY。所以,一個(gè)網(wǎng)卡由MAC控制器和PHY組成。MAC控制器與PHY連接使用MII(Mediumindependentinterface)媒體獨(dú)立接口,這個(gè)接口是IEEE-802.3定義的以太網(wǎng)行業(yè)標(biāo)準(zhǔn)定義的接口,包括一個(gè)數(shù)據(jù)接口和一個(gè)MAC和PHY之間的管理接口即MDIO。MII標(biāo)準(zhǔn)接口用于連接MAC和PHY,媒體獨(dú)立表示不對(duì)MAC硬件重新設(shè)計(jì)或替換的情況下,任何類型的PHY設(shè)備接到當(dāng)前MAC控制器上都可以正常工作。MII支持10M和100M的網(wǎng)絡(luò)速率,由于網(wǎng)卡的速率不同,所以在其他速率下工作的與MII等效的接口有:AUI(10M以太網(wǎng))、GMII(Gigabit以太網(wǎng))和XAUI(10-Gigabit以太網(wǎng))。此外還有RMII、RGMII、SMII、SGMII等。所有這些接口都是由MII而來。MII支持10兆和100兆的操作,一個(gè)接口由14根線組成。RMII是簡(jiǎn)化的MII接口,在數(shù)據(jù)的收發(fā)上它比MII接口少了一倍的信號(hào)線。SMII是由思科提出的一種媒體接口,它有比RMII更少的信號(hào)線數(shù)目,S表示串行的意思。因?yàn)樗挥靡桓盘?hào)線傳送發(fā)送數(shù)據(jù),一根信號(hào)線傳輸接受數(shù)據(jù),所以在時(shí)鐘上為了滿足100的需求,它的時(shí)鐘頻率很高,達(dá)到了125兆,為什么用125兆,是因?yàn)閿?shù)據(jù)線里面會(huì)傳送一些控制信息。GMII采用8位接口數(shù)據(jù),工作時(shí)鐘125MHz,因此傳輸速率可達(dá)1000Mbps。同時(shí)兼容MII所規(guī)定的10/100Mbps工作方式。RGMII又是GMII接口的精簡(jiǎn)版。SGMII又是GMII的串行版。MAC控制器和PHY除了數(shù)據(jù)傳輸?shù)慕涣魍?,MAC和PHY控制信息的交流通過MDIO(管理數(shù)據(jù)輸入輸出)接口來完成。具體MAC控制器進(jìn)行PHY檢測(cè)、MAC控制器回去PHY當(dāng)前狀態(tài)、MAC控制器控制PHY速率等操作就通過MDIO來完成。2.xilinxuboot網(wǎng)卡驅(qū)動(dòng)分析xilinx網(wǎng)卡模式比較靈活,可以外接PHY芯片也可以用FPGA做PHY芯片。以zynqmp_zcu102為例,在其dts中定義的網(wǎng)卡設(shè)備樹為&gem3{status=“okay”;local-mac-address=[000a35000290];phy-handle=《&phy0》;phy-mode=“rgmii-id”;phy0:phy@21{reg=《21》;ti,rx-internal-delay=《0x8》;ti,tx-internal-delay=《0xa》;ti,fifo-depth=《0x1》;};};uboot加載設(shè)備樹種的信息創(chuàng)建device后,與driver匹配后執(zhí)行zynq_gem_probe函數(shù)。在uboot中管理整個(gè)網(wǎng)卡驅(qū)動(dòng)的結(jié)構(gòu)為structzynq_gem_priv{structemac_bd*tx_bd;structemac_bd*rx_bd;char*rxbuffers;u32rxbd_current;u32rx_first_buf;intphyaddr;u32emio;intinit;structzynq_gem_regs*iobase;phy_interface_tinterface;structphy_device*phydev;intphy_of_handle;structmii_dev*bus;};由變量名可知,它包含了所有操作網(wǎng)卡需要的信息。zynq_gem_probe(structudevice*dev)函數(shù)中具體做的操作有:priv-》rxbuffers=memalign(ARCH_DMA_MINALIGN,RX_BUF*PKTSIZE_ALIGN);為priv分配接收bufferspriv-》tx_bd=(structemac_bd*)bd_space;//分配tx_bd的空間priv-》rx_bd=(structemac_bd*)((ulong)bd_space+BD_SEPRN_SPACE);//分配rx_bd的空間priv-》bus=mdio_alloc();//分配mdiobus,主要是初始化了一個(gè)bus鏈表priv-》bus-》read=zynq_gem_miiphy_read;//mdio總線讀函數(shù),用于讀取phy信息priv-》bus-》write=zynq_gem_miiphy_write;//mdio寫總線函數(shù)priv-》bus-》priv=priv;strcpy(priv-》bus-》name,“gem”);//總線名為gemret=mdio_register(priv-》bus);//注冊(cè)mdio,主要進(jìn)行的操作是list_add_tail(&bus-》link,&mii_devs);returnzynq_phy_init(dev);//phy初始化接下來看下zynq_phy_init函數(shù)里干了啥。zynq_phy_init(structudevice*dev)writel(ZYNQ_GEM_NWCTRL_MDEN_MASK,?s-》nwctrl);寫MAC控制器寄存器,EnableMDIObusret=phy_detection(dev);//通過MDIO來檢測(cè)phy,通過phyread函數(shù)檢測(cè)正確的phy地址,如果

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論