如何在LINUX下实现硬件的自动检测下 -Linux伊甸园----Linux|U 服务器硬件设计与实现

用户名 密码 注册通行证

网友投递快速反应信箱:  设为首页 加入收藏 RSS

Linuxeden是中国最大的开源资讯门户

首页

新闻

软件

评论

博客

论坛

商城

人才

广告

加入Eden

联系我们

投稿

产品库

新闻

入门

前沿

系统管理

网络管理

使用经验

编程开发

安全

解决方案

硬件相关

Unix

数据库

观点

人物

新手

服务器

中文化

RedHat

Fedora

Debian

Ubuntu

Mandriva

Mysql

php

Shell

C++

嵌入

茶馆
如何在LINUX下实现硬件的自动检测(下)-Linux伊甸园----Linux|U 服务器硬件设计与实现





当前位置: :Linuxeden主页>硬件相关>



顶一下

如何在LINUX下实现硬件的自动检测(下)

不容错过的IBM集群技术资源汇总



内容:

5.USB设备的自动检测

6.并行设备的自动检测

7.PCMCIA设备自动检测

关于作者

相关内容:

如何在LINUX下实现硬件的自动检测(上)

于辰涛 (scu_yct@263.net)

联想(北京)电脑公司软件工程师

2001 年 7 月

本文是《如何在LINUX下实现硬件的自动检测》一文的下部分,作者将继续向我们讲述如何自动检测另外几种总线类型硬件设备。

5 .USB设备的自动检测

5.1 USB设备检测的一般过程

USB设备检测也是通过/proc目录下的USB文件系统进行的。为了使一个USB设备能够正常工作,必须要现在系统中插入USB桥接器模块。在检测开始时,一般要先检测是否存在/proc/bus/usb目录,若不存在则尝试插入USB桥接模块。

现 在一般的USB桥接器模块有两种类型,UHCI和OHCI。在决定插入那一个桥接器模块时,可以察看/proc/pci文件来决定。打开此文件,您若发现 USB节为I/O at 0xHHHH格式(例如出现 I/O at 0xe000 [0xe01f]),HHHH为16进制数,则桥接器类型为UHCI。若是它为32 bit memory at 0xHH000000形式(例如出现32 bit memory at 0xee000000),HH为16进制数,则桥接器类型为OHCI。但是若您的桥接器类型不满足上述任何一种情况,唯一的解决办法就是您尝试插入这两种 模块,直到成功为止。一般而言,UHCI类型的桥接器它的插入模块是uhci或usb-uhci(由内核版本决定);而对于OHCI类型的桥接器它的插入 模块是ohci或usb-ohci。

您在正确的插入了桥接器模块之后,这时/proc文件系统下就会出现USB设备目录,不过这时这个目 录是空的,没有任何文件。这时您就必须挂接usbdevfs文件系统,然后通过此文件系统检测连接的设备。在成功挂接usb文件系统之后,就会生成文件 /proc/bus/usb/devices,/proc/bus/usb/drivers和目录/proc/bus/usb/busNo。挂接 usbdevfs文件您可以通过如下操作实现:

mount -t usbdevfs none /proc/bus/usb

或在/etc/fstab上加入

none /proc/bus/usb usbdevfs defaults 0 0

然后通过/proc/bus/usb/devices文件的内容,您就可以获得连接的设备信息,包括设备标识和制造商标是等信息。

usb设备类型描述: 设备规范 设备类码 接口类码

应用程序特定 - 0xFE

声音接口 0x00 0x01

通信设备 0x02 -

CDC控制接口e - 0x02

CDC数据接口 - 0x0A

HID 0x00 0x03

HUB 0x09 0x09

批量存储设备 0x00 0x08

监视器 same as HID same as HID

电源设备 same as HID same as HID

物理设备 - 0x05

打印机 - 0x07

供应商特定 - 0xFF

表5-1 usb设备类码

5.2 usb文件系统简介

T = 总线拓扑结构(Lev, Prnt, Port, Cnt, 等),是指USB设备和主机之间的连接方式

B = 带宽 (仅用于USB主控制器)

D = 设备描述信息

P = 产品标识信息

S = 串描述符

C = 配置描述信息 (* 表示活动配置)

I = 接口描述信息

E = 终端点描述信息

一般格式:

d = 十进制数

x = 十六进制数

s = 字符串

拓扑信息

T: Bus=dd Lev=dd Prnt=dd Port=dd Cnt=dd Dev#=ddd Spd=ddd MxCh=dd

| | | | | | | | |__最大子设备

| | | | | | | |__设备速度(Mbps)

| | | | | | |__设备编号

| | | | | |__这层的设备数

| | | | |__此设备的父连接器/端口

| | | |__父设备号

| | |__此总线在拓扑结构中的层次

| |__总线编号

|__拓扑信息标志

带宽信息

B: Alloc=ddd/ddd us (xx%), #Int=ddd, #Iso=ddd

| | | |__同步请求编号

| | |__中断请求号

| |__分配给此总线的总带宽

|__带宽信息标志

设备描述信息和产品标识信息

D: Ver=x.xx Cls=xx(s) Sub=xx Prot=xx MxPS=dd #Cfgs=dd

P: Vendor=xxxx ProdID=xxxx Rev=xx.xx

D: Ver=x.xx Cls=xx(sssss) Sub=xx Prot=xx MxPS=dd #Cfgs=dd

| | | | | | |__配置编号

| | | | | |______缺省终端点的最大包尺寸

| | | | |

| | | | |__设备协议

| | | |__设备子类型

| | |__设备类型

| |__设备USB版本

|__设备信息标志编号#1

P: Vendor=xxxx ProdID=xxxx Rev=xx.xx

| | | |__产品修订号

| | |__产品标识编码

| |__制造商标识编码

|__设备信息标志编号#2

串描述信息

S: Manufacturer=ssss

| |__设备上读出的制造商信息

|__串描述信息

S: Product=ssss

| |__设备上读出的产品描述信息,对于USB主控制器此字段为"USB *HCI Root Hub"

|__串描述信息

S: SerialNumber=ssss

| |__设备上读出的序列号,对于USB主控制器它是一个生成的字符串,表示设备标识

|__串描述信息

配置描述信息

C: #Ifs=dd Cfg#=dd Atr=xx MPwr=dddmA

| | | | |__最大电流(mA)

| | | |__属性

| | |__配置编号

| |__接口数

|__配置信息标志

接口描述信息(可为多个)

I: If#=dd Alt=dd #EPs=dd Cls=xx(sssss) Sub=xx Prot=xx Driver=ssss

| | | | | | | |__驱动名

| | | | | | |__接口协议

| | | | | |__接口子类

| | | | |__接口类

| | | |__中断点数

| | |__可变设置编号

| |__接口编号

|__接口信息标志

终端点描述信息

E: Ad=xx(s) Atr=xx(ssss) MxPS=dddd Ivl=dddms

E: Ad=xx(s) Atr=xx(ssss) MxPS=dddd Ivl=dddms

| | | | |__间隔

| | | |__终端点最大包尺寸

| | |__属性(终端点类型)

| |__终端点地址(I=In,O=Out)

|__终端点信息标志

举个例子,这是在连接了一个USB键盘时的配置情况。

T: Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=12 MxCh= 2

B: Alloc= 41/900 us ( 5%), #Int= 3, #Iso= 0

