驅動 DM9000網絡卡驅動分析

2021-09-21 16:20:19 字數 1620 閱讀 9272

preface

核心原始碼版本:linux-2.6.18

網絡卡驅動·linux核心網路分層結構

dm9000晶元

dm9000是一款高度整合低功耗快速乙太網處理器,該晶元整合了mac和phy。dm9000可以和cpu直接連線,支援8位、16位和32位資料匯流排寬度。該晶元支援10m和100m自適應乙太網介面,內部有16k的fifo以及4k雙位元組sram,支援全雙工工作。

dm9000內部還整合了接收緩衝區,可以在接收到資料的時候把資料存放到緩衝區中,鏈路層可以直接把資料從緩衝區取走。

網絡卡驅動程式框架

在乙個網路驅動程式中,一般都提供了乙個platform_driver結構變數。

platform_driver結構包括了網絡卡驅動的相關操作函式,通過platform_driver_register()函式註冊到核心裝置驅動列表。

核心會根據驅動程式中裝置描述設定網絡卡的中斷和定時器,並且在網路資料報到來的時候呼叫網絡卡對應的處理函式。

通常,網絡卡需要向核心提供下面幾個介面函式:

網路裝置驅動主要是按照核心網路資料報處理流程中用到的資料結構,設定對應的處理函式供核心使用。

dm9000網絡卡驅動主要資料結構

dm9000網絡卡驅動位於driver/net/dm9000.c檔案,有兩個主要的資料結構dm9000_driver和board_info。其中,dm9000_driver是platform_driver結構。

1

2

3

4

5

6

7

8

9

10

staticstructplatform_driver dm9000_driver = ,

.probe   = dm9000_probe,//載入驅動函式

.remove= dm9000_drv_remove,//刪除驅動函式

.suspend = dm9000_drv_suspend,//掛起驅動函式

.resume  = dm9000_drv_resume,//恢復驅動函式

};

dm9000網絡卡驅動還設定了供dm9000網路控制晶元使用的board_info結構

DM9000網絡卡驅動移植

網絡卡驅動移植 步驟1 確定相異性 步驟2 修改 一般就是修改 iobase 和中斷 按照原理圖,其片選訊號可能是往固定段落記憶體寫資料,即是片選到這個裝置。這個也是統一編址的一種方式。根據原理圖,修改其中段引腳,把其irq修改為原理圖上面的iro.網絡卡中本來就有記憶體,當網絡卡接受到資料時候,就...

網絡卡(dm9000)驅動移植

網絡卡 dm9000 驅動移植 看到網上有很多的部落格分享,比如 在此,描述一下自己的製作過程 1.修改arch arm plat s3c24xx common smdk.c檔案 在包含標頭檔案的區域增加以下 在smdk devs結構體之前新增以下 if defined config dm9000 ...

DM9000網絡卡驅動詳細分析 1

linux下dm9000網絡卡驅動同樣是註冊成平台驅動 platform driver 的形式.平台驅動在此就不多做介紹了,具體請參考linux驅動分析之framebuffer驅動.重點介紹dm9000網絡卡的控制.dm9000的引腳和mini2440的引腳連線 dm9000 mini2440 功能...