(8)g 玩转Linux下的Modem
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
玩转Linux下的Modem
Modem可谓Linux下最难搞定的设备之一,它是我们使用Linux时许多失望和喜悦的源泉。本文介绍Modem相关的各种问题,比如端口、中断、PnP以及Modem 检测、网络配置,等等。
端口与Modem类型
计算机有许多连接其内部和外部世界的接口,部分接口是专用的,例如键盘接口只能连接键盘而不能连接任何其他设备,连鼠标也不能。
连接外部设备的多用途接口称为“端口”(Port)。大多数PC机都带有两个串行端口和一个并行端口。串行端口用一条线路串行传送数据,每次传送一个数据位,接收后再组合成字节。并行端口使用八条线路每次并行传送8个数据位。大多数家用打印机都连接到PC的并行端口。
Modem是一种通过电话线路传送数字信息的设备。我们知道,电话系统原本只为传送语音信息而设计,Modem技术突破了这一局限,它能够调制(modulate)数字信息,把数字信息转换成可以通过电话线路发送的模拟信号。在接收端,模拟信号重新被转换成数字信号(即解调,demodulate)。Modem这个词就是从modulator-demodulator缩写得到。
Modem发明于串行口广泛应用的时代。那时的Modem都是独立在计算机外的设备,通过电缆连接到串行口。今天我们仍可以见到这种外置的Modem,但更多的是插入主板的Modem卡,即内置Modem。由于大多数计算机都带有二个串行口,内置Modem通常增加第三个端口。
外置Modem的设置一般都相当简单,只需接好串行口和Modem之间的电缆、接上电话线、开启电源,大多数外置Modem就能直接开始工作。
内置Modem刚出现时,它的板子上总是带有所有通信所需的电路元件,并提供设置地址和IRQ的跳线。硬件厂商总是在寻求降低成本的途径。随着PC功能越来越好,Modem厂商开始用软件来替代部分电路元件,这些Modem称为软Modem 或Winmodem。软Modem价格低廉,它用设备驱动程序来完成原来必须由Modem 卡电路元件完成的部分任务。
软Modem的问题在于它的驱动程序是为Windows而不是为Linux编写的。虽然不存在什么特别的原因使得这种驱动程序的Linux版本无法编写,不过这最终
还得看Modem厂商。到目前为止还没有厂商这么做。这就意味着软Modem不能在Linux下工作。
购买Modem时应注意它是否注明了Linux兼容。软Modem的清单可以在/~gromitkc/winmodem.html找到。根据经验,如果Modem包装盒注明了“HCF”、“HSP”、“Winmodem”或“soft modem”字样,那么它很可能不能用于Linux。
总线、中断、地址和PnP
PC机的大多数配件都和CPU、内存一起直接插入主板。主板提供许多扩展卡的接口,供显示卡、Modem之类的设备接入使用。现在也有许多主板直接集成这些功能,因此也就不需要再加这些扩展卡。许多集成到主板的Modem都可以顺利地在Linux下工作。
主板上的接口连接到系统总线。总线有许多类型,较早的PC使用ISA总线,新的PC使用PCI总线。还有其他一些总线类型,但通常只涉及这两种总线。这些总线的物理和电学特性都是不兼容的,ISA卡绝不能插入PCI插槽,因此购买Modem之前一定要搞清楚可以使用的总线。除非你的机器非常古老,一般它会支持PCI。
在计算机和新插入的卡建立联系之前,计算机必须知道该卡的I/O地址(输入/输出地址)和中断请求线。
当计算机想要和插入系统总线的卡通信时,它通过发送I/O地址来选中该卡。每块卡都只应答自己的地址,所有卡都必须有不同的地址,
中断(Interrupt)稍微复杂一点。当我们在浏览器中输入一个URL地址,就会建立与目标网站的连接,Modem开始接收数据;与此同时,计算机还可以做其他事情,比如监视鼠标状态、打印输出等等。计算机不应该单独排外地专注于一件事情,应该有一种方法让Modem告诉计算机说:“打扰一下,这儿有传送给你的数据”。这种方法就是中断。
每一个中断都有一个独一无二的编号,称为IRQ。IRQ是Interrupt ReQuest 的缩写。中断的数量很多,必须搞清楚每一个中断被分配到了什么设备上。例如,如果中断来自Modem,就不应该去检查鼠标。
早期的扩展卡提供跳线让用户设置其I/O地址和IRQ。这种方法很容易出错,比如容易把两块卡设置成相同的地址或IRQ。为解决这个问题,软硬件厂商们共同建立了一个标准,这个标准允许计算机主动地查询各个扩展卡并分配I/O地址和IRQ。它不仅使得地址和IRQ的分配自动化,同时也避免了可能出现的冲突。这个标准就是“即插即用”,即Plug and Play,简称PnP。
计算机启动时首先运行的软件是BIOS(Basic Input Output System)。BIOS 唤醒计算机的所有设备,简单地检查计算机安装了哪些设备,然后装入操作系统。PnP设备的许多配置工作均由BIOS完成,但也有部分工作要由操作系统完成。Linux还未能提供完善的PnP支持,虽然许多PnP设备可配置成在Linux下工作,但也有许多不能。
如果Linux没有初始化某个PnP设备,不要马上对此绝望,很有可能存在解决方法。请查看isapnp工具的文档,Modem-HOWTO同样可以提供帮助。如果兼容设备清单包含了该类Modem,不管它是不是PnP的,很可能无需任何额外的努力它就可以顺利地工作。
安装Modem最常见的问题有三个:I/O地址或IRQ设置冲突,使用的是软Modem,不完善的PnP支持导致Modem配置错误。
配置拨号网络
Modem接入计算机之后,怎样才能找到它?
如果Modem是外置式的,那么你应该清楚它连接到了COM1还是COM2。如果Modem是内置式的,那么它很可能连接到COM3。COM1、COM2这类名字是Microsoft 对串行端口的称呼。在Linux中,COM1被称为/dev/ttyS0, COM2是/dev/ttyS1,而COM3 则是/dev/ttyS2。在较早的Linux中,COM端口可能分别叫做/dev/cua0、/dev/cua1以及/dev/cua2。
如果Modem是在Linux安装期间配置的,那么/dev目录下会生成/dev/modem。这应该是一个指向Modem正确端口的连接。要查看/dev/modem指向了何处,在X终端输入命令file /dev/modem。输出结果应当类如: