卡皇8187win7驱动下载驱动真的有那么好用吗

常用软件推荐
原创软件推荐
本款卡皇驱动是卡皇rtl8187驱动,想要蹭网的朋友们可免费下载啦,不过本驱动不是安装程序,需要手机指定驱动文件所在位置。卡皇rtl8187驱动使用方法:无线蹭网设备连接电脑后,电脑会安装新硬件,如果成功安装则不需要本驱动,如果未能成功安装,可以在设备管理器找到带问号的硬件,然后手动安装驱动,指定本目录即可。
驱动下载提供声卡驱动下载、显卡驱动下载、网卡驱动下载、万能驱动下载、主板驱动下载、笔记本驱动下载等等一系列驱动以及驱动助手。为您提供全面的驱动下载。欢迎选择您适合的驱动下载。
NVIDIA GeForce6/GeForce7系列显卡驱动94.24 WHQL...
387.92 WHQL Vista/Win7/8
NVIDIA英伟达GeForce6/GeForce7/GeForce8/GeForce...
v9.5.929.1361 标准版
驱动精灵2016能够智能识别您的计算机硬件,匹配相...
v5.0.3.360 多国语言版
Driver Booster(驱动加速器)一款针对Windows操作...
高速下载器地址
适合机型:三星G9350,三星G9350 ROM
Android版本:7.0
ROM大小:1810 MB
本站提供的软件会测试再上传,但无法保证所有软件都没有问题,如果您发现链接错误或其它问题,请在评论里告诉我们!
下载点支持点击下载(IE图标)或(迅雷图标),若直接点击下载速度太慢,请尝试点击其他的下载点,若文件太大请使用高速下载器。为确保下载的文件能正常使用,请使用最新版本解压本站软件。
建议大家谨慎对待所下载的文件,大家在安装的时候务必留意每一步!关于或的有关提示,请自行注意选择操作。
本站所有资源均是软件作者、开发商投稿、网上搜集,任何涉及商业盈利目的均不得使用,否则产生的一切后果将由您自己承担!将不对任何资源负法律责任。所有资源请在下载后24小时内删除。
本站下载资源全部由软件作者或软件厂商提供,游戏相关下载转自各大游戏论坛及游戏下载站,并全部为免费分享。如侵犯了您的版权,请立刻联系我们并附带版权证明,本站将尽快处理删除(举报联系QQ:3909136),或。
若您下载的资源有问题或无法下载,请与本站客服人员联系(QQ:9190104)。等级:v2.0.0.1330官方版7.8M简体推荐理由:360驱动大师是一款专业解决驱动安装更新软件,百万级的驱动库支持,驱动安装一键化,无需手动操作,首创的驱动体检技术,让你更直观了解您电脑的状态版本:
等级:v9.6.官方版27.4M简体推荐理由:驱动精灵是一款集驱动管理和硬件检测于一体的、专业级的驱动管理和维护工具。驱动精灵为用户提供驱动备份、恢复、安装、删除、在线更新等实用功能版本:
等级:v7.0.6.12官方版17.2M简体推荐理由:驱动人生率先推出网络打印机的功能,可谓是很多管理人员的福音。网络打印机可使局域网内的任何一台电脑都可以连接打印机实现打印。而不需要通过一台电脑连接打印机,其他电脑共享来实现。这就使得工作中的打印变的简单、高效。版本:
等级:v5.15.16.1310官方最新版46.6M简体推荐理由:鲁大师帮你快速升级补丁,安全修复漏洞,系统一键优化、一键清理、驱动更新。鲁大师官方最新版更有硬件温度监测等带给你更稳定的电脑应用体验版本:
等级:v10.2.496.1增强版91.5M简体推荐理由:BlueSoleil的是一个基于Windows的IVT的软件,可以启用蓝牙的台式机或笔记本电脑以无线方式连接到其它蓝牙设备,官方的免费的IVT蓝牙驱动完全版,无需注册,无需授权码,安装后直接可用版本:
等级:v2.4.615.1029官方版3.2M简体推荐理由:Lenovo联想驱动管理与联想电脑共生,时刻保障硬件处在最佳状态,为您提供最优的驱动程序并更新、电脑硬件配置信息、电脑保修期查询、针对电脑问题的在线客服版本:
等级:v17.0.7.4官方版1.0M简体推荐理由:Display Driver Uninstaller可用于显卡驱动程序的卸载。当你不能通过控制面板卸载选择的驱动程序时,你可以通过尝试使用这个工具来卸载。它还能够删除所有兼容的显卡驱动程序留下的痕迹版本:
等级:V1.0.0.38.1M英文推荐理由:Snail Driver(蜗牛驱动)是一个直观的程序,能够帮你扫描您的计算机,并检测有需要更新驱动程序的设备。此外,它可以自动下载和安装所需的组件,非常的简单实用,这是一款英文软件,但使用上对中文用户来说并没有什么障碍版本:
等级:v9.5.518.1321单文件纯净版12.4M简体推荐理由:驱动精灵绿色版无广告弹窗干扰,无多余无关功能,驱动引擎全面更新改善,更高更准确寻获驱动;驱动精灵去广告版视觉效果重新设计,风格简约平滑而清新版本:
等级:v9.6.官方版179.1M简体推荐理由:驱动精灵万能网卡版集成万能网卡驱动。依托于驱动之家的技术支持,加上她巨大的驱动库,驱动精灵万能网卡版对打印机、摄像头、部分品牌笔记本的驱动支持较全面版本:
等级:v7.0.5.10官方版231M简体推荐理由:驱动人生带网卡版本全方位实现一键式从智能检测硬件到最匹配驱动安装升级的全过程。(可检测安装所有硬件驱动,如声卡驱动,显卡驱动,主板驱动,USB驱动等)如果您遇到无法解决的驱动安装问题,驱动人生就是帮你解决问题的好帮手版本:
等级:V5.2.53.27018.3M简体推荐理由:驱动人生2013,小编常用的驱动管理软件,驱动人生拥有完善的硬件驱动数据库,可智能检测硬件并自动查找最新驱动,还能备份、还原系统驱动版本:
等级:V3.0.909.15.6M简体推荐理由:超级兔子驱动天使是一项功能强大的驱动下载安装利器,驱动天使能识别各种CPU、主板、显卡、网卡、声卡版本:
等级:V2.3.1.1免费版15.6M简体推荐理由:Driver Booster PRO是由iobit公司出品的一款驱动更新和备份软件。Driver Booster PRO 免费版内含注册码,可完美激活版本:
等级:v2.0绿色版706KB简体推荐理由:驱动精灵驱动助手是从驱动精灵中提取出来的的声卡驱动检测工具。该工具可以一键检测声卡驱动,并能修复部分声卡软件故障。软件简单易用、绿色免费版本:
等级:15.5.0.0官方中文版95.1M简体推荐理由:3DP Chip设备驱动程序查看,3DP芯片是一种工具 ,以帮助您创建查看您的设备和下载最新的设备驱动程序与几个简单的点击次数版本:
等级:1.0绿色版99KB简体推荐理由:使用GUID获取设备相关信息,用于枚举windows下所有已安装的驱动,包括设备不存在的驱动,可以按照不同的类别排序版本:
等级:v2.2.32534免费版563KB英文推荐理由:SlimDrivers是一款经过微软金牌认证的软件,这款软件主要是更新你的硬件驱动,小巧并且完全免费版本:
等级:WHQL正式版367.4M简体推荐理由:英伟达最近发布了旗下GeForce系列显卡驱动361.75版,此次更新包括在win10下对G-SYNC功能的提升,修复了笔记本电脑中Photoshop CC 2015下的蓝屏问题,移除了阻碍nvidia控制面板加载的Bug,解决了一个游戏时出现的错误版本:
等级:v2.0.0.1330官方版135M简体推荐理由:360驱动大师网卡版集成万能网卡驱动,由于网卡是电脑硬件,装驱动的目的是让系统能正确识别并关联硬件,这样具体硬件才能正常发挥作用版本:
等级:v6.5.官网版(xp/win7/win8)800M简体推荐理由:万能驱动助理(可简称为 WanDrv ) IT天空出品的一款根据硬件ID(HWID)来智能识别电脑硬件并且自动安装驱动程序的工具。多平台支持:分32位版和64位版,32位版支持 Windows 8/7/XP、Server 2003;64位版支持 Windows 8/7、Server 2008 R2版本:
等级:SP3增强版112M简体推荐理由:驱动精灵2011增强版和标准版的区别就是附带了网卡驱动程序。有了驱动精灵2011集成万能网卡版就不用再提心重装系统后上不了网的问题啦版本:
等级:SP3标准版9.3M简体推荐理由:驱动精灵是由驱动之家研发的一款集驱动自动升级、驱动备份、驱动还原、驱动卸载、硬件检测等多功能于一体的装机辅助软件版本:
等级:官方正式版发布31.1M简体推荐理由:ATI显卡新驱动带来了相当丰富的新特性,游戏性能也有进一步提升。催化剂10.7正式版编译于7月6日,显示驱动版本号8.753.0(测试版是7月18日的8.753.2版),全面支持Radeon HD 系列桌面显卡,同时代的移动显卡、集成显卡以及部分FireStream加速卡,操作系统则支持Windows XP/Vista/7、Linux 32/64位版本版本:
等级:10.2正式版For WinXP/XP-6475.6M英文推荐理由:AMD Radeon 00//X600/X700/X800/X/X/X/X2100系列显卡催化剂10.2官方正式完整(集成控制中心)版For WinXP/XP-64(日发布)版本:
等级:V1.4.5 绿色版39.5M简体推荐理由:驱动魔法师本版本在原有驱动魔法师网络标准版的基础上,添加了网卡快速免安装专版。版本:
等级:2.75绿色注册版7.1M英文推荐理由:Driver Checker是一款国外非常专业的驱动程序管理与更新检查软件,为您的整个硬件设备轻松地检测和更新最新的驱动程序版本:
等级:绿色正式版3.6M简体推荐理由:驱动人生是一款免费的驱动管理软件,实现智能检测硬件并自动查找安装驱动,为用户提供最新驱动更新,本机驱动备份、还原和卸载等功能。软件界面清晰,操作简单,设置人性化等优点版本:
等级:6.3.31.114官方版2.5M简体推荐理由:驱动人生是一款很受用户喜爱的驱动软件。近期,驱动人生新推驱动人生装机版,让你重装完系统后再也不用为安装驱动而烦恼了。重装完系统之后,安装电脑驱动是童鞋们的一大难题。首先是电脑无法联网,其次那么多的电脑驱动应该按照什么样的顺序来安装。不用着急,驱动人生最新的装机版可以帮你解决版本:
等级:10.1版70.1M推荐理由:AMD终于官方发布了新年的第一款显卡驱动催化剂10.1,比原计划的时间晚了两个星期,大概是忙于多个新系列DX11显卡的发布了版本:网卡不稳定的罪魁祸首
网卡不稳定的罪魁祸首
近期新上的DB SERVER服务器,在压测中发现网卡很不稳定,压力测试刚刚进行十几分钟后,服务器反应就变得非常慢,PING的时候经常丢包而且SSH连接也时断时续。刚开始以为是高并发时导致的db server无响应,可以看了一下CPU、内存和硬盘IO,发现都没有达到较高值,甚至比我们的预警值低很多,而且监测也表明DB服务器剩余资源很充裕!真是比较奇怪,那么引起网卡不稳定的原因到底是什么呢?
向相关工程师了解了一下情况,知道这台DB服务器是双机热备中的一台服务器,前几天刚做的2组千兆网卡绑定。据工程师说绑定前也做过压测,没有出现这样的问题。难道是绑定设置的哪个环节出问题了?于是决定从千兆网卡绑定进行详细检查。
故障现象图示:
一、 检查ifcfg-bond0和ifcfg-bond1文件
#cat &/etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0 & &
BOOTPROTO=static
ONBOOT=yes
IPADDR=10.58.11.11
NETMASK=255.255.255.0
GATEWAY=10.58.121.254
USERCTL=no
#cat &/etc/sysconfig/network-scripts/ifcfg-bond1
DEVICE=bond1
BOOTPROTO=static
ONBOOT=yes
IPADDR=10.10.10.18
NETMASK=255.255.255.0
GATEWAY=10.58.121.254
USERCTL=no
分析:很标准的配置,没有什么问题。在这里注意不要指定单个网卡的IP 地址、子网掩码或网卡 ID。将上述信息指定到虚拟适配器(bonding)中即可。
二、检查ifcfg-eth0、ifcfg-eth1、ifcfg-eth2、ifcfg-eth3文件
#cat &/etc/sysconfig/network-scripts/ifcfg-eth0
  DEVICE=eth0
  ONBOOT=yes
  BOOTPROTO=none
  MASTER=bond0
