pci網絡卡驅動程式分析 針對
gnic- ii
的千兆乙太網卡,源程式檔案
/drivers/net/hamachi.c
1:初始化
static int __init hamachi_init (void) 進入bus_add_driver()
int bus_add_driver(struct device_driver *drv)
//匹配乙個裝置,把驅動所支援的製造商標識、裝置標識、類裝置標識,拿來和系統存在的裝置比較。
static int __init hamachi_init_one (struct pci_dev *pdev , const pci_device_id *ent) {
//使能
pci裝置
if(pci_enable_device (pdev)) {
ret = -eio ;
goto -err_out ;
ioaddr = pci_resource_start (pdev, 0) ;//獲取物理基位址,訪問晶元必須知道晶元基位址
i = pci_register_region (pdev, drv_name) ; //申請要使用的位址空間
if( i ) return i ;
irq = pdev->irq ; //獲取中斷號
ioaddr = (long) ioremap (ioaddr, 0x400) ; //完成物理位址對映虛擬位址。
dev = alloc_ethder(sizeof(struct hamachi_private)) ; //分配
struct net_device結構
dev->open = &hamachi_open;
dev->hard_start_xmit = &hamachi_start_xmit;
dev->stop = &hamachi_close;
dev->get_stats = &hamachi_get_stats;
dev->set_multicast_list = &set_rx_mode;
dev->do_ioctl = &netdev_ioctl;
dev->tx_timeout = &hamachi_tx_timeout;
dev->watchdog_timeo = tx_timeout;。。。。。。。。。。。。。。
i = register_netdev (dev) ;
PCI匯流排學習(二) PCI匯流排仲裁
幻燈片 9 在一定時間內,可能有多個bus master請求使用匯流排傳輸資料,每個請求匯流排的master都會assert它的req 訊號,來告訴仲裁器他要申請使用匯流排,仲裁器一般整合於晶元組中。幻燈片 10 如果仲裁器是可程式設計的,啟動配置軟體可以通過讀取max lat配置暫存器來決定每個b...
PCI匯流排原理 二
pci即peripheral component interconnect 中文意思是 外圍器件互聯 是由 pcisig pci special interest group 推出的一種區域性並行匯流排標準。在現在電子裝置中應用非常廣泛,下面我詳細介紹下 pci匯流排的工作原理,希望對大家有所幫助。...
pci匯流排定時協議 PCI匯流排標準及協議
首先?pagenum physaddress 另外。因為硬體裝置讀寫的是物理記憶體。舉例如下。專用晶元可以實現完整的pci主裝置與從裝置模式的介面功能?vpicd physically unmask rtcirqhandle ram晶元為資料處理提供快取功能,但各協議互不相容,而且各狀態的跳轉條件比...