本章節用來介紹stmmac_dvr_probe函式過程。
函式一開始就呼叫nxp_plat_initialize函式對mac ip核覆位、phy復位、mac ip核用到的時鐘進行初始化,但是這部分做的事情跟註冊mac裝置的時候nxpmac_init做的事情完全一樣,所以這個函式做的事情就不再進行詳細的介紹。
緊接著申請stmmac_priv型別的變數,並對它進行各種的賦值。
接下來最重要的是呼叫stmmac_hw_init函式,在stmmac_hw_init函式中比較重要的是呼叫dwmac1000_setup,並在記憶體中申請了乙個mac_device_info型別的變數,並對其賦值,重要的是以下兩個賦值。
mac->mac = &dwmac1000_ops;
mac->dma = &dwmac1000_dma_ops;
在dwmac1000_ops變數中,存在乙個core_init成員,這個函式指標是用來初始化s5p4418 soc中的mac ip核的,host_irq_status成員函式指標是中斷處理函式,比如插入和拔掉網線,會執行host_irq_status函式指標指向的函式dwmac1000_irq_status。經過層層追蹤,發現在nxpmac_hw_setup呼叫dwmac1000_ops以及dwmac1000_dma_ops註冊的函式,進行初始化mac 以及 dma的操作。而nxpmac_hw_setup是被stmmac_open以及stmmac_resume函式中呼叫。
在dwmac1000_setup呼叫完成後,stmmac_hw_init做的其他事情不怎麼重要,就不再講述該函式其他部分。
返回到stmmac_dvr_probe後,接著會為網路裝置註冊開啟、關閉、開始傳輸、結束傳輸等操作。
ndev->netdev_ops = &stmmac_netdev_ops;
static const struct net_device_ops stmmac_netdev_ops = ;
最後呼叫ret = stmmac_mdio_register(ndev)註冊mac與phy之間的匯流排。
NanoPC T2 乙太網分析 2
在linux kerneldriver net ethernet nxpmac目錄下的 是對s5p4418 soc中的mac進行初始化,該目錄下仍然存在大量的stmmac 其中在nxpmac main.c中是這個驅動的入口,在這個原始檔中存在 module init stmmac init modu...
XILINX SGMII千兆乙太網 3
thelogicore ip tri mode ethernet media access controller temac solution comprises the 10 100 1000 mb s ethernet mac,the 1 gb s ethernet mac,2.5 gb s e...
利用libpcap分析乙太網協議例程
本 編寫環境 fedora 17 gcc 編譯命令 gcc get ethernet.c o get ethernet lpcap 1 include 2 define bufsize 1024 3 struct ether header 4 9 void main 10 72 printf mac...