`
`[191
`
`[11] Patent Number:
`
`5,787,246
`
`[45] Date of Patent: Jul. 28, 1998
`Lichtrnan et a].
`
`
`
`U8005787246A
`
`[541
`
`[75]
`
`[73]
`
`[21]
`
`[22]
`
`[5 1]
`
`[52]
`
`[58]
`
`[5 6]
`
`SYSTEM FOR CONFIGURING DEVICES
`FOR A COMPUTER SYSTEM
`
`Inventors: Moshe Lichtman. Bellevue; Mark R.
`Enstrom. Redmond; Thomas E.
`Lemon. Seattle; Ralph A. Lipe.
`Woodinville; Pierre-Yves Santerre.
`Bellevue; Robert T. Short. Kirkland;
`David W. Voth. Redmond. all of Wash.
`
`Assignee: Microsoft Corporation. Redmond.
`Wash.
`
`Appl. No.: 250,698
`
`Filed:
`
`May 27, 1994
`
`Int. Cl." ............................ G06F 15/02; G06F 12/02;
`G06F 9/445; G06F 15/40
`U.S. Cl. ....................... 395/200.5; 395/828; 395I830;
`395/200.56
`Field of Search ..................................... 395/600. 828.
`395/830. 882. 500. 700. 200.56. 200.5
`
`2/1994 Guthrie et a1. .......................... 364/403
`5,289,372
`3/1994 Cox et a].
`395/325
`5,297,262
`
`6/1994 Kumagai .............
`. 395/800
`5,319,790
`
`8/1994 Feldenman et al.
`...... 455/17
`5,335,350
`
`5,359,713 10/1994 Moran et a1. ............... 395/200
`
`5,371,492 12/1994 Lohrbach et al.
`340/825.03
`
`
`5,379,431
`1/1995 Lemon et al.
`......
`395F700
`.......................... 395/575
`5,386,551
`1/1995 Chikira et al.
`5,386,567
`1/1995 Lien et a1.
`.................... 395/700
`395/325
`
`5,408,618
`4/1995 Aho et a1.
`. 395/500
`5/1995 Gamey .....
`5,412,798
`395/325
`.......
`5,420,987
`5/1995 Reid et a].
`
`395075
`5,428,748
`6/1995 Davidson et 31.
`395/500
`
`..
`5,450,570
`9/1995 Richek et a1.
`.......
`395/700
`5,452,454
`9/1995 Basu et a].
`
`. 395/200.l
`5,454,078
`9/1995 Heimsoth et a1.
`
`......
`5,459,867 10/1995 Adams et a1.
`395/700
`5,459,869 10/1995 Spilo ....................................... 395/700
`
`(List continued on next page.)
`
`OTHER PUBLICATIONS
`
`“CardWareTM User Manual 1.50A.” released on Oct. 8. 1993
`by Award Software International. Inc. pp. 1—33.
`
`References Cited
`
`Primary Examiner—Thomas C. Lee
`Assistant Examiner—Rehana Perveen
`
`U.S. PATENT DOCUMENTS
`
`Anomey, Agent, or Firm—Jones & Askew. LLP
`
`5/1981 Subrizi et a1.
`4,268,901
`.......................... 364/200
`
`2/1982 Shimizu et a1.
`4,317,183
`........... 364/900
`..
`4,562,535 12/1985 Vincent et al.
`........... 364/200
`
`4,589,063
`5/1986 Shah et a].
`364/200
`
`4,660,141
`4/1987 Ceccon et al.
`364/200
`
`4,727,475
`2/1988 Kiremidjian ......
`364/200
`......
`4,730,251
`3/1988 Aakre et a1.
`364/200
`4,974,151
`11/1990 Advani et al.
`364/200
`.....
`4,982,325
`1/1991 Tignoretal.
`364/200
`5,038,294
`8/1991 Arakawa et a].
`.
`.. 364/491
`5,109,434
`4/1992 Hughesetal.
`:.. 395/200
`.. 395/700
`5,136,709
`8/1992 Shirakabe et al.
`.
`..
`340/706
`5,157,384 1011992 Greanias et a1.
`5,197,093
`3/1993 Knuth et a1.
`.............................. 379/61
`5,247,682
`9/1993 Kondou et al.
`......................... 395/700
`395/200
`5,249,270
`9/1993 Stewart et a]. ........
`.. 345/156
`5,252,951
`10/1993 Tannenbaumet al.
`395/600
`5,257,368 10/1993 Benson et al.
`........
`395/700
`5,257,379 10/1993 Cwiakala et al.
`.
`5,257,387 10/1993 Richek et al.
`395/800
`5,263,148
`11/1993 Jones, Jr. et 31. .................... 395/500
`
`.
`
`
`
`
`
`
`[57]
`
`ABSTRACT
`
`A system for configuring devices of a computer system
`without user intervention. Device information for each of
`the devices is collected to uniquely identify the devices and
`to describe the device characteristics associated with the
`operation of devices with the computer. Computer resources.
`which support
`the functions of the devices within the
`computer. are allocated based upon the device information.
`This allocation process prevents a potential conflicting use
`of the resources by the devices. A device driver. which
`enables communications between the corresponding device
`and the computer system. is also identified for each of the
`devices in response to the device information. In response to
`the allocation of resources. the identified device drivers are
`loaded and the devices are activated for operation with the
`computer.
`
`98 Claims, 11 Drawing Sheets
`
`X
`
`RESOURCES
`MEMO”
`
`INTERRUPTS
`
`14
`
`l
`22
`
`;
`I
`:
`;
`:
`i
`4 ?
`
`
`
`HUAWEI EX. 1020 - 1/40
`
`..
`
`is
`
`
`
`1
`i“
`i
`
`E39551 use;
`A1 E
`E
`;
`3'
`3
`3
`.
`
`,
`
`open/arm
`svsrm
`
`coo/rum
`
`CONTROL
`SYSTEM
` 2!
`
`E
`5
`
`:
`
`memes
`ens [scsn
`
`11
`
`
`
`
`INTERFACE
`"
`BUS
`
`tPcMCIA)
`
` E
`
`
`
`DEVICE
`INHWORK‘
`
`20
`
`t
`MEMORY
`STORAGE
`DEVICE
`
`HUAWEI EX. 1020 - 1/40
`
`
`
`5,787,246
`Page 2
`
`5,469,545
`5,471,675
`5,485,460
`5,491,313
`
`U.S. PATENT DOCUMENTS
`11/1995 Vanbuskirk et a1.
`............... 3950.00.01
`11/1995 Zias .......................... 395/162
`
`1/1996 Schrier et a].
`__
`. 370,941
`........................... 395/500
`2/1996 Bondy et a1.
`
`5,517,636
`5/1996 DeHart eta].
`.......................... 395/500
`6
`' "
`.
`00
`
`25:33; 3:32 $91182: “1
`332%
`
`5 ~
`I“
`1-
`
`..... 395/600
`5,553,281
`9/1996 Brown et a].
`5581.261 12/1996 Hickman etal.
`....................... 342/335
`
`HUAWEI EX. 1020 - 2/40
`
`HUAWEI EX. 1020 - 2/40
`
`
`
`US. Patent
`
`Jul. 28, 1998
`
`Sheet 1 of 11
`
`<20
`
`— N
`
`mhmnmmmhz.
`
`405.200
`
`Ewhm>m
`
`_0—“—
`
`mN
`
`mm
`
`>m02m5.
`
`mo<co._.m
`
`wo_>uo
`
`>mo_2m_2
`
`wo<molrm
`
`mo_>mo
`
`mu<n_m_m._.z_
`
`mam
`
`2620;.
`
`85mm
`
`Sun—Os:
`
`mo_>mo
`
`0:53.52.
`
`HUAWEI EX. 1020 - 3/40
`
`mmomDOmmm
`
`>m02m2
`
`OZ:.<mm.n_O
`
`Emhm>m
`
`”Wham—200
`
`09319:;
`
`N.
`
`mmHDQEOo
`
`mm<m<._.<o
`
`mug/NEE»;
`
`zwomvmam
`
`Em:mam
`
`HUAWEI EX. 1020 - 3/40
`
`
`
`
`
`
`
`
`
`
`US. Patent
`
`Jul. 28, 1998
`
`Sheet 2 of 11
`
`5,787,246
`
`CONFIGURATION LOGIC
`
` DETECT
`3’
`
`LOGIC
`
`
`
` COLLECT
`32
`LOGIC
`
`
`
`
`ARBITRATE
` SYSTEM BUS
`
`
`DEVICE
`LOGIC
`
`
`
`DRIVER
`IDENTIFICATION
`
`
`LOGIC
`
`
` 35
`
`DRIVER
`
`
`LOADER LOGIC
`
`30
`
`FIG 2
`
`DRIVERS
`
`COLLECT
`DEVICE
`
`INFORMATION
`
`OBTAIN
`
`DEVICE
`DRIVERS
`
`ALLOCATE
`
`COMPUTER
`RESOURCES
`
`LOAD
`DEVICE
`
`FIG 7
`
`HUAWEI EX. 1020 - 4/40
`
`HUAWEI EX. 1020 - 4/40
`
`
`
`US. Patent
`
`Jul. 28, 1998
`
`Sheet 3 of 11
`
`5,787,246
`
`41
`
`POWER
`COMPUTER
`
`CONFIGURE
`SYSTEM LEVEL
`DEVICES
`
` 42
`
`
`
`
`SELECT INTEGRATE I
`SYSTEM
`
`
`”EXPANSION” BUS
`
`
`
`DETECT
`PARTICULAR
`
`
`DEVICE
`
`
` ASSIGN DEVICE
`CODE
`
` OBTAIN LOGICAL
`
`
` OBTAIN
`
`
`IDENTIFICATION
`
`5"
`
`CONFIGURATION
`DATA
`
`
`DEVICE INFO FROM AL
`DEVICES ON
`BUS?
`
`
`
`
`
`INACTIVATE ALL
`DEVICES
`
`REQUIRED FOR
`DEVICES NOT
`
`
`BOOT?
`REQUIRED FOR BOOT
`
`
`
`GO TO
`STEP
`58
`
`FIG 4A
`
`HUAWEI EX. 1020 - 5/40
`
`HUAWEI EX. 1020 - 5/40
`
`
`
`US. Patent
`
`Jul. 28, 1998
`
`Sheet 4 of 11
`
`5,787,246
`
` 54
`
`YES BRANCH
`
`IDENTIFY BOOT
`DEVICE DRIVERS
`
`60
`
`RESOURCES
`CONFLICT-FREE?
`
`
`CONFIGURE
`REMAINING DEVICES
`
`REQUIRED FOR BOOT
`
`
`
`64
`
`FROM
`STEP
`56
`
`
`
`66
`
`68
`
`70
`
`
`
`BOOT
`
`IDENTIFY DEVICE DRIVERS
`FOR REMAINING
`INTEGRATED BUS DEVICES
`
`
`COMPARE RESOURCES
`72
`
`
`TO REQUIREMENTS AND
`
`CONSTRAINTS
`
`
`
`
`ERROR
`
`
`62
`
`
`
`MESSAGE
`
`HUAWEI EX. 1020 - 6/40
`
`HUAWEI EX. 1020 - 6/40
`
`
`
`US. Patent
`
`Jul. 28, 1998
`
`Sheet 5 of 11
`
`5,787,246
`
`
`
`
`
`
`
`ALLOCATE
`
`RESOURCES
`
`CONFIGURE
`DEVICES
`
`74
`
`76
`
`78
`
`
`
`LOAD
`DEVICE
`
`
`DRIVERS
`
`
`COMPUTER CONFIGURED
`
`
`AND AVAILABLE FOR
`
`OPERATIONS
`
`80
`
`ANOTHER
`SYSTEM BUS
`DETECTED?
`
`32
`
`YES
`
`SELECT ANOTHER
`SYSTEM BUS
`
`
`
`
`DETECT
`PARTICULAR
`DEVICE
`
`
`
`ASSIGN DEVICE
`INFORMATION
`
`
`OBTAIN LOGICAL
`CONFIGURATION
`
`DATA
`
`
`
`GO TO
`
`8:5?
`
`
`OBTAIN DEVICE
`
`NFO FROM ALL DEVICES
`
`ON BUS?
`
`FIG 4C
`
`HUAWEI EX. 1020 - 7/40
`
`HUAWEI EX. 1020 - 7/40
`
`
`
`US. Patent
`
`Jul. 28, 1998
`
`Sheet 6 of 11
`
`5,787,246
`
`100
`
`START
`
`
`
`
`YES
`
`SEARCH FOR COMPATI-
`BLE DEVICE HAVING
`HIGHEST PRIORITY
`
`SELECT CMPATIBLE
`DEVICE DRIVER FOR COM-
`PATIBLE DEVICE HAVING
`HIGHEST PRIORITY
`
`108
`
`11o
`
`REQUEST USER TO
`SUPPLY SUBSTITUTE
`DEVICE DRIVER
`
`STORE SUBSTITUTE
`DEVICE DRIVER
`
`"2
`
`114
`
`115
`
`END
`
`RETRIEVESUBSTI—
`TUTE DEVICE DRIVER
`
`
`DEVICE
`
`
`CONFIGURATION OPERATING SYSTEM
`
`us:
`
`153
`
`10
`
`158
`
`‘~~.‘
`
`~~~~~~~~_—-—
`
`........
`
`20 W 20 W 20
`
`20
`
`20
`
`156
`
`156
`
`20
`
`FIG 6
`
`HUAWEI EX. 1020 - 8/40
`
`HUAWEI EX. 1020 - 8/40
`
`
`
`U.S. Patent
`
`Jul. 28, 1998
`
`Sheet 7 of 11
`
`5,787,246
`
`LOCAL BUS
`
`170
`
`DEVICE IDENTIFICATION CODE: *PNPOAOO\MODEM‘I0
`
`ASSIGNED RESOURCE ELEMENTS: IR03; I\03F8
`
`LOGICAL CONFIGURATION DATA: IFIQB; I\03F8
`
`168
`
`1;;
`
`SOFTWARE 182
`I——4 SOFTWARE RELATED SETTINGS AND DRIVER INFORMATION
`
`ROOT
`
`180
`
`HARDWARE
`
`’84
`
`ENUM188
`
`19o
`
`192
`
`ROOT
`
`'svs BIOS
`
`ISAENM
`
`FIG 8
`
`18
`
`196
`
`198
`
`194
`
`,
`:
`SCSIENM
`
`TCM1234\0
`
`PCMCIAENM
`
`HUAWEI EX. 1020 - 9/40
`
`HUAWEI EX. 1020 - 9/40
`
`
`
`US. Patent
`
`Jul. 28, 1998
`
`Sheet 3 of 11
`
`5,787,246
`
`ENUMERATE ELEMENT 200:
`1!
`I" .............................
`
`E
`5
`:
`
`.
`:
`
`.'
`
`DETECTION
`MODULE
`
`206;
`.
`'
`
`COLLECTION
`MODULE
`
`208
`
`RETRIEVE
`IDCODE
`APPEND
`BUS CODE
`
`RETRIEVE LOGI-
`
`,
`158
`.:
`
`: §212
`
`
`CONFIGURATION
`.
`;
`MANAGER
`
`5.214
`’
`CAL CONFIGU-
`:
`3
`RATION DATA
`3
`L _____________________________ j
`
`152
`
`
`
`HARTQQE‘RE
`
`
`202
`
`18
`
`SYSTEM
`
`
`
`_
`
`0
`
`
`
`DEVICE
`
`CONFIGURE
`
`
`
`
`
`:
`
`
`
`
`
`
`
`
`
`
`
`ELEMENT
`
`
`RECEIVE
`ASSIGNED
`I
`i
`S ORE
`ASSIGNED
`RE OURCE
`TRANSMIT
`ASSIGNED
`RESOURCES
`
`
`
`5
`
`204
`
`;
`
`5
`-.
`
`DETECT
`ELEMENT
`
`FIG 9
`
`HUAWEI EX. 1020 - 10/40
`
`HUAWEI EX. 1020 - 10/40
`
`
`
`US. Patent
`
`Jul. 28, 1998
`
`Sheet 9 of 11
`
`5,787,246
`
`250
`
`SELECT
`
`SYS TEM BUS
`
`DETECT PARTICULAR
`DEVICE ON SELECT-
`ED SYSTEM BUS
`
`RETRIEVE IDENTIFI-
`CATION CODE FROM
`PARTICULAR DEVICE
`
`
`
`
`PPEND SYSTEM BUS 250
`CODE TO
`IDENTIFICATION CODE
`
`
`RETRIEVE LOGICAL
`CONFIGURATION
`
`DATA
`
`
`LINK LOGICAL
`
`CONFIGURATION ‘
`
`DATA TO DEVICE
`
`IDENTIFICATION CODE
`
`
`
`
`
`COLLECT
`DEVICE INFO FROM ALL
`DEVICES ON
`BUS?
`
`
`
`268
`
`FIG 10
`
`HUAWEI EX. 1020 - 11/40
`
`HUAWEI EX. 1020 - 11/40
`
`
`
`US. Patent
`
`Jul. 28, 1998
`
`Sheet 10 of 11
`
`5,787,246
`
`269
`
`START
`
`278
`
`START
`
`DETECT REMOVAL
`OF DEVICE
`
`
`
`STOP ACCESSING
`REMOVED
`
`
`
` FREE RESOURCES
`
`
` UNLOAD DEVICE
`
`
`
`
`
`DEVICE
`
`
`ALLOCATED TO
`REMOVED DEVICE
`
`DRIVER FOR
`REMOVED DEVICE
`
`END
`
`FIG 11A
`
`270
`
`
`
`272
`
`27”
`
`275
`
`280
`
`DETECT DEVICE
`
`INSERTION
`
` 282
`
`ENUMERATE
`
`
`
`25"
` IDENTIFY
`DRIVERS
` 286
`
`DEVICES 0N
`
`AFFECTED BUS
`
`DEVICE
`
`I ARBITRATE AND
`
`
`
`
`ALLOCATE
`
`RESOURCES
`
`
`
`LOAD
`
`
`DEVICE
`
`DRIVERS
`
` 288
`
`
`
`
`90
`
`HUAWEI EX. 1020 - 12/40
`
`HUAWEI EX. 1020 - 12/40
`
`
`
`US. Patent
`
`Jul. 28, 1998
`
`Sheet 11 of 11
`
`5,787,246
`
`158
`
`""365""""
`"‘""'
`a"
`
`
`
`RESERVED
`
`RESOURCE
`
`
`TABLE
`ASSIGNED
`RESOURCE
`A :
`
`E
`5
`3
`E
`:
`5
`
`
`
`
`CONFIGURATION
`MANAGER
`
`154
`
`;
`
`E
`g
`5
`5
`g
`i
`
`320
`
`SELECT
`POSSIBLE
`CONFIGURATION
`
`
`
`
`
`
`IS
`
`
`APPROPRIAT
`APPROPRIAT
`
`
`RESOURCE ELMENT
`RESOURCE ELMENT
`
`
`* SSIGNED?
`RESERVED?
`
`
`
`324
`
`328
`
`ASS’GN
`RESOURCE
`
`ELEMENT
`
`
`
` NON-RESERVED
`
`RESOURCE ELMENT
`
`
`VAILABLE7
`
`
`
`
`
`FIG 13
`
`HUAWEI EX. 1020 - 13/40
`
`HUAWEI EX. 1020 - 13/40
`
`
`
`1
`SYSTEM FOR CONFIGURING DEVICES
`FOR A COMPUTER SYSTEM
`
`TECHNICAL FIELD
`
`The present invention relates to data processing systems
`and. more particularly described. relates to configuring
`devices for operation with a computer system without user
`intervention.
`
`BACKGROUND OF THE INVENTION
`
`The process of installing a peripheral device or an add-on
`type adapter board for use with a personal computer system
`can be a relatively frustrating experience for the typical
`computer user. Nevertheless. a computer typically will not
`operate with a newly installed component until the user has
`completed a proper allocation of resources. Computer
`resources are allocated during a configuration process to
`permit the conflict-free use of the limited resources. To
`configure the computer. the user often must complete a
`relatively complex series of technical tasks. Thus. the dif—
`ficulties faced by many users during the configuration pro-
`cess are emphasized by the absence of an automated process
`for resolving resource conflicts.
`For many personal computer systems. neither the operat-
`ing system nor the application programs running on the
`computer can determine which hardware components are
`connected to the computer. Likewise. the various hardware
`components connected to the computer system often fail to
`detect the occurrence of a conflict between dilferent hard-
`ware devices that attempt
`to share the same resource.
`Accordingly. a user typically must resolve a resource con—
`flict by first identifying the problem and thereafter experi-
`menting with hardware and software configurations in an
`attempt to correct the resource conflict.
`When attempting to tackle hardware and software inte-
`gration issues. the user is exposed to technical concepts that
`can be somewhat confusing for those without technical
`training. such as computer architecture issues. including
`hardware interrupts. direct memory access (DMA) channels.
`memory addresses. and input/output (I/O) ports. Likewise.
`many common configuration tasks require the user to be
`familiar with the finer details of the computer's operating
`system.
`including system configuration files. such as
`Autoexec.Bat. ConfigSys. and *.Ini files. In view of these
`technical concepts. some users find the configuration pro-
`cess so intimidating that they refuse to consider upgrading a
`component of their personal computer or connecting a new
`peripheral device to add a new capability to their computer
`system.
`Unlike today. early personal computers required mini-
`mum coordination between the computer hardware and
`software components. Users were presented with few diffi-
`cult configuration issues after the initial installation of the
`computer system. A limited number of peripheral devices
`were commercially available for supplementing the proces 5-
`ing functions of the personal computer. In addition. early
`personal computers were primarily used for dedicated tasks.
`such as word processing or calculating financial information
`with a spreadsheet program. at a fixed desktop location.
`In contrast. present computers are often portable systems
`that can be regularly connected to different peripheral
`devices and external systems. There exists many more
`computer peripheral devices that require the use of resources
`during computer operation than the limited quantity of
`available resources. Furthermore. a user can harness the
`powerful computing operations of a present personal com-
`
`5,787,246
`
`2
`
`puter to complete numerous tasks outside the traditional
`realm of word processing and financial calculations. such as
`graphics. audio. and video. For example. numerous periph-
`eral devices and add-on systems are now commercially
`available to enable the user to customize the functions and
`operating characteristics of a personal computer. Docking-
`type computer systems enable a user to operate a mobile
`computer at either a base station or in remote locations.
`Thus. the rapid acceptance of portable computing and the
`multi—faceted uses of the personal computer emphasize the
`need for supplying a “user friendly” system that configures
`new hardware or software devices for use with the computer
`system.
`The Industry Standard Architecture (ISA) standard is a
`widely used bus architecture for personal computer systems.
`The ISA expansion bus. which is commonly associated with
`the IBM Personal Computer AT and other compatible
`computers. provides a 16-bit bus that supports the connec-
`tion of adapter boards within the computer. The ISA bus
`structure requires allocation of resources. such as hardware
`interrupts. DMA channels. memory addresses. and I/O ports.
`among multiple ISA—compatible adapter boards connected
`to the ISA expansion bus. However. the ISA standard does
`not define a hardware or software mechanism for allocating
`those resources for use by the installed adapter boards.
`Consequently. configuration of the ISA adapta boards is
`typically completed by connecting jumper cables or chang—
`ing switch settings on the boards to change the decode maps
`for memory and I/O ports and to direct the DMA channels
`and interrupt signals to various pins along the expansion bus.
`Furthermore. system configuration program files of the
`operating system may need to be updated to reflect any
`modifications to the resource allocation.
`
`Alternative expansion bus standards. such as the Micro
`Channel Architecture (MCA) and the Extended Industry
`Standard Architecture (EISA) standards. have limited hard-
`ware and software mechanisms to identify resources
`requested by a peripheral device and to resolve resource
`conflicts. However. these mechanisms are not implemented
`by the computer’s operating system and are not compatible
`with the large installed base of personal computers based on
`the ISA standard. Furthermore. computer systems irnple—
`menting the MCA and EISA standards are generally more
`expensive than ISA-compatible computers and lack the
`variety of add—on adapter boards and peripheral devices
`available for use with ISA-compatible computers.
`To address the issue of configuration management. the
`computer industry is at present offering full-featured com-
`puter systems having preconfigured hardware and prein-
`stalled software. thereby eliminating the need for a user to
`conduct
`the installation and configuration tasks for the
`purchased computer system. However. this is a somewhat
`limited solution because vendors typically market a com-
`puter system having a standard configuration of hardware
`and software components. Thus. this approach defeats the
`flexibility otfered by the ISA bus expansion structure
`because users cannot obtain a computer capable of perform-
`ing a customized function through this standardized con-
`figuration approach.
`To overcome the frustration of users with present com-
`plicated configuration processes. it would be desirable to
`provide a system for automatically configuring a peripheral
`device or adapter board for a computer system A system is
`needed to enable a user to simply connect a device to the
`computer. turn on the computer. and have the device prop-
`erly work with the computer. There is a further need for a
`system that determines the optimal configuration for its
`
`5
`
`10
`
`15
`
`20
`
`25
`
`3O
`
`35
`
`45
`
`50
`
`55
`
`65
`
`HUAWEI EX. 1020 - 14/40
`
`HUAWEI EX. 1020 - 14/40
`
`
`
`5 .787.246
`
`3
`resources and enables application programs to fully utilize
`the available resources.
`
`In recognition of the problems of prior configuration
`processes.
`the present
`invention provides a system that
`permits easy installation and configuration of devices which
`are capable of identifying themselves and declaring their
`services and resource requirements to the computer. The
`device identification and resource requirement information
`enable the system to determine and establish a working
`configuration for all devices connected to the computer. and
`to load the appropriate device drivers. In this manner. the
`present invention supports a variety of computer bus archi-
`tectures and device classes. Accordingly. the present inven—
`tion efficiently allocates system resources between the
`devices of the computer system without substantial user
`intervention.
`
`SUMMARY OF THE INVENTION
`
`The problems associated with the manual installation and
`configuration of adapter boards and peripheral devices for
`computer systems are solved by the principles of the present
`invention. The present invention provides a system for
`configuring the hardware and software components of a
`computer system by optimally allocating system resources
`for use by computer devices.
`The present invention enables a user of a computer system
`to install a new device by connecting the device to the
`computer. powering the computer. and using the computer to
`take advantage of the function supplied by the new device.
`Likewise. the present invention permits a user to insm‘t a
`mobile computer into a base station while both the mobile
`computer and the base station are powered and to reconfig-
`ure the mobile computer for operation with the devices
`connected to the base station. Thus. the present invention
`addresses the needs of computer users by supplying a
`computer-implemented process for configuring devices for a
`computer system and for accommodating seamless dynamic
`configuration changes of the computer system.
`A system constructed in accordance with the present
`invention configures devices of a computer system by iden—
`tifying the devices. determining the desired usage of the
`resources of the computer system. detecting and resolving
`potential conflicting uses of the resources. and allocating
`resources for use by the devices. An operating system runs
`on the computer system and supports these configuration
`tasks.
`
`The computer system includes various resources. includ—
`ing interrupts. direct memory access (DMA) channels.
`memory addresses. and input/output (I/O) ports. at least one
`system bus. and devices. System busses are components that
`supply physical connections to devices. Each of the devices
`is connected to one of the system busses of the computer
`system.
`The system busses can be compatible with a variety of bus
`architectures. including the Industry Standard Architecture
`(ISA). Micro Channel Architecture (MCA) and Extended
`Industry Standard Architecture (EISA) bus standards. as
`well as Personal Computer Memory Card International
`Association (PCMCIA). Small Computer Systems Interface
`(SCSI). Personal Computer Interface (PCI). Enhanced
`Capabilities Parallel (ECP). Vesa Local Bus (VL). Integrated
`Drive Electronics (IDE). and other bus standards. Typical
`devices supply the functions of system-level components.
`such as fixed and floppy disk controllers. display. keyboard.
`and mouse controllers. and serial and parallel controllers.
`and implement the functions offered by numerous add—on
`type adapter boards and peripheral devices.
`
`4
`
`Briefly described. the method for configuring the devices
`of the computer system is started by collecting device
`information for each of the devices of the computer system.
`This device information acquisition process permits the
`unique identification of the devices and the description of
`device characteristics associated with the operation of
`devices with the computer. A device driver. which enables
`communications between a corresponding device and the
`computer system. is thereafter identified for each of the
`devices in response to the device information. The
`resources. which support the functions of the devices within
`the computer. are allocated based upon the device informa-
`tion. This allocation process prevents any potential conflict-
`ing use of the resources by the devices. In response to
`resource allocation. the devices are configured and device
`drivers for the devices are loaded The devices are thereafter
`activated for operation with the computer.
`More particularly described. the present invention con-
`figures devices of a computer system based upon the col-
`lection of information about the devices and their connec-
`tions to the system busses of the computer system. To collect
`the device information. a particular device is detected on the
`system bus of interest and thereafter assigned a device
`identification code that identifies the particular device as
`being connected to the selected system bus. At least a
`portion of the device identifican'on code. specifically an
`identification code. uniquely identifies the detected device.
`Logical configuration data. which supplies configuration
`requirements for operating the particular device with the
`computer system. is also obtained for the detected device.
`This collection process is repeated until device information
`is eventually collected for each of the devices for all system
`busses of the computer system.
`The device information is stored within computer system
`memory. such as volatile memory. to support the present
`configuration operation. At least a portion of the system
`memory is allocated for the storage of device information
`within a treeer structure of device nodes. Each device
`connected to the computer system is represented by a device
`node that stores associated device information. Furthermore.
`if an identified device represents a newly installed device for
`the computer system. then this device information also can
`be stored in nonvolatile computer memory. such as a fixed
`disk. to supply an archival source of such information for
`future configuration tasks. A computer database having a
`hierarchical data arrangement is typically used to store this
`archival device information.
`The collection of device information. which is also
`described as enumeration. is initiated in response to dynamic
`events that cause an asynchronous change in the operating
`state of the computer system. These events typically affect
`the use of the resources by the devices of the computer
`system and include: powering the computer system; con—
`necting another device to a system bus; removing a device
`from a system bus; and inserting the computer system into
`or removing the computer system from an expansion unit or
`a docking station.
`The collection of device information supplies data that
`supports the identification of device drivers for the identified
`devices. A device driver can be obtained from one of several
`alternative sources of the computer system.
`including
`selected files of the operating system installed on the com-
`puter system. the device itself. a computer database main-
`tained by the computer. or from the user via a disk contain-
`ing the device driver. In general. the device driver for a
`device is often obtained by accessing a selected program file
`stored on either afixed disk or another type of mass memory
`storage device of the computer system.
`
`10
`
`15
`
`20
`
`25
`
`30
`
`35
`
`45
`
`50
`
`55
`
`65
`
`HUAWEI EX. 1020 - 15/40
`
`HUAWEI EX. 1020 - 15/40
`
`
`
`5
`
`6
`
`5,787,246
`
`The computer database can contain device information
`associated with a particular device. including information
`for that particular device. which is also described as a
`primary device. and information for devices that are “com-
`patible” with the primary device. For example. a first
`manufacturer’s device may be compatible with a second
`manufacturer’s device because both devices perform the
`same function and conform to an industry standard for
`operations. If the devices are compatible. a device driver for
`the first device often can be used to enable the operations of
`the second device and. likewise. a device driver for the
`second device can be used with the first device. Thus. a
`compatible device driver. if available. may be used to enable
`communications of the particular device with the computer
`system.
`The stored device information for a particular device
`typically can be accessed by searching in the computer
`database for a location or a record that contains the identi-
`fication code for the desired device. Thus. the identification
`code can be used as an entry key to search the records of the
`computer database. If the device information in a selected
`record describes the primary device. then the device driver
`intended for primary use with that device is maintained by
`the computer system and is available to support the device
`operations. Likewise. a compatible device driver is main—
`tained by the computer system if compatible device infor-
`mation is stored within the selected record and associated
`with the particular device.
`By convention. the primary device driver is typically
`selected to support the computer operations of the primary
`device over. any of the device drivers for compatible devices.
`However. if the device driver for the primary device is not
`available. then a device driver for a compatible device is
`selected. In this event. if the compatible device information
`lists more than one device that is compatible with the
`particular device. then the compatible device having the
`highest priority or ranking is selected and used to support the
`operations of the particular device.
`If neither the primary device driver nor a compatible
`device driver is available on the computer system. then the
`user can be requested to supply a substitute device driver
`that supports the operation of the device with the computm'
`system. This request
`is typically supplied as a textual
`statement displayed on a display or monitor for the computer
`system or as an audio prompt generated by the computer
`system. In response to the request. the user can insert within
`the proper computer drive a flexible disk or other appropri-
`ate electronic media containing the device driver. thereby
`permitting the computer to access the device driver. The
`device driver then can be stored within an appropriate mass
`memory storage device and used to enable the communica-
`tions between the particular device and the computer.
`Resources. which typically include a finite set of resource
`elements. are allocated by first analyzing the device infor—
`mation to detect whether the devices require a potential
`conflicting use of resource elements for operation of the
`devices with the computer system. The desired resource
`element is assigned for use by a device if this resource
`assignment does not conflict with the use of that particular
`resource by another device. A resource element is available
`for use by a device if this element is neither reserved nor
`assigned for use by another device. Some resource elements
`are typically reserved for use by selected devices to insure
`the compatibility of the present
`invention with existing
`devices. Thus. if at least two of the devices require use of an
`identical resource element. then this potential resource con-
`flict is arbitrated and resolved in an iterative manner based
`
`upon the device information and the finite resources of the
`computer. The resources are then assigned for use by the
`devices based upon this conflict-free solution.
`In response to allocating the assigned resources to the
`devices. the devices are configured for operation with the
`computer system. Each device driver is loaded for use by the
`corresponding devices and the devices are activated for
`operation with the computer.
`Focusing upon another aspect of the present invenn‘on. a
`system is provided for supporting the bu s-specific operations
`of devices connected to a system bus of a computer system.
`This system. which is alternatively referred to as an enu-
`merator or a bus driver. is assigned to operate with a specific
`system bus and is programmed to recognize the operating
`parameters of the assigned bus. Each system bus typically
`requires a unique configuration process that is based upon
`the architecture of the bus. The enumerator. which can be
`part of an operating system. directly supports the configu—
`ration of devices on its assigned bus by accessing device
`information for those devices and storing this data with a
`central memory. This enables an operating system for the
`computer system to be independent of the characteristics of
`a computer bus architecture because bus-specific informa-
`tion is handled by an abstraction layer. in this case. the
`enumerator.
`
`The enumerator can perform three primary operations.
`specifically (l) detecting dynamic events causing an asyn-
`chronous change in the operating state of the computer
`system; (2) enumerating each of the devices connected to the
`assigned system bus in response to the detection of a
`dynamic event; and (3) supplying assigned resources to each
`of the devices in response to an allocation of resources. To
`implement these operations. the enumerator can include one
`or more elements that are responsible for those functions.
`namely an enumerate element. a configure element. and an
`event detect element. These functions are typically defined
`by the characteristics of its assigned system bus.
`The enumerate element includes a detection module for
`detecting a particular device on the system bus and a
`collection module for retrieving device information from the
`particular device. The collection module obtains device
`information from the detected device and stores this data
`within device nodes of the computer memory to maintain an
`up—to—date inventory of the devices on the assigned system
`bus. Thus. the detection and collection modules operate in
`tandem to enumerate these devices. The computer memory
`can be a hierarchical database structure formed by a tree-er
`structure containing the device nodes. which represent each
`of the detected devices.
`
`The configure element can include a receive module for
`receiving the allocation of assigned resource elements. an
`assigned resource storage module for storing the assigned
`resources within the device nodes of the computer memory.
`and a transmit module for supplying instructions about the
`assigned resources to the appropriate devices. In response to
`the assigned resources. the configure element accesses the
`device nodes in the computer memory and stores the appro-
`priate resource element assignments.
`The event detect element typically can detect the instal~
`lation of a new device on the assigned system bus or the
`removal of an existing device. For example. device instal-
`lation or removal can be detected by intercepting a particular
`interrupt signal or by periodically polling all of the available
`sockets of the bus to determine the installed devices.
`Likewise. the event detect element can detect the insertion
`of a computer system into or the removal of a computer
`
`10
`
`15
`
`20
`
`25
`
`3O
`
`35
`
`45
`
`50
`
`55
`
`65
`
`HUAWEI EX. 1020 - 16/40
`
`HUAWEI EX. 1020 - 16/40
`
`
`
`5,787,246
`
`7
`
`s