免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 916 | 回复: 0
打印 上一主题 下一主题

硬件和体系结构学习笔记《二》 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-02-24 16:04 |只看该作者 |倒序浏览
调制解调器和声卡

调制解调器
调制解调器(modem)(来自 modulator/demodulator)是用来将计算机中所使用的数字信号转换为通过电话线传输的连继模拟数据流的设备。在早期的 PC 中,调制解调器是连接到串行端口的外部设备。后来,调制解调器被做成一张设备卡,可以安装到计算机的内部,节省了空间和电源,也不再需要串行端口和调制解调器之间的线缆。当某些通常由调制解调器完成的功能转移给 PC 中的软件后,又一次降低了开销。
有些需要 PC 操作系统提供软件支持的调制解调器也可以在 Linux 中使用,此类可用调制解调器的列表还正在不断增长。在 Linux 中应用的需要软件支持的调制解调器通常称作 linmodems,有一个专门的站点(linmodems.org)。如果有这种调制解调器,那么首先要查看 linmodems 站点(见 参考资料),并下载最新版本的 scanModem 工具。它会告诉您关于您的调制解调器可用的驱动程序(如果有)的情况。

如果有一个 ISA 调制解调器,那么需要确保端口、IRQ 和 DMA 通道与其他设备不相冲突。查看先前的章节 BIOS 设置 来了解另外的信息。

本节中所讨论的调制解调器是 异步的(asynchronous) 调制解调器。另外有一类称作 同步(synchronous) 调制解调器,用于 HDLC、SDLC、BSC 或 ISDN简言之,我们可以认为异步传输所传输的是信息的单个字节,而同步通信是传输整个信息块。

大部分 Linux 通信是使用 Internet Protocol(IP)来完成的。所以,Linux 系统需要异步线路上使用看起来像是 IP 的协议,那种线路原本并不是为 IP 等块协议而设计的。完成此任务的第一种方法叫做 Serial Line Interface Protocol(SLIP)。使用压缩头的一个变种称作 CSLIP。当前,大部分 Internet 服务提供商(Internet Service Providers,ISP)支持使用 Point-to-Point Protocol(PPP)的拨号连接。
在 Linux Documentation Project 可以找到 Linux Networking-HOWTO 和 The Network Administrators' Guide (见 参考资料),它们提供了关于 SLIP、CSLIP 和 PPP 配置的资料。

当使用调制解调器进行通信时,可能需要在 Linux 系统中进行很多设置。
最重要的是,需要设置系统与调制解调器之间的通信速度这个速度通常比额定的线路速度更高,通常设置为串行端口和调制解调器所支持的最大值
设置或查看串行驱动器将要使用的调制解调器参数的一个途径是使用 setserial 程序。在清单 13 中演示了 setserial 命令。注意,-G 选项会以适于使用 setserial 设置参数的格式打印输出。在本例中, UART(Universal Asynchronous Receiver Transmitter)是具有缓存的 16550,它是在现代 PC 中常见的 UART。速度设置为 115,200 bps,这也是此 UART 和大部分较新的外置 56kbps 调制解调器所常用的。注意,在某些较新的系统中,默认速度可能设置得高达 460,800bps。如果调制解调器不能响应,那么可能应该首先检查这一设置。
清单 13. setserial 命令

[root@attic4 ~]# setserial /dev/ttyS0
/dev/ttyS0, UART: 16550A, Port: 0x03f8, IRQ: 4
[root@attic4 ~]# setserial -G /dev/ttyS0
/dev/ttyS0 uart 16550A port 0x03f8 irq 4 baud_base 115200 spd_normal skip_test

需要注意一点是,setserial 不会去检测硬件。它能做的所有事情就是告诉串行驱动程序要使用哪个参数,如果不使用 autoconfig 和 auto_irq 参数的话。在本例中,setserial 会要求内核去检测硬件。查看 setserial 的手册页,以获得此命令的这些选项以及其他选项的更多资料。
kppp 程序有一个非常好用的 GUI,易于使用。wvdial 命令提供了建立拨号连接的智能命令行工具。除了这些以外,发行版本可能会有其他工具,或者是专门用于 PPP 或拨号连接,或者是作为更通用的网络配置工具的一部分,比如 Fedora Core 4 中的 system-config-network。
流控制(flow control) 是调制解调器通信的另一个问题,它通常受通信程序的控制,但可以被设置,或者在调制解调器本身中设置默认值。这是当接收端清除数据缓冲区时,一端告知另一端进行等待的一个途径。这可以在软件中通过发送 XON 和 XOFF 字符来完成。首选的方式是 硬件流控制(hardware flow control),这也是 PPP 连接所使用的方式,在这种方式中,使用特定调制解调器信号线的状态来表示已经准备好接收数据。所使用的信号是 Clear to Send(CTS)和 Ready to Send(RTS),所以会经常看到这会被描述为使用 RTS/CTS 的流控制,或者类似的说法。图 4 展示了如何使用 kppp 程序设置速度和硬件流控制。
图 4. 使用 kppp 配置调制解调器参数



