嵌入式網路形態各異,有的需要乙個網口,有的需要兩個網口,有的需要8個網口,不同的形態網路的方案 不一致,一版工業上或者消費電子soc片上系統僅支援1~2個mac;如果需要多個網口如何做?
先了解一下什麼是mac
mac就是網路的資料鏈路層,phy就是物理層
資料鏈路(邏輯線路):在一條物理線路之上,通過一些規程或協議來控制這些資料的傳輸,以保證被傳輸資料的正確性。實現這些規程或協議的硬體和軟體加到物理線路,這樣就構成了資料鏈路。從資料傳送點到資料接收點(點到點 point to point)所經過的傳輸途徑。
資料鏈路層控制的主要作用如下:大家可以看一下自己是soc關於網路的mac的描述
通過mdio進行對phy暫存器的配置,通過mii/rmii介面對phy進行網路資料傳輸
mac + phy可以完成乙個最基本的網路傳輸,該方案最簡單,針對於驅動來講只需要關注phy的位址、上電時序、phy的工作電壓、時鐘。如果硬體做的足夠好 根本沒驅動什麼事情!!!!。如果你的phy無法識別請一定確認硬體,如果你的phy ping異常確認一下mac位址和mii介面的電壓
採用交換晶元方案進行級聯擴充套件 可以擴充套件多個網絡卡晶元,
該方案在除錯起來稍微複雜一些,需要關注兩個大方向
1.交換晶元是否上電可以正常工作
2.soc to 交換晶元 是否可以識別
可以直接讓交換晶元自帶網絡卡進行互聯ping測試,交換晶元在上電的時候任意兩個網口都是可以互相訪問,則交換晶元本身沒有問題
接下來需要確認soc和交換晶元通路,這一點需要確認相接的port口工作狀態 是否一致
如是否都工作在100m 速率,全雙工模式,是否支援自協商(需要禁止自協商)?
還有一種方案就是soc上的mac不夠用了怎麼辦? 可以採用pcie 接交換晶元的方式
具體的除錯方案重點在於pcie的識別
而pcie主要的識別除錯在於硬體,只要硬體pcie電路穩定,其實該方案除錯起來也很快
pcie的驅動識別流程核心下是支援的,pcie的識別也涉及到自協商,具體的感興趣的可以檢視pcie識別原始碼
可以通過交換晶元擴充套件級聯功能 連線n個網絡卡
1,注意事項每個交換機是否都可以相鄰port口互ping
2.需要除錯級聯介面 統一模式
3.需要除錯pcie介面進行switch識別
嵌入式linux之NOR FLASH驅動
flash 儲存器介面還有兩個標準 cfi和jedec。cfi為公共flash介面 common flash inte ce 用來幫助程式從flash晶元中獲取操作方式資訊,而不用在程式中硬編碼flash的id。jedec用來幫助程式讀取flash的製造商id和裝置id,以確定flash的大小和演算...
嵌入式Linux驅動開發之helloword心得
自從選擇了物聯網這個專業,智慧型xx的字樣牽動著每乙個學習這個專業的孩子。大家興致勃勃的來到了學校,結果一切想象和自己的設想並不一樣。想象中的各種智慧型般夢幻的場景變成了真實的高數 電路 模電等等諸如此類!不知道這個世界什麼時候變得如此的浮躁,當大家的一段時間的努力看不到結果的時候就往往會不太感興趣...
嵌入式Linux之串列埠驅動結構
串列埠驅動相關資料結構 struct uart driver 串列埠驅動結構 struct uart port 埠結構,串列埠驅動只有乙個,埠卻有多個,乙個埠對應乙個實際的串列埠 struct uart ops 函式操作集 struct uart state 狀態結構 struct uart inf...