资源描述:
《网卡设备驱动.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、网卡设备驱动1.8139too网卡设备简介一个PCI设备,总共有三个地址空间:内存,端口和配置。内存和端口其实是同一个内容的不同访问路径而已。PCI设备的配置空间是标准化的,每个PCI设备的配置空间的前64个字节的含义都是一样的。但各个设备的内存和端口空间是完全不一样的。在硬件概念上,设备的I/O内存和I/O端口空间没有区别,其实都是设备拥用的一些读写寄存器。 8139too网卡拥有256字节的读写寄存器空间。它的整个布局如下: /*Symbolicoffsetstoregisters.*/ enumRTL8139_registers{
2、 MAC0=0, /*Ethernethardwareaddress.*/ MAR0=8, /*Multicastfilter.*/ TxStatus0=0x10, /*Transmitstatus(Four32bitregisters).*/ TxAddr0=0x20, /*Txdescriptors(alsofour32bit).*/ RxBuf=0x30, ChipCmd=0x37, RxBufP
3、tr=0x38, RxBufAddr=0x3A, IntrMask=0x3C, IntrStatus=0x3E, TxConfig=0x40, RxConfig=0x44, Timer=0x48, /*Ageneral-purposecounter.*/ RxMissed=0x4C, /*24bitsvalid,writeclears.*/ Cfg9346=0x50, Con
4、fig0=0x51, Config1=0x52, FlashReg=0x54, MediaStatus=0x58, Config3=0x59, Config4=0x5A, /*absentonRTL-8139A*/ HltClk=0x5B, MultiIntr=0x5C, TxSummary=0x60, BasicModeCtrl=0x62, BasicModeSta
5、tus=0x64, NWayAdvert=0x66, NWayLPAR=0x68, NWayExpansion=0x6A, /*Undocumentedregisters,butrequiredforproperoperation.*/ FIFOTMS=0x70, /*FIFOControlandtest.*/ CSCR=0x74, /*ChipStatusandConfigurationRegister.*/
6、 PARA78=0x78, PARA7c=0x7c, /*Magictransceiverparameterregister.*/ Config5=0xD8, /*absentonRTL-8139A*/ }; 每个寄存器都有它特殊的含义和用途。举个例子(我们假设使用I/O内存的方式,ioaddr为设备内存映射在CPU内存地址空间的起始地址,下述代码能读取板卡的版本号): #defineHW_REVID(b30,b29,b28,b27,b26,b23,b22) (b
7、30<<30
8、b29<<29
9、b28<<28
10、b27<<27
11、b26<<26
12、b23<<23
13、b22<<22) #defineHW_REVID_MASK HW_REVID(1,1,1,1,1,1,1) /*identifychipattachedtoboard*/ version=ioread32(ioaddr+TxConfig)&HW_REVID_MASK; 在我的电脑上,version读出来的值的0x74400000,经过比对,板卡名称为:RTL-8100B/8139D。 下面是整个系例版本号的表格: enu