D: Ver= 1.00 Cls=09(hub ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1

P: Vendor=0000 ProdID=0000 Rev= 0.00

S: Product=USB UHCI Root Hub

S: SerialNumber=e000

C:* #Ifs= 1 Cfg#= 1 Atr=40 MxPwr= 0mA

I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub

E: Ad=81(I) Atr=03(Int.) MxPS= 8 Ivl=255ms

T: Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 2 Spd=12 MxCh= 3

D: Ver= 1.10 Cls=09(hub ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1

P: Vendor=07e4 ProdID=a961 Rev= 0.01

S: Manufacturer=ALCOR

S: Product=Movado USB Keyboard

C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=100mA

I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub

E: Ad=81(I) Atr=03(Int.) MxPS= 1 Ivl=255ms

T: Bus=01 Lev=02 Prnt=02 Port=00 Cnt=01 Dev#= 3 Spd=12 MxCh= 0

D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1

P: Vendor=07e4 ProdID=a961 Rev= 0.01

S: Manufacturer=ALCOR

S: Product=Movado USB Keyboard

C:* #Ifs= 2 Cfg#= 1 Atr=e0 MxPwr= 0mA

I: If#= 0 Alt= 0 #EPs= 1 Cls=03(HID ) Sub=01 Prot=01 Driver=hid

E: Ad=81(I) Atr=03(Int.) MxPS= 8 Ivl= 10ms

I: If#= 1 Alt= 0 #EPs= 1 Cls=03(HID ) Sub=00 Prot=00 Driver=hid

E: Ad=82(I) Atr=03(Int.) MxPS= 4 Ivl=255ms

它的物理拓扑可用下图来表示:



对于Linux下的usb设备而言,T:(总线拓扑)行用于生成连接在hub上的设备的描述信息,I:(接口信息)行可用于决定每个设备所用的驱动程序,C:(配置信息)可用于列出设备使用最大电流。

对于Linux下的usb设备,您可以访问http://www.linux-usb.org获取更详细的信息。

6 并行设备的自动检测

6.1 并行设备检测的一般过程

在Linux 下要实现连接在并口上的设备检测,要求设备必须是支持IEEE 1284协议的。对于不支持IEEE 1284通讯协议的并行设备,是无法完成自动检测的。同样在定制系统内核时,也必须在并行端口支持(Parallel port support)选项中选中IEEE 1284 transfer mode这一项。在并口检测开始时,检测程序应检查是否存在/proc/sys/dev/parport目录(针对2.4.x内核),若不存在则尝试插入 模块parport。加载parport模块一般有三种方式:

静态插入模块

insmod parport.o

或 insmod parport_pc.o io=0x3bc,0x378,0x278 irq=none,7,auto

废除系统缺省的检测值

kmod(/etc/modules.conf)加载

alias parport_lowlevel parport_pc

options parport_pc io=0x378,0x278 irq=7,auto

内核的并口探测程序用于获得IEEE 1284设备标识信息。在并口被检测时,连接到其上的设备被分析。探测的信息在/proc/sys/dev/parport/。

在编译并口代码进入内核之后,使用内核加在参数

如:加入LILO命令行

parport=0x3bc parport=0x378,7 parport=0x278,auto,nofifo

parport=0

禁止内核parport支持

parport=auto

内核自动检测

在 成功的插入了此模块之后,这时/proc文件系统下就会存在目录/proc/sys/dev/parport,但是此时此目录下的文件大部分为空,没有任 何内容。这时您就可以根据并口连接的设备,尝试插入相应的内核驱动模块。例如,当连接并口打印机时,您可以插入模块lp。使用如下命令:

insmod lp parport=0 (对于打印机连接在并口0(LPT1))

在成功插入此模块之后,而且在连接的并口设备支持IEEE 1284协议时,这时此目录下的autoprobe,modes等文件会出现设备上读出的设备描述以及设备配置信息。由此信息,您可以在CUPS中选择对应的打印机驱动程序,完成打印机的配置。

6.2 /proc/sys/dev/parport/文件结构

目录树:

parport

|-- default

| |-- spintime

| `-- timeslice

|-- parport0

| |-- autoprobe

| |-- autoprobe0

| |-- autoprobe1

| |-- autoprobe2

| |-- autoprobe3

| |-- devices

| | |-- active

| | `-- lp

| | `-- timeslice

| |-- base-addr

| |-- irq

| |-- dma

| |-- modes

| `-- spintime

`-- parport1

|-- autoprobe

|-- autoprobe0

|-- autoprobe1

|-- autoprobe2

|-- autoprobe3

|-- devices

| |-- active

| `-- ppa

| `-- timeslice

|-- base-addr

|-- irq

|-- dma

|-- modes

`-- spintime

文件 文件内容

devices/active 使用那个端口的设备驱动程序列表。在当前使用端口的设备前会出现一个"+"号。串"none"意味着没有设备驱动程序使用这个端口。

base-addr 并行端口的基地址或再不只一个端口时由tab分隔的多个基地址。

irq 并行端口的IRQ,若不使用时则用-1

dma 并行端口的dma通道,若没有使则用-1

modes 并行端口的硬件模式PCSPP PC风格的SPP寄存器可用(标准并行端口)TRISTATE 端口是双向的COMPAT 打印机的硬件加速可用EPP EPP协议的硬件加速可用(增强并行端口)ECP ECP协议的硬件加速可用DMA DMA可用

autoprobe 已经获得的IEEE-1284设备标识信息

autoprobe[0-3] 从遵循IEEE-1284.3的雏菊链路设备取出的设备信息

spintime 忙循环等待外设响应的微秒数。调节此值可以改善外设的性能。这是端口级的设置。它应用于此端口上的所有设备

timeslice 设备驱动程序允许保持端口声明的微秒数。这只是一个建议,驱动程序在必要时可以忽略。

default/* 在注册新端口时,它取出缺省的spintime。在注册新设备时,它取出缺省时间片。

例如,在系统连接了HP LaserJet 6L打印机之后,此目录下关键文件的内容为:

/proc/sys/dev/parport/parport0/autoprobe:

CLASS:PRINTER;(连接的设备为打印机)

MODEL:HP LaserJet 6L;(打印机类型描述)

MANUFACTURER:Hewlett-Packard;(制造商类型)

DESCRIPTION:Hewlett-Packard LaserJet 6L Printer;

/proc/sys/dev/parport/parport0/modes:

PCSPP,TRISTATE

/proc/sys/dev/parport/parport0/base-addr:

8881912

/proc/sys/dev/parport/parport0/irq:

-1

/proc/sys/dev/parport/parport0/dma:

-1

7 PCMCIA设备自动检测

因 为PCMCIA设备主要用于笔记本电脑,所以在您使用普通的台式电脑时,您无需安装包pcmcia-cs。在笔记本电脑上安装了pcmcia-cs包之 后,为了实现PCMCIA设备的自动检测,您可以先查找系统中是否存在/proc/bus/pccard目录,如果不存在此目录则尝试插入 pcmcia_core。

在成功插入了此模块之后,/proc/bus/pccard目录就生成了。此后,您就可以检查pci的系统设 备,找到系统桥接器,根据桥接器类型获得您需要插入的桥接器模块。例如,在我的系统上,桥接器为Texas Instruments PCI1251,则它的桥接器为i82365。在Linux系统下,适用的桥接器模块一般只有i82365或tcic两种。若无法获得准确的桥接器驱动程 序,您可以尝试着插入两种模块,直到成功时为止。

然后为了能够实时的配置您的pccard,您需要启动服务pcmcia,

/etc/rc.d/init.d/pcmcia start

并 由此服务启动程序cardmgr。cardmgr监视pcmcia槽上,卡的插入和弹出操作。在卡插入之后,cardmgr查询卡的配置数据库。若发现卡 能够被标识,相应的设备驱动程序则会自动加载。在弹出卡之后,卡的驱动程序会自动的关闭并卸载。当卡插入之后,每个槽上的卡信息和设备信息都被记录在 /var/lib/pcmcia/stab文件中。

7.1 /proc/bus/pccard目录结构

/proc/bus/pccard/{irq,ioport,memory}

包含资源分配表

/proc/bus/pccard/drivers

这会列出所有当前加载的pcmcia客户驱动程序,包括静态连接到内核的模块

/proc/bus/pccard/*/info

对于每个socket,描述socket主控制器和它的性能,*为对应的socket编号

/proc/bus/pccard/*/exca

Intel i82365sl兼容的寄存器集的ExCA控制器的转储

/proc/bus/pccard/*/{pci,cardbus}

对于cardbus桥,桥的pci配置空间的转储和桥的cardbus配置寄存器的转储

7.2 pcmcia配置文件

/etc/pcmcia/config实际上是一个针对pcmcia设备的配置数据库,它的内容主要是指定卡驱动程序加载时所需的模块。例如

device "serial_cs"

class "serial" module "misc/serial", "serial_cs"

表示在插入serial_cs时,需要先插入模块misc/serial和serial_cs。

pcmcia主机控制器的主要类型为

Databook TCIC-2

Intel i82365SL-compatible

当 前pcmcia设备包括5种IO设备类型包括network,SCSI,cdrom,fixed disk, 和serial以及2种内存设备类型memory和FTL。对于每一种类型,在/etc/pcmcia/目录下存在两个配置脚本,例如,对于scsi设备 都存在一个主配置脚本(/etc/pcmcia/scsi)和选项配置脚本(/etc/pcmcia/scsi.opts)。

7.3 pcmcia启动脚本(/etc/sysconfig/pcmcia)

PCMCIA

为yes表示启动PCMCIA支持

PCIC

标识PCCard接口控制驱动模块。一般有两种类型:tcic或i82365,缺省是i82365。

PCIC_OPTS

PCIC模块的选项

例如:PCIC_OPTS="irq_list=5,9,10"、"do_scan=0" 完全禁止中断检测

CORE_OPTS

pcmcia_core模块的选项。见man pcmcia_core。

CARDMGR_OPTS

cardmgr守护程序的选项。见man cardmgr。

SCHEME

设置pccard的配置方案。

cardmgr 处理/etc/pcmcia/config.opts中的io端口范围。但在极少的情况下,从设备读可以阻碍系统功能而导致死锁。在CORE_OPTS中 加入probe_io=0,可以禁止此操作。使用i82365或tcic驱动程序时,irq_list选项可用于限制测试的中断。cs_irq用于明确设 置中断以检测卡状态改变。若不能使用中断,可以使用poll_interval=100(100表示轮询间隔为1秒)设置轮询。这些选项应置入 /etc/rc.d/rc.pcmcia或/etc/sysconfig/pcmcia的"PCIC_OPTS="行。

7.4 cardmgr和cardctl的使用

cardmgr基于/etc/pcmcia/config中的信息来配置卡。cardmgr为每个socket记录设备信息,此信息存于/var/lib/pcmcia/stab中。例如:

Socket 0: Adaptec APA-1460 SlimSCSI

0 scsi aha152x_cs 0 sda 8 0

0 scsi aha152x_cs 1 scd0 11 0

Socket 1: Serial or Modem Card

1 serial serial_cs 0 ttyS1 5 65

第一个域表示socket,第二个是设备类型,第三个是设备名,第四个用于关联多个设备和一个驱动程序时的设备编号。第五个是设备名。最后两个域标是设备的主、次设备号。

cardctl可用于监视和控制当前pcmcia socket的状态。

cardctl config,显示socket配置,包括电源,中断,I/O配置。例如:

Socket 0:

not configured

Socket 1:

Vcc = 5.0, Vpp1 = 0.0, Vpp2 = 0.0

Card type is memory and I/O

IRQ 3 is dynamic shared, level mode, enabled

Speaker output is enabled

Function 0:

Config register base = 0x0800

Option = 0x63, status = 0x08

I/O window 1: 0x0280 to 0x02bf, auto sized

I/O window 2: 0x02f8 to 0x02ff, 8 bit

cardctl indent,得到卡的标识信息,包括产品标识信息,制造商标识代码,功能标识代码:

Socket 0:

no product info available

Socket 1:

product info: "LINKSYS", "PCMLM336", "A", "0040052D6400"

manfid: 0x0143, 0xc0ab

function: 0 (multifunction)

cardctl suspend和cardctl resume用于无需卸载相关驱动程序的情况下关闭卡。cardctl reset用于尝试重设和重新配置卡。cardctl insert和cardctl eject用于仿真卡的物理的插入和删除动作。推荐在退出卡之前,执行cardctl eject命令。/etc/rc.d/rc.pcmcia stop会卸载所有的pcmcia包。

作者简介

于辰涛,联想(北京)电脑公司软件工程师。目前主要从事Linux系统安装程序的开发工作,主要研究兴趣是操作系统的工作机制和开发底层系统程序。您可以通过电子邮件 scu_yct@263.net 跟他联系。

本站文章仅代表作者观点,本站仅传递信息,并不表示赞同或反对.转载本站点内容时请注明来自www.linuxeden.com-Linux伊甸园。如不注明,www.linuxeden.com将根据《互联网著作权行政保护办法》追究其相应法律责任。

来源: 作者:otto  时间: 2001-08-08 09:35:15 评论0条 点击:阅读次数: 次

把开源带在你的身边-精美linux小纪念品

相关文章: 在SUSE Linux系统下安装ADSL上网拨号程序

如何在Linux操作系统下配置双网卡路由表

解决Intel HD Audio Controller声卡问题

Redhat Linux系统下双网卡配置实践总结

Linux操作系统下安装声卡驱动的方法总结

在RHEL5服务器系统下双网卡使用bonding

Linux通过ndiswrapper安装无线网卡驱动

Ubuntu下NVIDIA驱动安装及3D桌面的设置

实用技巧:Linux2.6.18 SD卡驱动的修正

Linux系统下蓝牙立体声配置A2DP profile

360docimg_6_  加入收藏

上一篇:嵌入式操作系统的调试 下一篇:如何在LINUX下实现硬件的自动检测(上)

360docimg_7_   评论加载中…

全文 标题

标签: linux安装  linux  ubuntu  ftp  wine

文章分类

新闻动态 企鹅看世界 新手入门 数据库类 系统安全 系统管理 网络管理 使用经验 编程开发 解决方案 硬件相关 Unix家族 观点评论 人物介绍 技术前沿 专题 网站动态

软件导航

发行版类 内核相关 服务器类 模拟仿真 文件管理

系统安全 多媒体类 硬件工具 编程开发 网络热门

杂类工具 网络工具 图形图像 阅读编辑 书籍资料

游戏软件 办公软件 数据备份 中文相关 系统管理

科学计算 数据库类 XWin系统

论坛导航

初级应用->新手入门 | 服务器应用 | 中文化 | 软件使用交流 | 硬件驱动 | 图片秀 | 茶馆

高级应用->数据库 | 系统安全 | 嵌入式应用|

编程开发-> C/C++(STL/boost) | 内核 | RAD|Perl/PHP/Python | JAVA/XML | Shell

发行版-> Redhat和Fedora | Debian | Gentoo | Slackware/Suse | Mandrake/Mandriva

Unix ->FreeBSD | Solaris | 其他Unix讨论

论坛新贴

About Linuxeden  - 网站地图 - 联系方式 - 版权申明

Copyright © 1996 - 2008 Linuxeden.com, All Rights Reserved

浙ICP备05047359号

  

爱华网本文地址 » http://www.aihuau.com/a/25101012/128652.html

更多阅读

Excel教程:如何在Excel中自动生成人民币大写

Excel教程:如何在Excel中自动生成人民币大写——简介在Excel中使用单元格设置--特殊--中文大写数字生成的中文大写,不符合中国人对人民币大写数额的书写习惯。比如132.57,使用该设置生成的是:壹佰叁拾贰.伍柒,如何才能生成符号中国人书写

如何在linux系统中设置静态ip地址 linux系统设置ip地址

如何在linux系统中设置静态ip地址——简介本篇主要是介绍一下在linux系统中设置静态ip地址方法。如何在linux系统中设置静态ip地址——工具/原料redhat6.4 x64如何在linux系统中设置静态ip地址——方法/步骤如何在linux系统中设置

如何在BOIS下如何设置启动项 精 msi 1762 bois设置

如何在BOIS下如何设置启动项 精——简介 我们都知道,平时我们的电脑默认的启动项是硬盘启动,所以我们开机的时候都是直接加载系统的。那是不是就只有硬盘启动呢?其实我们的电脑出了可以通过硬盘启动,还能通过、软驱、光驱、U盘等多种方

如何在win7下安装WIN8做双系统 精 安装双系统win7和win8

如何在win7下安装WIN8做双系统 精——简介Windows8是由微软公司开发的,具有革命性变化的操作系统。自从WIN8出来后,看那个新的风格很酷,一直很想装双系统。今天有空在WIN7下新增了WIN8,组成双系统,还真行!如何在win7下安装WIN8做双系统

如何在Word中输入平均数的符号X上加一横X拔 算术平均数符号

如何在Word中输入平均数的符号X上加一横(X拔)——简介在我们常用的公式中平均数的基本都是用X的上面加一根横杠来表示,念作“X拔”。它十分常用,但是在我们用Word书写论文过程中,往往不知道如何在Word中输入这个符号,下面我就介绍一下如何

声明:《如何在LINUX下实现硬件的自动检测下 -Linux伊甸园----Linux|U 服务器硬件设计与实现》为网友深夏夜未眠分享!如侵犯到您的合法权益请联系我们删除