声卡
声音端口(Sound Blaster)
Creative Labs Sound Blaster 系列声卡已经为声卡建立了事实上的工业标准。最初的 Sound Blaster 声卡是 8-位 的,用于原来的 IBM PC 中。后来的用于 PC-AT 和兼容结构的 16-位 模型使用了 16-位 PC-AT 或 ISA 总线。当前,大部分声卡使用 PCI 总线。很多母板甚至板载了具备 Sound Blaster 兼容性的声音芯片。
ISA 总线 Sound Blaster 声卡所使用的端口是 0220-022F,不过通常可以配置为基地址 240、260 或 280。与之类似,IRQ 也通常是可配置的,常见的选择是 2、5、7 或 10。默认设置是使用 IRQ 5。通常也可以配置声卡来使用另外的 DMA 通道。
与所有 ISA 设备一样,需要确保端口、IRQ 和 DMA 通道不与其他设备冲突。MIDI 端口(MPU-401)
很多声卡还拥有连接 MIDI(Musical Instrument Digital Interface 的缩写)设备的接口。通常,这个接口会模拟 Roland MPU-401。 MPU-401 ISA 接口使用的标准端口是 0200-020F。
与所有 ISA 设备一样,需要确保端口、IRQ 和 DMA 通道不与其他设备冲突。配置 Linux 声音支持
较新的 2.4 和 2.6 内核都在内核中为多种声音设备构建了声音支持,通常是以模块的形式实现的。与其他设备相同,可以使用针对 ISA 设备的 pnpdump 命令或者针对 PCI 设备的 lspci 命令来显示关于设备的信息。清单 14 是对系统母板上的 Intel 声音系统执行 lspci 命令的输出。
清单 14. 使用 lspci 显示声音资源
  
[root@lyrebird root]# lspci | grep aud
00:1f.5 Multimedia audio controller: Intel Corporation 82801DB/DBL/DBM
               (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (rev 01)

内核模块是提供对各种设备的支持的首选方式。只需要为实际存在的设备加载模块,不需要重新引导 Linux 系统就可以卸载或者重新加载它们。
对于 2.4 及更早的内核而言,模块配置信息存储在 /etc/modules.conf 中
对于 2.6 内核,内核模块系统经过了重新设计,此信息现在存储在 /etc/modprobe.conf 中。无论哪种情形,lsmod 命令都会格式化 /proc/modules 的内容,并显示已加载模块的状态。
清单 15 展示了 2.6 内核 /etc/modprobe.conf 的内容,清单 16 展示了与这个系统中声音设备相关的 lsmod 输出。
清单 15. 示例 /etc/modprobe.conf(2.6 内核)
  
[root@attic4 ~]# cat /etc/modprobe.conf
alias eth0 e100
alias snd-card-0 snd-intel8x0
install snd-intel8x0 /sbin/modprobe --ignore-install snd-intel8x0 &&\
/usr/sbin/alsactl restore >/dev/null 2>&1 || :
remove snd-intel8x0 { /usr/sbin/alsactl store >/dev/null 2>&1 || : ; }; \
/sbin/modprobe -r --ignore-remove snd-intel8x0
alias usb-controller ehci-hcd
alias usb-controller1 uhci-hcd

清单 16. lsmod 与声音相关的输出(2.6 内核)
   
[root@attic4 ~]# lsmod |egrep '(snd)|(Module)'
Module                  Size  Used by
snd_intel8x0           34689  1
snd_ac97_codec         75961  1 snd_intel8x0
snd_seq_dummy           3653  0
snd_seq_oss            37057  0
snd_seq_midi_event      9153  1 snd_seq_oss
清单 17 展示了 2.4 内核 /etc/modules.conf 的内容,清单 18 展示了与这个系统中声音设备相关的 lsmod 输出。注意 modules.conf 文件和 modprobe.conf 文件的相似之处。
清单 17. 示例 /etc/modules.conf (2.4 内核)
   
[root@lyrebird root]# cat /etc/modules.conf
alias eth0 e100
alias usb-controller usb-uhci
alias usb-controller1 ehci-hcd
alias sound-slot-0 i810_audio
post-install sound-slot-0 /bin/aumix-minimal -f /etc/.aumixrc -L >/dev/null 2>&1 || :
pre-remove sound-slot-0 /bin/aumix-minimal -f /etc/.aumixrc -S >/dev/null 2>&1 || :

清单 18. lsmod 与声音相关的输出(2.4 内核)
   
Module                  Size  Used by    Not tainted
smbfs                  43568   1  (autoclean)
i810_audio             28824   0  (autoclean)
ac97_codec             16840   0  (autoclean) [i810_audio]
soundcore               6436   2  (autoclean) [i810_audio]
st                     30788   0  (autoclean) (unused)

在很多 2.4 和更早的系统中,声音支持是通过 Open Sound System (OSS) Free 驱动程序提供的。现在很多系统使用 Advanced Linux sound architecture(ALSA)驱动程序。Reh Hat 创建了 sndconfig 来帮助配置 ISA PnP 声卡。它也可用于 PCI 声卡。在不使用 ALSA 驱动程序的系统中可能会有这个工具,尽管较新的模块支持已经使它几乎没有用武之地。这个工具会检测声卡,发出 Linus Torvalds 说话的测试声音,然后更新 /etc/modules.conf 文件。典型的操作如图

图 6. sndconfig 工具



本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/4929/showart_78129.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP