【linux驅動分析】之dm9000驅動分析(一):dm9000原理及硬件分析

【linux驅動分析】之dm9000驅動分析(一):dm9000原理及硬件分析 

【linux驅動分析】之dm9000驅動分析(二):定義在板文件中的資源和設備以及幾個宏 

【linux驅動分析】之dm9000驅動分析(三):sk_buff結構分析 

【linux驅動分析】之dm9000驅動分析(四):net_device結構體 

【linux驅動分析】之dm9000驅動分析(五):另外幾個重要的結構體 

【linux驅動分析】之dm9000驅動分析(六):dm9000_init和dm9000_probe的實現 

【linux驅動分析】之dm9000驅動分析(七):dm9000的卸載掛起和恢復以及打開和停止


一、瞭解幾個概念
1、MAC
    MAC是Media Access Control 的縮寫,即媒體訪問控制子層協議,又翻譯爲媒體接入控制器。
    該協議位於OSI七層協議中數據鏈路層的下半部分,主要負責控制與連接物理層的物理介質。在發送數據的時候,MAC協議可以事先判斷是否可以發送數據,如果可以發送將給數據加上一些控制信息,最終將數據以及控制信息以規定的格式發送到物理層;在接收數據的時候,MAC協議首先判斷輸入的信息並是否發生傳輸錯誤,如果沒有錯誤,則去掉控制信息發送至LLC層。以太網MAC由IEEE-802.3以太網標準定義。
2、MII
    MII即媒體獨立接口, “媒體獨立”表明在不對MAC硬件重新設計或替換的情況下,任何類型的PHY設備都可以正常工作。包括分別用於發送器和接收器的兩條獨立信道。每條信道都有自己的數據、時鐘和控制信號。MII數據接口總共需要16個信號,包括TX_ER,TXD<3:0>,TX_EN,TX_CLK,COL,RXD<3:0>,RX_EX,RX_CLK,CRS,RX_DV等。
    MII以4位半字節方式傳送數據雙向傳輸,時鐘速率25MHz。其工作速率可達100Mb/s。MII管理接口是個雙信號接口,一個是時鐘信號,另一個是數據信號。通過管理接口,上層能監視和控制PHY。其管理是使用SMI(Serial Management Interface)總線通過讀寫PHY的寄存器來完成的。PHY裏面的部分寄存器是IEEE定義的,這樣PHY把自己的目前的狀態反映到寄存器裏面,MAC通過SMI總線不斷的讀取PHY的狀態寄存器以得知目前PHY的狀態,例如連接速度,雙工的能力等。當然也可以通過SMI設置PHY的寄存器達到控制的目的,例如流控的打開關閉,自協商模式還是強制模式等。不論是物理連接的MII總線和SMI總線還是PHY的狀態寄存器和控制寄存器都是有IEEE的規範的,因此不同公司的MAC和PHY一樣可以協調工作。當然爲了配合不同公司的PHY的自己特有的一些功能,驅動需要做相應的修改。

3、PHY
    PHY是物理接口收發器,它實現物理層。包括MII/GMII(介質獨立接口)子層、PCS(物理編碼子層)、PMA(物理介質附加)子層、PMD(物理介質相關)子層、MDI子層。
    100BaseTX採用4B/5B編碼。PHY在發送數據的時候,收到MAC過來的數據(對PHY來說,沒有幀的概念,對它來說,都是數據而不管什麼地址,數據還是CRC),每4bit就增加1bit的檢錯碼,然後把並行數據轉化爲串行流數據,再按照物理層的編碼規則把數據編碼,再變爲模擬信號把數據送出去。收數據時的流程反之。PHY還有個重要的功能就是實現CSMA/CD的部分功能。它可以檢測到網絡上是否有數據在傳送,如果有數據在傳送中就等待,一旦檢測到網絡空閒,再等待一個隨機時間後將送數據出去。如果兩個碰巧同時送出了數據,那樣必將造成衝突,這時候,衝突檢測機構可以檢測到衝突,然後各等待一個隨機的時間重新發送數據。這個隨機時間很有講究的,並不是一個常數,在不同的時刻計算出來的隨機時間都是不同的,而且有多重算法來應付出現概率很低的同兩臺主機之間的第二次衝突。通信速率通過雙方協商,協商的結果是兩個設備中能同時支持的最大速度和最好的雙工模式。這個技術被稱爲Auto Negotiation或者NWAY。隔離變壓器把PHY送出來的差分信號用差模耦合的線圈耦合濾波以增強信號,並且通過電磁場的轉換耦合到連接網線的另外一端。RJ-45中1、2是傳送數據的,3、6是接收數據的。新的PHY支持AUTO MDI-X功能(也需要隔離變壓器支持)。它可以實現RJ-45接口的1、2上的傳送信號線和3、6上的接收信號線的功能自動互相交換

    網卡工作在osi的最後兩層,物理層和數據鏈路層,物理層定義了數據傳送與接收所需要的電與光信號、線路狀態、時鐘基準、數據編碼和電路等,並向數據鏈路層設備提供標準接口。物理層的芯片稱之爲PHY。數據鏈路層則提供尋址機構、數據幀的構建、數據差錯檢查、傳送控制、向網絡層提供標準的數據接口等功能。以太網卡中數據鏈路層的芯片稱之爲MAC控制器。很多網卡的這兩個部分是做到一起的。他們之間的關係是pci總線接mac總線,mac接phy,phy接網線(當然也不是直接接上的,還有一個變壓裝置)。
MAC 和PHY 一個是數據鏈路層 一個是物理層 兩者通過MII傳送數據。


4、曼徹斯特編碼

    曼徹斯特編碼又稱曼徹斯特相位編碼,它通過相位變化來實現每個位(圖2)。通常,用一個時鐘週期中部的上升沿表示“1”,下降沿表示“0”。週期末端的相位變化可忽略不計,但有時又可能需要將這種相位變化計算在內,這取決於前一位的值。


5、4B/5B編碼

    4B/5B編碼是一種塊編碼方式。它將一個4位的塊編碼成一個5位的塊。這就使5位塊內永遠至少包含2個“1”轉換,所以在一個5位塊內總能進行時鐘同步。該方法需要25%的額外開銷。

二、DM9000

1、框圖

2、芯片引腳圖
MII接口和32位總線模式可以配置
(1)、MII接口

(2)、32位數據總線



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章