& & &SLAVE=yes
  USERCTL=no
& & &ETHTOOL_OPTS=&speed 1000 duplex full autoneg on&
  #cat &/etc/sysconfig/network-scripts/ifcfg-eth1
  DEVICE=eth1 & &
  ONBOOT=yes
  BOOTPROTO=none
  MASTER=bond1
& & SLAVE=yes
  USERCTL=no
& & ETHTOOL_OPTS=&speed 1000 duplex full autoneg on&
#cat & /etc/sysconfig/network-scripts/ifcfg-eth2
  DEVICE=eth2
  ONBOOT=yes
  BOOTPROTO=none
  MASTER=bond0
& & SLAVE=yes
  USERCTL=no
& & ETHTOOL_OPTS=&speed 1000 duplex full autoneg on&
  #cat &/etc/sysconfig/network-scripts/ifcfg-eth3
  DEVICE=eth3
  ONBOOT=yes
  BOOTPROTO=none
  MASTER=bond1
& & SLAVE=yes
  USERCTL=no
& & ETHTOOL_OPTS=&speed 1000 duplex full autoneg on&
分析:从配置文件上看是eth0和 eth2绑定为BOND0, eth1和 eth3绑定为BOND1.
(注:临时设置网卡的千兆全双工可以这样
ethtool -s eth0 speed 1000 duplex full autoneg on
ethtool -s eth1 speed 1000 duplex full autoneg on)
三、 检查modprobe.conf配置文件
# cat /etc/modprobe.conf
alias eth0 bnx2
alias eth1 bnx2
alias eth2 bnx2
alias eth3 bnx2
alias scsi_hostadapter megaraid_sas
alias scsi_hostadapter1 ata_piix
alias scsi_hostadapter2 lpfc
alias bond0 bonding
options bond0 miimon=100 mode=0
alias bond1 bonding
options bond1 miimon=100 mode=1
###BEGINPP & &
include /etc/modprobe.conf.pp
分析:从此文件看加入
alias bond0 bonding
options bond0 miimon=100 mode=0&
alias bond1 bonding
options bond1 miimon=100 mode=1
主要目的是使在启动时加载bonding模块,对外虚拟网络接口设备为 bond0、bond1
另外miimon是用来进行链路监测的。 比如:miimon=100,那么系统每100ms监测一次链路连接状态,如果有一条线路不通就转入另一条线路;mode的值表示工作模式,他共有0,1,2,3四种模式,常用的为0,1两种。
  mode=0表示load balancing (round-robin)为负载均衡方式,两块网卡都工作。
  mode=1表示fault-tolerance (active-backup)提供冗余功能,工作方式是主备的工作方式,也就是说默认情况下只有一块网卡工作,另一块做备份.
  注意:bonding只能提供链路监测,即从主机到的链路是否接通。如果只是交换机对外的链路down掉了,而交换机本身并没有故障,那么bonding会认为链路没有问题而继续使用。
