PCI匯流排(二)

2021-06-20 16:50:56 字數 1231 閱讀 6823

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晶元為資料處理提供快取功能,但各協議互不相容,而且各狀態的跳轉條件比...