Soundblaster 16 PnP Mini-Howto 如何在Linux设定16位P
原始文件:LinuxSoundblaster16PnPMini-Howto
档案叙述:如何在Linux设定Soundblaster16PnP音效卡
翻译日期:1997/11/20
翻译维护:cwhuang@phys.ntu.edu.tw
----------------------------------------------------------------------------------------------
LinuxSoundblaster16PnPMini-Howto
byEricZ.Ayers
v1.0,14January1997
很高兴地,我的太太给我一块崭新的音效卡作为生日礼物.但不幸地,这块
Soundblaster16PnP音效卡拒绝在Linux下工作.事实上,我的3com
3c509网路卡也不能在Linux下运作.
最後,在随附核心而来的Linux音效卡驱动程式及由
ftp://ftp.redhat.com/pub/utils/isapnptools-1.8.tgz取得的
isapnp套件的协助下我终於让我的硬体能运作了.
结果是我必须面对两项主要的困难以便让音效卡能工作.第一个困难是我不
知道用来和音效卡沟通的IRQ及输出入埠(IOports)位址.这点由isapnp
工具套件所解决.第二个问题是3c509乙太网路卡.似乎不论我怎麽去改变
卡上的设定,Linux的核心都没办法认出这块乙太网路卡.结果是因为有一
个音效卡上的装置和3c509的侦测程式码相冲.
1)安装isapnp套件.编辑/etc/isapnp.conf使得音效卡的IRQ及输出
入埠位址不会和你的任何其它装置相冲.
2)重建Linux核心.将音效支援变成一可载入模组,其中IRQ,输出入及
DMA位址就如isapnp.conf所配置的.同时也将你的3c509做成一模组
(在编译及安装完你的核心之後不要忘了执行makemodules及make
modules_install).
3)修改你系统的启动程序稿.
我在跑的是Slackware套件而核心版本是2.0.23.在网路被设定之前,我
执行isapnp程式(在/etc/rc.d/rc.M里就在hostname被设定之後):
#EZA
#设定即插即用装置
/sbin/isapnp/etc/isapnp.conf
然後,我在/etc/rc.d/rc.inet1所做的第一件事是载入网路卡驱动程式
#EZA
#载入网路卡模组
/sbin/insmod3c509
我忽略了启动时动态侦测乙太网路卡无法运作的警告讯息,因为它对我没
有影响.最後,在/etc/rc.d/rc.local里我插入了音效卡驱动程式模组:
/sbin/insmodsound
更多关於Linux即插即用装置的资讯可在
http://www.redhat.com/linux-info/pnp/找到.我现在快乐地以
Real-Audioplayer享用网路并且聆听由我的光碟机所拨放的CD音乐.
EricAyers
eric.ayers@compgen.com
---------------------------------------------------------------------------
这儿有份我的isapnp.conf的拷贝,大部份的注解都已去掉.
#Tryingportaddress0203
#Board1hasserialidentifier67000040172b008c0e
#(DEBUG)
(READPORT0x0203)
(ISOLATE)
(IDENTIFY*)
#Card1:(serialidentifier67000040172b008c0e)
#CTL002bSerialNo16407[checksum67]
#Version1.0,Vendorversion2.0
#ANSIstring-->CreativeSB16PnP<--
#
#LogicaldeviceidCTL0031
#
#Edittheentriesbelowtouncommentouttheconfigurationrequired.
#Notethatonlythefirstvalueofanyrangeisgiven,thismaybechangedifrequired
#Don'tforgettouncommenttheactivate(ACTY)whenhappy
(CONFIGURECTL002b/16407(LD0
#ANSIstring-->Audio<--
#Multiplechoicetime,chooseoneonly!
#Startdependentfunctions:prioritypreferred
#IRQ5.
#Hightrue,edgesensitiveinterrupt(bydefault)
(INT0(IRQ5(MODE+E)))
(DMA0(CHANNEL1))
(DMA1(CHANNEL5))
(IO0(BASE0x0220))
(IO1(BASE0x0330))
(IO2(BASE0x0388))
(ACTY)
))
(CONFIGURECTL002b/16407(LD1
(INT0(IRQ11(MODE+E)))
(IO0(BASE0x01e8))
(IO1(BASE0x03ee))
(ACTY)
))
(CONFIGURECTL002b/16407(LD2
#ANSIstring-->StereoEnhance<--
#Logicaldevicedecodes16bitIOaddresslines
#MinimumIObaseaddress0x0100
#MaximumIObaseaddress0x0138
#IObasealignment8bytes
#NumberofIOaddressesrequired:1
#(IO0(BASE0x0100))
#(ACTY)
))
(CONFIGURECTL002b/16407(LD3
(IO0(BASE0x0200))
(ACTY)))