& & & & 这部分的配置也没有问题。
  & &到这里似乎还没看到问题的所在,不过还有一个地方是大家容易忽视的,那就是rc.local文件,为了让网卡绑定在每次启动后都能立即生效,我们通常会设置 rc.local.所以我们还应检查一下这个文件。
四、检查rc.local文件
# cat &/etc/rc.d/rc.local
touch /var/lock/subsys/local
ifenslave bond0 eth0 eth1
ifenslave bond1 eth2 eth3 
分析:这样的设置方便开机启动时,自动载入配置。  
注意:这里是把 eth0和 eth1放到bond0里,eth2和 eth3放到bond1里。如果大家仔细回想的话,会发现在第二步检查当中是eth0和 eth2绑定为BOND0, eth1和 eth3绑定为BOND1的。看来问题的罪魁祸首就在这里,那么这样配置错了,会造成什么现象呢?
首先回顾一下网卡绑定的原理。我们知道,在正常情况下,ethernet网卡只接收目的mac地址是自身mac的ether帧,对于别的数据帧都过滤掉,以减轻驱动程序&&也就是软件的负担。但是ethernet网卡也支持另外一种被称为promisc的模式,可以接收网络上所有的帧,很多系统程序如:sniffer、tcpdump,都运行在这个模式下。Bonding网卡绑定也运行在这个模式下,而且修改了驱动程序中的mac地址,将两块网卡的mac地址改成相同,可以接收特定mac的数据帧。然后把相应的数据帧传送给bond驱动程序处理。
那么在我们检查的这个rc.local文件中,由于系统工程师的粗心把网卡绑定配置错了,这样一个细微的配置错误就会造成一个IP地址对应两个不同的MAC地址,显然会造成网络的延迟和不稳定,这跟ARP攻击比较像。当有多个不同MAC对应同样的IP,网络里面各机器包括对应这个IP的ARP会不停的变,包不是丢了就是发到错误的MAC了。 & &
我们可以检查一下各网卡的MAC来确认一下。
eth0 & & &Link encap:Ethernet &HWaddr D4:AE:52:7F:D1:74 &
& & & & & UP BROADCAST RUNNING SLAVE MULTICAST &MTU:1500 &Metric:1
& & & & & RX packets: errors:0 dropped:0 overruns:0 frame:0
& & & & & TX packets: errors:0 dropped:0 overruns:0 carrier:0
& & & & & collisions:0 txqueuelen:1000&
& & & & & RX bytes: (78.2 GiB) &TX bytes: (301.8 GiB)
& & & & & Interrupt:178 Memory:c12800
eth1 & & &Link encap:Ethernet &HWaddr D4:AE:52:7F:D1:76 &
& & & & & UP BROADCAST RUNNING SLAVE MULTICAST &MTU:1500 &Metric:1
& & & & & RX packets: errors:0 dropped:0 overruns:0 frame:0
& & & & & TX packets: errors:0 dropped:0 overruns:0 carrier:0
& & & & & collisions:0 txqueuelen:1000&
& & & & & RX bytes: (375.1 GiB) &TX bytes: (232.6 GiB)
& & & & & Interrupt:186 Memory:c12800
eth2 & & &Link encap:Ethernet &HWaddr D4:AE:52:7F:D1:74 &
& & & & & UP BROADCAST RUNNING SLAVE MULTICAST &MTU:1500 &Metric:1
& & & & & RX packets: errors:0 dropped:0 overruns:0 frame:0
& & & & & TX packets: errors:0 dropped:0 overruns:0 carrier:0
& & & & & collisions:0 txqueuelen:1000&
& & & & & RX bytes: (82.4 GiB) &TX bytes: (301.9 GiB)
& & & & & Interrupt:194 Memory:ca000000-ca012800
eth3 & & &Link encap:Ethernet &HWaddr D4:AE:52:7F:D1:76 &
& & & & & UP BROADCAST RUNNING SLAVE MULTICAST &MTU:1500 &Metric:1
& & & & & RX packets: errors:0 dropped:0 overruns:0 frame:0
& & & & & TX packets: errors:0 dropped:0 overruns:0 carrier:0
& & & & & collisions:0 txqueuelen:1000 &
& & & & & RX bytes: (372.8 GiB) &TX bytes: (232.6 GiB)
& & & & & Interrupt:202 Memory:cc000000-cc012800&
可以看到eth0和eth2的MAC是一样的,eth1和eth3的MAC是一样的。
针对问题原因,立即修改rc.local这个文件,改回正确的配置。
ifenslave bond0 eth0 eth2
ifenslave bond1 eth1 eth3 
然后重启服务器,再进行压测,发现果然一切正常了。
总结:双网卡的绑定是一个比较具体的操作工作,在配置当中我们不仅要熟悉了解它的原理,更要在部署实施时仔细认真,一个疏忽就会造成网络的不稳定和节点的瘫痪。
作者 xjsunjie申明:如需咨询官方售后问题,请提供在官网下单的订单资料(如电话,地址),以确保是我司用户,非官网直接用户,本司拒绝回答!谢谢合作!
Product List
卡王卡皇知识与教程
卡王使用常见问题
什么是无线卡王?
答:其实所谓的卡王就是一块大功率的USB无线网卡,这张“无线网卡”插在电脑上,会自动搜索邻居的无线网络,然后破解他的安全密码,强行“共享”他的无线网络。这就如强行蹭饭一样,所以这种网卡被叫做卡王。
卡王的使用前提
答:只要您所在的地方能接收到无线上网信号台式机和笔记本均可使用;(无线上网信号可通电脑测试得知,笔记本电脑可直接测试,台式机需有无线网卡才能测试,有的手机支持wifi的也可以测试;如您用的不是笔记本或台式机没有网卡可您可借用朋友或邻居的笔记本测试,如没有办法测试:只要确认您所在的地方是市区,比较繁华的地方一般均可使用)
为什么快递不让我试用好后再付款?
答:快递只负责派送快递的义务并且快递公司多有规定,因此不会等待用户试用,这需要比较长时间,派送员不会等待那么久,到货后您可以打开包装检查东西是否完整,是否与订购产品符合,是否有破损,如果没问题就可以签收付款。我们入库/发货前多会有专门技术负责测试没问题后再发货的,不会有质量问题,货到付款快递也是寄航空运,一般也不会在运输过程中损坏。如果安装或者使用上有问题可以打我们的电话寻求帮助。
卡王能接收到多大范围?
卡王在无障碍情况下能接收范围三千米以上距离的无线信号,比一般市面上普通无线网卡强10倍以上,实际有效距离跟具体使用环境而定,比如在室外会比室内信号好,信号源中间隔离的墙越多对信号影响就越大。。
无线卡王辐射大吗?
答:很多朋友担心800mw的功率是不是辐射很大啊!我打个比方,手机的功率一般在1500mw以上,山寨手机更是超过了这个值,比卡王辐射大多了!这款卡王才800mw,你觉得这个设备的辐射大吗? 网上查到的数据:GSM手机最大发射功率约2000mw,CDMA不到1000mw,这些数据大家可以自行网上核对,没必要编造,一般我们建议用户配一根五米长的延长线,把卡延长至阳台上,这样就完全不必要担心辐射的问题。
卡王上网速度怎么样?
答:这个是宽带无线路由网络,速度跟您链接的那个无线网络信号的宽带有关。现在的宽带大家牵的至少都是1兆的和2兆,所以该款卡王完全可以满足大家免费无线上网的需求。
你们提供的卡王质量和售后服务怎么样,怎么样保修?
答:本公司产品都是公司技术人员测试好以后再发货的,所发的每一个产品均无质量问题,本店产品均有一年保修(人为损坏和环境原因无信号除外),7天无理由退货服务,但是退货您必须保证商品(包装)完整退回。退换货来回运费由买家承担。这个不是霸王条款,您去电脑城购买产品,他们不会给您退货,最多给您换货,更不会给您报销回来车费。
使用卡王免费无线上网难吗,不会怎么办?
答:卡王就是一款USB即插即用设备,使用起来并不复杂,如果需要破密信号,我们把破解无线网络的软件和教程已经发布到网上和刻录成光盘,光盘会在您购买时附送给您。使用自动破解光盘很简单,拿到设备后,您先看着教程操作,确实还不会,我们会qq远程给您提供技术支持或者电话咨询,我们会耐心的指导,不怕您学不会。另外说明一点,不是在我们这买的不要来咨询我们怎么弄,哪买的找哪,我们的服务只针对我们的用户,不要浪费大家时间!!
使用卡王会被发现吗?
答:只要蹭网者不下载视频等大体积文件,一般不会对网速造成影响就不会被发现,要查看是否被人蹭网一般人不会操作的,即使被发现了也找不到是谁在蹭,最多是关掉信号不让你蹭,你就要换其他信号了。
卡王与我们普通的笔记本自带的无线网卡信号对比
卡王与我们普通的笔记本自带的无线网卡信号对比
从上面的图片我们可以看到,用我们普通的笔记本电脑搜索到的信号非常弱,只有一格信号,但是在使用卡王之后,只要笔记本搜索到的弱信号,都可以变成满格的信号,而且还能搜索到普通笔记本无法搜索到的信号源。
台湾无线天空城厂家直销,正品保证!如果您在本站购买的产品属仿冒产品,我们将十倍赔偿!!全国货到付款,收到产品验货后再给钱,安全购物有保障
&适用于TL-WN823N&V1.0版本网卡的驱动程序.想在台式机电脑上使用TP-LINK&TL-WN823N&300M&迷你型无线USB网卡,应该把它连到电脑的USB口上,然后电脑上装无线网卡的驱动。tl&wn823n无线驱动说明:这个驱动是从TP-LINK&TL-WN823N&300M迷你型无线USB网卡随卡光盘中复制出来的,如果你的原光盘驱动丢了,或者不方便从光盘安装驱动,可以使用这个。内附Utility配置工具安装数据包以及驱动程序。支持windowsXP/vista/win7_32及64位操作系统。附无线USB网卡配置指南。
&在安装Ginseng时,遇到了以下错误:在包含自&regions.c:32&的文件中:stats.c:34:26:&错误:linux/config.h:没有那个文件或目录make[4]:&***&[regions.o]&错误&1make[4]:&Leaving&directory&`/opt/ginseng1.2.2/banshee/libcompat'make[3]:&***&[libcompat]&错误&2make[3]:&Leaving&directory&`/opt/ginseng1.2.2/banshee'make[2]:&***&[banshee//dsu/dsu.o]&错误&2make[2]:&Leaving&directory&`/opt/ginseng1.2.2/cil'make[1]:&***&[setup]&错误&2make[1]:&Leaving&directory&`/opt/ginseng1.2.2/cil'make:&***&[setup]&错误&2复制代码
&一、初始化阶段&&&&网络初始化被调用的路径为:init-&do_basic_setup-&do_initcalls-&net_olddevs_init-&ethif_probe2-&probe_list2-&cs89x0_probe-&cs89x0_probe1真是不容易啊,终于进到cs89x0_probe1了,在这里开始探测和初始化cs8900了。下面就按照这个顺序来说明网络驱动第一阶段的工作。注意:这里的调用顺序是将cs8900驱动编入内核所产生的,如果将cs8900驱动选为模块,这个路径:init-&do_basic_setup-&do_initcalls-&net_olddevs_init-&ethif_probe2-&probe_list2也会执行。1.1&init函数我们知道当start_kernel函数完成后就会启动init进程执行,在真正的应用程序init进程(如busybox的/sbin/init)之前,Linux还需要执行一些初始化操作。init的代码可以在\init\main.c中找到,它的代码如下:static&int&init(void&*&unused)&&&&&&&{&&&&&&&&&&&&&&&lock_kernel();&&&&&&&&&&&&&&&&……&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&//省略多cpu的初始化代码先&&&&&&&&&&&&&&&&do_basic_setup();&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&//我们所关注的初始化函数&&&&&&&&&&&&&&&&……&&&&&&&&if&(!ramdisk_execute_command)&&&&&&&&&&&&&&&&&&&&ramdisk_execute_command&=&&/init&;&&&&&&if&(sys_access((const&char&__user&*)&ramdisk_execute_command,&0)&!=&0)&&&&{&&&&&&&&&&&&&&&&&&&&&ramdisk_execute_command&=&NULL;&&&&&&&&&&&&&&&&&&&&&prepare_namespace();&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&//挂接根文件系统&&&&&&&&&&&&&&&&&&&}&&&&&&&&&&&&&……free_initmem();&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&//释放初始化代码的空间&&&&&&&unlock_kernel();……&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&//这几段没看懂&&&&&&&if&(sys_open((const&char&__user&*)&&/dev/console&,&O_RDWR,&0)&&&0)&//检查控制台console是否存在&&&&&&&&&&&&&&printk(KERN_WARNING&&Warning:&unable&to&open&an&initial&console.\n&);……//这几段没看懂&&&&&&&if&(ramdisk_execute_command)&{&&&&&&&&&&&//运行ramdisk_execute_command指定的init用户进程&&&&&&&&&&&&&&run_init_process(ramdisk_execute_command);&&&&&&&&&&&&&&printk(KERN_WARNING&&Failed&to&execute&%s\n&,&&&&&&&&&&&&&&&&&&&&&&&&&&&&ramdisk_execute_command);&&&&&&&}&&&&&&&……&&&&&&&if&(execute_command)&{&&&&&&&//判断在启动时是否指定了init参数,如果指定,此值将赋给execute_command&&&&&&&&&&&&&&run_init_process(execute_command);&&&&&&&&&&&&&&//开始执行用户init进程,如果成功将不会返回。&&&&&&&&&&&&&&printk(KERN_WARNING&&Failed&to&execute&%s.&Attempting&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&defaults...\n&,&execute_command);&&&&&&&}//如果没有指定init启动参数,则查找下面的目录init进程,如果找到则不会返回&&&&&&&run_init_process(&/sbin/init&);&&&&&&&run_init_process(&/etc/init&);&&&&&&&run_init_process(&/bin/init&);&&&&&&&run_init_process(&/bin/sh&);&&&//如果上面的程序都出错,则打印下面的信息,如果内核找到init进程,则程序不会指向到此处&&&&&&&panic(&No&init&found.&Try&passing&init=&option&to&kernel.&);}1.2&do_basic_setup函数在这里我们最关心的是do_basic_setup函数,顾名思义该函数的功能就是“做基本设置”,它的实现代码也在\init\main.c中。do_basic_setup()完成外设及其驱动程序的加载和初始化。该函数代码如下所示:static&void&__init&do_basic_setup(void){&&&&&&&/*&drivers&will&send&hotplug&events&*/&&&&&&&init_workqueues();&&&&&//初始化工作队列&&&&&&&usermodehelper_init();&//初始化khelper内核线程,还没弄清楚&&&&&&&driver_init();&&&&&&&&&&&//初始化内核的设备管理架构需要的数据结构,很复杂,以后在谈这部分。#ifdef&CONFIG_SYSCTL&&&&&&&sysctl_init();&&&&&&&&&&//没搞懂#endif&&&&&&&do_initcalls();&&&&&&&&&//重点函数,初始化的主要工作就靠它了}1.3&do_&initcalls函数&&&&&&&do_initcalls函数将会调用内核中所有的初始化函数,它的代码同样在\init\main.c中。do_initcalls函数调用其他初始化函数相当简洁,它的关键代码如下所示:initcall_t&*for&(call&=&__initcall_&call&&&__initcall_&call&)&{……&&&&&&&result&=&(*call)();……}&&&&&&&简洁归简洁,但这段代码是什么意思呢?这说来就话长了,最重要的应该是先了解Linux处理初始化的大体思想,由于Linux有很多部分需要初始化,每个部分都有自己的初始化函数,如果按照常理一个一个的调用未免显得冗长,而且也不便于扩展。那么Linux是怎么处理的呢?首先,Linux将各个部分的初始化函数编译到一个块内存区中,当初始化完了以后释放这块内存区,这就是init函数中free_initmem所要做的事。然后,再在另外的内存区中存放一些函数指针,让每个指针指向一个初始化函数。然后在do_initcalls中依次根据这些指针调用初始化函数。上面一段就是Linux实现初始化的大体思想,下面我们看看它最终是怎么实现的。首先要了解的是__define_initcall宏,该宏的定义在\&include\linux\init.h中,它的原型如下所示:#define&__define_initcall(level,fn,id)&static&initcall_t&__initcall_##fn##id&__attribute_used__&\&&&&&&&__attribute__((__section__(&.initcall&&level&&.init&)))&=&fn__define_initcall宏有三个参数,level表示初始化函数的级别,level值的大小觉得了调用顺序,level越小越先被调用,fn就是具体的初始化函数,id简单标识初始化函数,现在还没找到有什么用^_^。__define_initcall的功能为,首先声明一个initcall_t类型的函数指针__initcall_##fn##id,initcall_t的原型为:typedef&int&(*initcall_t)(void);该类型可简单理解为函数指针类型^_^。然后,让该函数指针指向fn。最后,通过编译器的编译参数将此指针放到指定的空间&.initcall&&level&&.init&中,__attribute_used向编译器说明这段代码有用,即使在没用到的时候,编译器也不会警告。__attribute__的__section__参数表示该段代码放入什么内存区域中,也即指定编译到什么地方,编译参数更详细的地方可以查阅GCC文档,在gcc官方网站中能找到各个版本的手册。这样说来还是比较抽象,下面举个例子来说明:&&&&&&&假如有初始化函数init_foolish函数,现在使用__define_initcall宏向内核加入该函数。假如调用方式如下:__define_initcall(&0&,init_foolish,1);那么,__define_initcall宏首先申请一个initcall_t类型的函数指针__initcall_init_foolish1(注意替换关系),且使该指针指向了init_foolish,函数指针__initcall_init_foolish1被放到.initcall.0.init内存区域中,这个标志在连接时会用到。&&&&&&&有了上面的基础知识,现在回到do_initcalls函数中,首先注意到是__initcall_start和__initcall_end,它们的作用就是界定了存放初始化函数指针区域的起始地址,也即从__initcall_start开始到__initcall_end结束的区域中存放了指向各个初始化函数的函数指针。换句话说,只要某段程序代码从__initcall_start开始依次调用函数指针,那么就可以完成各个部分的初始化工作,这显得十分优雅而且便于扩充,再看看do_initcalls,它何尝不是如此呢。这里还有一个有用的技巧就是__initcall_start和__initcall_end的原型是initcall_t型的数组,以后可以使用这种技巧^_^。&&&&&&&现在我们知道了do_initcalls函数的实现原理,那么到底它调用了多少初始化函数呢?我们怎样才能知道呢?根据上面的分析,我们知道所有的初始化函数的指针都放在__initcall_start和__initcall_end区域期间,而函数指针与它指向的函数之间又有固定的关系,如上面的例子,初始化函数名为init_foolish,指向它的函数指针就是__initcall_init_foolish1,即在此函数加上前缀__initcall_和一个数字后缀,反之,从函数指针也可推出初始化函数名。有了这两个信息,我们就可以很方便的找个初始化函数。怎么找呢??首先打开Linux完后产生的System.map文件,然后找到__initcall_start和__initcall_end字符串,你会发现它们之间有很多类似于__initcall_xxx1这样的符号,这些符号就是我们需要的函数指针了,这样就可推出初始化函数的名字。比如,我们这里需要的函数指针__initcall_net_olddevs_init6,按照上面的名字规则,很容易推出它所指向的初始化函数名字是net_olddevs_init。&&&&&&&得到了初始化函数的名字又怎么样呢?又不知道它在哪个文件里,不要着急!请打开你的浏览器登陆网站,然后选择Linux版本和架构,然后可以搜索我们想要的信息。比如我输入net_olddevs_init,然后我就会得到该函数所在文件的相关信息。1.4&net_olddevs_init函数&&&&&&&我们知道net_olddevs_init函数在do_initcalls函数中被调用并执行,那么它到底要做什么呢?看看实现代码就知道了,它的实现代码可以在\drivers\net\Space.c中找到。对于网络驱动部分的主要实现代码如下:static&int&__init&net_olddevs_init(void){&&……&&&&&&&int&&&&&&&&for&(num&=&0;&num&&&8;&num)&&&&&&&&&&&&&&ethif_probe2(num);&&&&&&&……}这段代码就不用讲解了吧,嘿嘿!就是调用了8次ethif_probe2,赶快去看看ethif_probe2长什么样子。1.5&ethif_probe2函数&&&&&&&先看看该函数的实现代码,该代码也在\drivers\net\Space.c文件中。static&void&__init&ethif_probe2(int&unit){&&&&&&&unsigned&long&base_addr&=&netdev_boot_base(&eth&,&unit);&&&//&由于ethif_probe2被net_olddevs_init调用了8次,&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&//&所以unit的值为0~7,也即在这里可以注册eth0~eth7八个网络设备&&&&&&&if&(base_addr&==&1)&&&&&&&&&&&&&&
&Linux设备分类Linux下的设备通常分为三类,字符设备,块设备和网络设备。字符设备一个字符设备是一种字节流设备,对设备的存取只能按顺序按字节的存取而不能随机访问,字符设备没有请求缓冲区,所有的访问请求都是按顺序执行的。Linux下的大多设备都是字符设备。应用程序是通过字符设备节点来访问字符设备的。设备节点一般都由mknod命令都创建在/dev目录下,下面的例子显示了串口设备的设备节点。字符设备文件的第一个标志是前面的“c”标志。root#ls&-l&/dev/ttyS[0-3]crw-rw----&&1&root&&root&4,&64&Feb&18&23:34&/dev/ttyS0crw-r-----&&1&root&&root&4,&65&Nov&17&10:26&/dev/ttyS1crw-rw----&&1&root&&root&4,&66&Jul&&5&&2000&/dev/ttyS2crw-rw----&&1&root&&root&4,&67&Jul&&5&&2000&/dev/ttyS3字符设备是指那些只能按顺序一个字节一个字节读取的设备,但事实上现在一些高级字符设备也可以从指定位置一次读取一块数据。字符设备是面向数据流的设备,每个字符设备都有一个设备号,设备号由主设备号和次设备号组成。同时Linux使用管理文件相同的方法来管理字符设备,所以每个字符设备在/dev/目录下都有一个对应的设备文件,即设备节点,它们包含了设备的类型、主/次设备号以及设备的访问权限控制等,系统通过设备文件来对字符设备进行操作,每个字符设备文件都有自己的与普通文件相同的文件操作函数组结构(struct&file_operations)。字符设备驱动通常至少需要实现文件操作函数组中的open、release、read和write四种操作方法。常见的字符设备有鼠标、键盘、串口、控制台等。
&疑惑:既然所有新进程都是由fork产生的,而且由fork产生的子进程和父进程几乎完全一样,那岂不是意味着系统中所有的进程都应该一模一样了吗?而且,就我们的常识来说,当我们执行一个程序的时候,新产生的进程的内容应就是程序的内容才对。是我们理解错了吗?显然不是,要解决这些疑惑,就必须&提到我们下面要介绍的exec系统调用。  1&简介  说是exec系统调用,实际上在Linux中,并不存在一个exec()的函数形式,exec指的是一组函数,一共有6个,分别是:  int&execl(const&char&*path,&const&char&*arg,&...);  int&execlp(const&char&*file,&const&char&*arg,&...);  int&execle(const&char&*path,&const&char&*arg,&...,&char&*const&envp[]);  int&execv(const&char&*path,&char&*const&argv[]);  int&execvp(const&char&*file,&char&*const&argv[]);  int&execve(const&char&*path,&char&*const&argv[],&char&*const&envp[]);  其中只有execve&是真正意义上的系统调用,其它都是在此基础上经过包装的库函数。  exec函数族的作用是根据指定的文件名找到可执行文件,并用它来取代调用进程的内容,换句话说,就是在调用进程内部执行一个可执行文件&。这里的可执行文件既可以是二进制文件,也可以是任何Linux下可执行的脚本文件。  与一般情况不同,exec函数族的函数执行成功后不会返回,因为调用进程的实体,包括代码段,数据段和堆栈等都已经被新的内容取代,只留下进程&ID等一些表面上的信息仍保持原样,颇有些神似&三十六计&中的&金蝉脱壳&。看上去还是旧的躯壳,却已经注入了新的灵魂。只有调用失败了,它们才会返回&一个-1,从原程序的调用点接着往下执行。  现在我们应该明白了,Linux下是如何执行新程序的,每当有进程认为自己不能为系统和拥护做出任何贡献了,他就可以发挥最后一点余热,调用任&何一个exec,让自己以新的面貌重生;或者,更普遍的情况是,如果一个进程想执行另一个程序,它就可以fork出一个新进程,然后调用任何一个&exec,这样看起来就好像通过执行应用程序而产生了一个新进程一样。  事实上第二种情况被应用得如此普遍,以至于Linux专门为其作了优化,我们已经知道,fork会将调用进程的所有内容原封不动的拷贝到新产生的子  进程中去,这些拷贝的动作很消耗时间,而如果fork完之后我们马上就调用exec,这些辛辛苦苦拷贝来的东西又会被立刻抹掉,这看起来非常不&划算,于是人们设计了一种&写时拷贝(copy-on-write)&技术,使得fork结束后并不立刻复制父进程的内容,而是到了真正实用的时候才复&制,这样如果下一条语句是exec,它就不会白白作无用功了,也就提高了效率。  2&稍稍深入  上面6条函数看起来似乎很复杂,但实际上无论是作用还是用法都非常相似,只有很微小的差别。在学习它们之前,先来了解一下我们习以为常的main函数。  下面这个main函数的形式可能有些出乎我们的意料:  int&main(int&argc,&char&*argv[],&char&*envp[])  它可能与绝大多数教科书上描述的都不一样,但实际上,这才是main函数真正完整的形式。  参数argc指出了运行该程序时命令行参数的个数,数组argv存放了所有的命令行参数,数组envp存放了所有的环境变量。环境变量指的是一组值,从用户登录后就一直存在,很多应用程序需要依靠它来确定系统的一些细节,我们最常见的环境变量是PATH,它指出了应到哪里去搜索应用程序,如  /bin;HOME也是比较常见的环境变量,它指出了我们在系统中的个人目录。环境变量一般以字符串&XXX=xxx&的形式存在,XXX表示变量名,xxx表示变量的值。  值得一提的是,argv数组和envp数组存放的都是指向字符串的指针,这两个数组都以一个NULL元素表示数组的结尾。  我们可以通过以下这个程序来观看传到argc、argv和envp里的都是什么东西:/*&main.c&*/int&main(int&argc,&char&*argv[],&char&*envp[]){  printf(&\n###&ARGC&###\n%d\n&,&argc);  printf(&\n###&ARGV&###\n&);  while(*argv)  &&&&printf(&%s\n&,&*(argv++));  printf(&\n###&ENVP&###\n&);  while(*envp)  &&&&printf(&%s\n&,&*(envp++));return&0;}  编译它:  $&cc&main.c&-o&main  运行时,我们故意加几个没有任何作用的命令行参数:&&&&&&&./main&-xx&000&&&&&&结果如下:###&ARGC&###3
&在阅读源码之前,还应知道Linux内核源码的整体分布情况。现代的操作系统一般由进程管理、内存管理、文件系统、驱动程序和网络等组成。Linux内核源码的各个目录大致与此相对应,其组成如下(假设相对于Linux-2.4.23目录):&arch目录包括了所有和体系结构相关的核心代码。它下面的每一个子目录都代表一种Linux支持的体系结构,例如i386就是Intel&CPU及与之相兼容体系结构的子目录。PC机一般都基于此目录。&

我要回帖

更多关于 卡皇rtl8187驱动win7 的文章

 

随机推荐