在st解碼器方案中,用了marvell的phy晶元88e3019。在sdk中並沒有該晶元的驅動,只有乙個88e1111的驅動。看了兩天源**,發現只要加個phy_driver結構體就行了。具體**如下:
/* 88e3019 phy_driver */,
} 這兩天都在看phy晶元驅動的整體架構。 發現還是挺複雜的,關係到了好多個源**。
幾個重要的源**介紹如下:
1. phy_device.c
查詢和配置phy架構,包含了phy通用的驅動。
裡面有個函式:
int genphy_config_aneg(struct phy_device *phydev)
作用:restart auto-negotiation or write bmcr
2. phy.c
讀寫和配置phy裝置。
有兩個重要函式
int phy_read(struct phy_device *phydev, u16 regnum)
讀取phy reg。
int phy_write(struct phy_device *phydev, u16 regnum, u16 val)
寫phy reg。
3. driver.c
裝置驅動管理中心。
4. bus.c
匯流排驅動管理
5. mdio_bus.c
mdio匯流排驅動。有個重要的結構體
struct bus_type mdio_bus_type = ;
6. mii.h 和 mii.c
這是mii協議。裡面有mii協議的phy暫存器位址,及mii通訊介面庫。
marvell 88e1111驅動源**:
ZYNQ使用88E1510 PHY晶元的驅動程式
sdk v2014.4 phy 88e1510 pl端乙太網,自協商 standalone應用程式 pl端設計,略。根據pl端生成的hdf,新建專案,採用官方lwip echo server例程。發現執行結果為 lwip tcp echo server tcp packets sent to por...
乙太網學習(二) PHY晶元
phy晶元的基本功能 phy和rj45介面之間的連線就是學習一中提到的千兆乙太網rj45介面的那4對差分模擬訊號線。通過phy晶元實現了差分訊號對到數碼訊號的轉換,也就是圖中的rxd和txd。除此之外phy晶元還提供了通訊速率自協商,驅動通訊指示led燈等功能。phy晶元資料手冊 88e1116r晶...
Linux 下訪問PHY晶元暫存器
mdio eth0 1 讀取phy暫存器1的數值 mdio eth0 0 0x1120 將0x1120寫入 phy暫存器1 eth0 為mac層控制器的名稱,一般為eth0 或mgmt0。include include include include include include include ...