SylixOS網絡卡驅動框架

2021-07-26 15:27:37 字數 2137 閱讀 5317

sylixos 核心版本1.4.1的網絡卡驅動框架與之前的版本相比有了很大變化,最主要的就是由之前的netif結構體變成了現在了netdev結構體。這個版本的網絡卡驅動框架主要由以下幾個部分組成。

在官方提供的imx6q的bsp工程目錄中,sylixos資料夾主要由三個子資料夾組成,分別是:bsp, driver, user。如圖 21所示。

工程資源檔案

bsp資料夾裡是跟整個bsp相關的c檔案及相關配置檔案等,在startup.s之後執行的第乙個c檔案為:bspinit.c,如圖 22所示。

驅動程式一般都存放在driver資料夾中。如圖 23所示。

圖23

驅動資料夾

網絡卡驅動**在driver下的netif子檔案內,開啟imx6q_netif.h , 整個網絡卡驅動對外只提供了乙個函式:enetinit ,如圖 24所示。

圖24

網絡卡入口函式

enetinit是整個網絡卡驅動的入口函式,前面說的bspinit.c裡halnetifattch函式裡會呼叫這個函式,進行網路的初始化。如圖 25所示。

圖25

呼叫enetinit

在當前版本的sylixos 裡,網絡卡驅動主要是實現netdev這樣乙個結構體,結構體裡的成員如圖 26所示。

圖26 netdev

這個結構體裡的內容主要可以分為以下兩類:

配置資訊相關

除了netdev_funcs結構體指標變數drv之外,其他的成員都可以分到這一類中,在驅動程式裡,只需根據具體情況,對這一類的成員進行對應的賦值即可。如圖 27所示。

圖27

配置資訊相關

驅動程式相關

這一類的就乙個成員,即netdev_funcs結構體指標。它裡面定義了所有驅動程式需要實現的內容,這個結構體的定義如圖 28所示。

圖28 netdev_funcs

一般,實現了init,transmit,receive這三個成員後,網絡卡基本就可以正常工作。這三個函式的功能如下:

.init : 進行整個網絡卡的初始化內容,裡面可以包括mac控制器的初始化,phy的初始化,描述符的初始化,中斷的繫結等等;

.transmit : 上層協議傳送資料時,最後呼叫的就這個函式,因此,它要是實現網絡卡驅動的傳送功能。

.receive : 當網絡卡收到資料時,會呼叫這個函式進行接收,同時,它裡面還需要實現將收到的資訊傳到上層協議棧中去的功能。

完成了上述內容之後,整個網絡卡驅動的內容也已經填充到netdev這個結構體中去了,最後只需要呼叫netdev_add函式就可以在系統中新增我們實現的這個網絡卡資訊,如圖 29所示。

圖29 netdev_add

在網絡卡驅動裡,可以建立乙個執行緒,用來監測當前網路的連線狀態,如圖 210所示。

圖210

監測執行緒

網絡卡驅動程式框架

我們這裡說的是網絡卡驅動程式,不是網路驅動程式,網路有七層,我們寫的只是最底層的東西,網路這麼多層,但是最終你還是要操作硬體啊 所以上面肯定有個硬體相關層,我們要寫的就是硬體相關的驅動程式這一小塊。網絡卡你不需要開啟什麼裝置,你只需要socket程式設計就行了 怎麼寫1 分配某個結構體 2 設定 3...

linux 網絡卡驅動

如何安裝linux網絡卡驅動呢,看看下面的說明。適用機型 所有xseries 205 所有xseries 206 所有xseries 225 所有xseries 226 所有xseries 235 所有xseries 236 所有xseries 255 所有xseries 305 所有xseries...

Ubuntu iwlwifi網絡卡驅動

iwlwifi網絡卡驅動 ubuntu 雙系統裝機完成後,發現不能連線無線網路,顯示找不到wifi介面卡 解決辦法 先讓ubuntu連上網路,有線網路 插網線,無線網路 usb免驅網絡卡 ubuntu終端輸入 sudo apt get sudo add apt repository ppa cano...