基于A(yíng)RM的無(wú)線(xiàn)網(wǎng)卡設備驅動(dòng)方案
圖2 LinUX網(wǎng)絡(luò )驅動(dòng)程序結構
2.2.1 USB無(wú)線(xiàn)網(wǎng)卡驅動(dòng)設備的訪(fǎng)問(wèn)和控制
與PCI,ISA等設備不同,USB,1394等新一代總線(xiàn)沒(méi)有IO/MEM映射、中斷和DMA硬件資源,取而代之的是抽象出來(lái)的硬件資源概念。對USB設備來(lái)說(shuō),資源主要包括配置(configuration)、接口(interface)和端點(diǎn)(endpoint)。這些資源中,端點(diǎn)對于USB設備有著(zhù)最重要的意義,實(shí)際的數據傳輸就是通過(guò)端點(diǎn)的讀寫(xiě)實(shí)現的。驅動(dòng)程序通過(guò)描述符來(lái)獲取這些資源。在初始化時(shí),USB驅動(dòng)程序從設備端點(diǎn)0讀取描述符,經(jīng)過(guò)解析后保存這些資源的屬性,為傳輸數據做準備。
2.2.2 USB網(wǎng)絡(luò )設備驅動(dòng)程序設計
USB無(wú)線(xiàn)網(wǎng)卡驅動(dòng)程序首先向USB子系統注冊自己,然后通過(guò)vendor id和device id來(lái)判斷硬件設備是否已經(jīng)插入總線(xiàn),攝像頭驅動(dòng)程序需要創(chuàng )建一個(gè)
當無(wú)線(xiàn)網(wǎng)卡插入USB總線(xiàn)時(shí),USB core就會(huì )調用Probe方法來(lái)檢測被傳遞進(jìn)來(lái)的信息,以確定無(wú)線(xiàn)網(wǎng)卡設備是不是與驅動(dòng)程序匹配,同時(shí)填充struct net_device完成對該網(wǎng)絡(luò )設備的初始化。當無(wú)線(xiàn)網(wǎng)卡被拔出時(shí),USB core就會(huì )調用Disconnect方法來(lái)完成清除工作。驅動(dòng)程序通過(guò)顯示模塊的初始化和消除函數注冊與注銷(xiāo)模塊調用module_init來(lái)初始化一個(gè)模塊,并在卸載時(shí)調用moduel_exit函數。
評論