`*
`5,787,246
`[11] Patent Number:
`United States Patent us
`Jul. 28, 1998
`[45] Date of Patent:
`Lichtman et al.
`
`
`[75]
`
`[54] SYSTEM FOR CONFIGURING DEVICES
`FOR A COMPUTER SYSTEM
`Inventors: Moshe Lichtman, Bellevue; Mark R.
`LaeeTAIDEAEi E.
`non, seatie,
`Mapa
`A.
`ibe.
`Woodinville; Pierre-Yves Santerre.
`Bellevue; Robert T. Short. Kirkland;
`David W. Voth. Redmond,all of Wash.
`
`.
`
`[73] Assignee: Microsoft Corporation. Redmond.
`Wash.
`
`3959,
`
`OFAN Ct
`
`al.
`
`2/1994 Guthrie et ab. o.ceesescssscssssenssns 364/403
`5,289,372
`
`....
`3/1994 Cox etal.
`395/325
`5,297,262
`
`6/1994 Kumagai .............
`. 395/800
`5,319,790
`sssseccreccssnsesnesesfe
`oa otood FeldenmanCt al.
`
`cucrrsccccccnssseseeseroes
`340/825.03
`5.371.492
`12/1994 Lohrbach et al.
`1/1995 Lemonetal. ......
`5,379,431
`we 395/700
`1/1995 Chikira et al. scssssssscsssneersen 395/575
`5,386,551
`cessosscsesssnsnnnrvers 395/700
`5,386,567
`1/1995 Liem et al.
`
`5,408,618
`4/1995 Aho etal.
`395/325
`5,412,798
`5/1995 Garey .....
`. 395/500
`.......
`5,420,987
`5/1995 Reid et al.
`395/325
`
`5,428,748
`6/1995 Davidsonet al.
`395/275
`......
`5,450,570
`9/1995 Richeket al.
`395/500
`
`.......
`we 395/700
`5,452,454
`9/1995 Basu et al.
`. 395/200.1
`5,454,078
`9/1995 Heimsoth et al.
`
`......
`we 395/700
`5,459,867
`10/1995 Adams et al.
`5,459,869 10/1995 Spilo osccccscosessesssecseccesseansenneons 395/700
`.
`;
`(List continued on next page.)
`OTHER PUBLICATIONS
`
`.
`[21] Appl. No.: 250,698
`[22]
`Filed:
`May 27, 1994
`,
`[SE]
`Tmt. CLS occcccseeee GO6F 15/02; GOGF 12/02;
`GO6F 9/445: GO6F 15/40
`[52] U.S. Che eeecesseseseees 395/200.5; 395/828; 395/830;
`395/200.56
` “CardWare™ User Manual 1.50A.” released on Oct. 8, 1993
`[58] Field of Seareda 0.0...ecsccecocsesseeee 395/600, 828,
`395/830. 882. 500, 700. 200.56, 200.5|by Award Software International. Inc.. pp. 1-33.
`
`[56]
`
`References Cited
`U.S. PATENT DOCUMENTS
`
`Primary Examiner—ThomasC. Lee
`Assistant Examiner—Rehana Perveen
`Attorney, Agent, or Firm—Jones & Askew, LLP
`
`[57]
`ABSTRACT
`...eeeecseseeenenee 364/200
`5/1981 Subrizi et ab.
`4,268,901
`....essseseseeree 364/900
`2/1982 Shimizu etal.
`4,317,183
`A system for configuring devices of a computer system
`...cessscsesssssseneees 364/200
`4,562,535 12/1985 Vincent et ab.
`without user intervention. Device information for each of
`4,589,063
`5/1986 Shah etal. ........
`.- 364/200
`the devices is collected to uniquely identify the devices and
`4,660,141
`4/1987 Ceccon et al.
`... 364/200
`to describe the device characteristics associated with the
`4,727,475
`2/1988 Kiremidjian ......
`.- 364/200
`
`operation of devices with the computer. Computer resources,
`4,730,251
`3/1988 Aakre et al.
`......
`364/200
`which support
`the functions of the devices within the
`4,974,151
`11/1990 Advani et al.
`....
`- 364/200
`
`ss
`:
`4,982,325
`1/1991 Tignor et al.
`.....
`... 364/200
`Computer, are allocated based uponthe device information.
`5,038.294
`8/1991 Arakawaetal.
`.
`"364/491
`This allocation process prevents a potential conflicting use
`5,109,484
`4/1992 Hugheset al.
`....
`_.. 395/200
`
`of the resources by the devices. A device driver, which
`5,136,709
`8/1992 Shirakabe etal.
`.. 395/700
`enables communications between the corresponding device
`5,157,384 10/1992 Greanias et al.
`..
`w= 340/706
`
`and the computer system, is also identified for each of the
`5,197,093
`3/1993 Knuth et ab.
`...csscsssessseseeneeesene 379/61
`devices in response to the device information. In response to
`5,247,682
`9/1993 Kondow et al.
`.......ssscseceersenres 395/700
`the allocation of resources, the identified device drivers are
`5,249,270
`9/1993 Stewart etal. ........
`.. 395/200
`
`loaded
`and the devi
`tivated f
`Son
`with th
`5.252.951
`10/1993 ‘Tannenbaum et al.
`"345/156
`(Oaded
`5.257.368 10/1993 Benson etal. «.....«
`" 395/600
`the
`devicesare activated’
`Tor operation wasvine
`and
`
`
`.5,257,379 10/1993 Cwiakala et al. "3957700©Computer.
`
`
`5,257,387 10/1993 Richek et al.
`....
`. 395/800
`5,263,148
`11/1993 Jones, Jr. et ab. occsensneseeee 395/500
`98 Claims, 11 Drawing Sheets
`
`PSYSTEMBUSSES
`
`:|INTEGRATED wrerrace |:
`
`7 |
`b]susisal
`gusiscsn
`|
` 1S
`
`:
`
`BUS
`
`BUS
`
`
`(PCMCIA}
`
`HUAWEI EX. 1020 - 1/40
`
`HUAWEI EX. 1020 - 1/40
`
`
`
`5,787,246
`Page 2
`
`5,517,636
`U.S. PATENT DOCUMENTS
`5/1996 DeHart et ab. csssssscsssssrsseeen 395/500
`6
`.
`_
`icciri
`00
`5,469,545
`11/1995 Vanbuskirk et al.
`..ssssseessen 395/200.01
`°°rose gee accu al
`eons;
`
`
`
`
`
`
`
`SATLOTS nietal.11/1995 Zias ceessossesssnsseessenesssnnssssnsee 395/162 342; . vee
`
`
`.....ccsesesecersecenaee 395/600
`5,485,460
`1/1996 Schrieretal. ..
`. 370/94.1
`5,553,281
`9/1996 Brown et al.
`12/1996 Hickman et al.
`.....ssssrsssssessee 342/385
`sessssssssssseessssee 395/500
`SA9L813
`2/1996 Bondyet al.
`5,581,261
`
`HUAWEI EX. 1020 - 2/40
`
`HUAWEI EX. 1020 - 2/40
`
`
`
`Jul. 28, 1998
`
`Sheet 1 of 11
`
`5,787,246
`
`U.S. Patent
`
`zi
`
`vd3:3iPvWed:Pwacow)||ouomaN24‘Psovauaun|:J30lAadAOaG:3WALSAS!_:|Sldnyaini|TOULNOD
`
`JOINaG:!JOVHOLSJOVHOLS|92AYOWGIN
`AMOWBI
`
`
` asvaviva|!(isos)sna(vs)sna3ONIIWYadOYaLNWOD|}J0VSHALNIG3IVHOSLNI; SHONNOSSY!yo—_—poneOEMEEENS!sng|A1v901:Cb:pNdd
`HILNdNOD!i2e:[on91:dl'TPayowaw|WALSAS
`BE}:3LOlds6262
`
`O/lJOIAIC
`
`‘ll!0g
`
`HUAWEI EX. 1020 - 3/40
`
`HUAWEI EX. 1020 - 3/40
`
`
`
`
`
`U.S. Patent
`
`Jul. 28, 1998
`
`Sheet 2 of 11
`
`5,787,246
`
`CONFIGURATION LOGIC
`
` DETECT
`31
`
`LOGIC
`
`
`
`32
`COLLECT
`LOGIC
`
`
`
`ARBITRATE
`
`
`SYSTEM BUS
`DEVICE
`LOGIC
`
`
`DRIVER
`
`IDENTIFICATION
`
`LOGIC
`
`
` 35
`
`DRIVER
`
`
`START
`
`FIG 2
`
`LOADER LOGIC 37
`
`
`
`
` OBTAIN
`
`
`
` ALLOCATE
`COMPUTER
`
`
`RESOURCES
`
`
`
`COLLECT
`DEVICE
`INFORMATION
`
`38
`
`DEVICE
`
`DRIVERS
`
`
`40
`
` LOAD
`DEVICE
`
`DRIVERS
`
`
`
`
`
`FIG 3
`
`HUAWEI EX. 1020 - 4/40
`
`HUAWEI EX. 1020 - 4/40
`
`
`
`US. Patent
`
`Jul. 28, 1998
`
`Sheet 3 of 11
`
`5,787,246
`
`POWER
`
`41
`
`COMPUTER 42
`
`CONFIGURE
`SYSTEM LEVEL
`
`
`DEVICES
`
`
`
`
`SELECT INTEGRATED
`SYSTEM
`
`
`“EXPANSION” BUS
`
`
`
`
`
`
` ASSIGN DEVICE
`
`DETECT
`PARTICULAR
`DEVICE
`
`IDENTIFICATION
`
`CODE OBTAINLOGICAL|79
`
`CONFIGURATION
`
`
`GOTO
`INACTIVATE ALL
` DEVICES
`{—»({
`step
`DEVICESNOT
`REQUIRED FOR
`
`BOOT?
`REQUIRED FOR BOOT 66
`
`
`GOTO
`STEP
`58
`
`FIG 4A
`
`HUAWEI EX. 1020 - 5/40
`
`HUAWEI EX. 1020 - 5/40
`
`
`
`U.S. Patent
`
`Jul. 28, 1998
`
`Sheet 4 of 11
`
`5,787,246
`
`54
`
`YES BRANCH
`
`IDENTIFY BOOT
`DEVICE DRIVERS
`
`60
`
`RESOURCES
`CONFLICT-FREE?
`
`62
`
`ERROR
`MESSAGE
`
`64
`
`
`
`
`
`
`CONFIGURE
`REMAINING DEVICES
`REQUIRED FOR BOOT
`
`
`
`IDENTIFY DEVICE DRIVERS|_-79
`FOR REMAINING
`INTEGRATED BUS DEVICES
`
`
`
`
`72
`
`
`
`COMPARE RESOURCES
`TO REQUIREMENTS AND
`
`
`CONSTRAINTS
`
`
`
`
`HUAWEI EX. 1020 - 6/40
`
`HUAWEI EX. 1020 - 6/40
`
`
`
`US. Patent
`
`Jul. 28, 1998
`
`Sheet 5 of 11
`
`5,787,246
`
`
`
`ALLOCATE
`RESOURCES
`
`74
`
`CONFIGURE
`DEVICES
`
`
`
`78
`
`
`
`
`
`
`
`LOAD
`DEVICE
`
`
`DRIVERS
`
`
`80
`
`
`COMPUTER CONFIGURED|92
`ANOTHER
`SYSTEM BUS
`AND AVAILABLE FOR
`
`DETECTED?
`
`OPERATIONS
`
`YES
`
`SELECT ANOTHER
`SYSTEM BUS
`
`DETECT
`PARTICULAR
`DEVICE
`
`
`
`ASSIGN DEVICE
`INFORMATION
`
`
`
`OBTAIN LOGICAL
`CONFIGURATION
`DATA
`
`
` OBTAIN DEVICE
`NFO FROM ALL DEVICES
`
`ON BUS?
`
`
`GOTO
`
`ste?)
`
`FIG AC
`
`HUAWEI EX. 1020 - 7/40
`
`HUAWEI EX. 1020 - 7/40
`
`
`
`US. Patent
`
`Jul. 28, 1998
`
`Sheet 6 of 11
`
`5,787,246
`
`100
`
`START
`
`
`
`COMPATIBLE
`DEVICE
`AVAILABLE ?
`
`NO
`
`YES
`
`SEARCHFOR COMPATI-}_ [REGUESTUSERTO|712108
`BLE DEVICE HAVING
`SUPPLY SUBSTITUTE
`HIGHEST PRIORITY
`DEVICE DRIVER
`
`
`
`SELECT COMPATIBLE¥770 114
`
`
`DEVICE DRIVER FOR COM-
`STORE SUBSTITUTE
`PATIBLE DEVICE HAVING
`DEVICE DRIVER
`HIGHEST PRIORITY
`
`END
`
`FIG 9
`
`RETRIEVE SUBSTI-
`TUTE DEVICE DRIVER
`
`116
`
`160.
`
`[DEVICE
`
`10
`
`156
`
`156
`
`
`
`
`153
`CONFIGURATION OPERATING SYSTEM REGISTRY
`CONFIGURATION MANAGER|HARDWARE TREE
`
`158
`152
`
`
`=me
`
`AAee,a
`
`SO nemene.
`
`= 5 = 5
`
`20
`
`20
`
`20
`
`FIG 6
`
`HUAWEI EX. 1020 - 8/40
`
`HUAWEI EX. 1020 - 8/40
`
`
`
`US. Patent
`
`Jul. 28, 1998
`
`Sheet 7 of 11
`
`5,787,246
`
`170
`
`LOCAL BUS
`
`DEVICE IDENTIFICATION CODE: *PNPOA00\MODEM\0
`
`ASSIGNED RESOURCE ELEMENTS:IRQ3; I\03F8
`
`LOGICAL CONFIGURATION DATA:IRQ3; I\O3F8
`
`168
`
`153
`
`SOFTWARE _§,782
`SOFTWARE RELATED SETTINGS AND DRIVER INFORMATION
`
`HARDWARE
`
`184
`
`ENUM 188
`5 ROOT
`
`SYS BIOS
`
`ROOT
`
`180
`
`FIG 8
`
`18
`
`ISAENM
`
`196
`
`198
`
`L
`:
`SCSIENM
`
`194
`
`TCM1234\0
`PCMCIAENM
`
`HUAWEI EX. 1020 - 9/40
`
`HUAWEI EX. 1020 - 9/40
`
`
`
`
`
`
`COLLECTION
`MODULE
`
`
`
`RETRIEVE
`ID CODE
`
`APPEND
`BUS CODE
`
`RETRIEVE LOGI-
`
`CAL CONFIGU-
`RATION DATA
`
`
`
`HARDWARE
`TREE
`CONFIGURE
`ELEMENT
`
`U.S. Patent
`
`Jul. 28, 1998
`
`Sheet 8 of 11
`
`5,787,246
`
`ENUMERATE ELEMENT 299
`wre
`7
`Ptr rer cece errr eae
`
`206
`
`DETECTION
`MODULE
`
` 18
`
`SYSTEM
`
`f_
`
`202
`
`RECEIVE
`ASSIGNED
`RESOUR
`STORE
`ASSIGNED
`RESOURCE
`
`
`TRANSMIT
`ASSIGNED
`
`
`RESOURCES
`
`
`204
`
`
`
`DETECT
`ELEMENT
`
`FIG 9
`
`HUAWEI EX. 1020 - 10/40
`
`HUAWEI EX. 1020 - 10/40
`
`
`
`U.S. Patent
`
`Jul. 28, 1998
`
`Sheet 9 of 11
`
`5,787,246
`
`250
`
`
`
`SELECT
`SYSTEM BUS
`
`252
`
`
`
`
` RETRIEVE IDENTIFI-
`
`
`DETECT PARTICULAR
`DEVICE ON SELECT-
`ED SYSTEM BUS
`
`
`
`CATION CODE FROM
`PARTICULAR DEVICE
`
`APPEND SYSTEM BUS
`CODE TO
`IDENTIFICATION CODE
`
`
`RETRIEVE LOGICAL
`CONFIGURATION
`
`DATA
`
` LINK LOGICAL
`
`
`
`CONFIGURATION'
`DATA TO DEVICE
`IDENTIFICATION CODE
`
`
`
`FIG 10
`
`HUAWEI EX. 1020 - 11/40
`
`HUAWEI EX. 1020 - 11/40
`
`
`
`U.S. Patent
`
`Jul. 28, 1998
`
`Sheet 10 of 11
`
`5,787,246
`
`REMOVED DEVICE
`
`UNLOAD DEVICE
`DRIVER FOR
`
`270
`
`[272
`
`[276
`
`278
`
`START
`
`DETECT DEVICE
`INSERTION
`
`ENUMERATE
`DEVICES ON
`AFFECTED BUS
`
`[296
`
`ALLOCATE
`RESOURCES
`
`
`
`
`LOAD
`DEVICE
`DRIVERS
`
`
`
`90
`
`269
`
`STARTaU
`
`DETECT REMOVAL
`OF DEVICE
`
`STOP ACCESSING
`REMOVED
`DEVICE
`
`280 282
`
`
` IDENTIFY
`
`284
`FREERESOURCES|274
`DEVICE
`
`ALLOCATED TO
`DRIVERS
`REMOVED DEVICE
`
` ARBITRATEAND
`
`
` 288
`
`
`
`
`FIG TIA
`
`HUAWEI EX. 1020 - 12/40
`
`HUAWEI EX. 1020 - 12/40
`
`
`
`U.S. Patent
`
`Jul. 28, 1998
`
`Sheet 11 of 11
`
`5,787,246
`
`154
`
`ee 306.
`
`
`
`RESERVED
`
`RESOURCE
`
`TABLE
`ASSIGNED
`RESOURCE
`AB
`
`158
`
`CONFIGURATION
`MANAGER
`
`
`|:
`|:
`|:
`|:
`]:
`
`
`
`
`
`
`RESOURCEan
`RESOURCEELMENT
`RESOURCE
`OP
`
`
`
`ASSIGNE
`RVED?
`ELEMENT
`
`AVAILABLE?
`
`320
`
`SELECT
`POSSIBLE
`CONFIGURATION
`
`328
`
`ASSIGN
`
`IS
`
`
`NON-RESERVED
`
`RESOURCE ELMENT
`
`
`FIG 13
`
`HUAWEI EX. 1020 - 13/40
`
`HUAWEI EX. 1020 - 13/40
`
`
`
`5,787,246
`
`1
`SYSTEM FOR CONFIGURING DEVICES
`FOR A COMPUTER SYSTEM
`
`TECHNICAL FIELD
`
`10
`
`20
`
`25
`
`30
`
`35
`
`45
`
`50
`
`55
`
`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 ofinstalling 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 componentuntil 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 different 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.
`Whenattempting 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. Config.Sys, 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 process-
`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-
`
`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 adapter 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 expansionbus.
`Furthermore, system configuration program files of the
`operating system may need to be updated to refiect 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 imple-
`menting the MCA and EISAstandards 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 offered 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
`
`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 busarchi-
`tectures and device classes. Accordingly, the present inven-
`tion efficiently allocates system resources between the
`devices of the computer system without substantial user
`intervention.
`
`SUMMARYOF 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 insert 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
`(SCSD, 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 bussesof 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 identification 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 treelike structure of device nodes. Each device
`connected to the computer system is represented by a device
`nodethatstores 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 arrangementis 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 expansionunit 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 a fixed disk or another type of mass memory
`storage device of the computer system.
`
`10
`
`15
`
`20
`
`25
`
`30
`
`35
`
`45
`
`350
`
`55
`
`65
`
`HUAWEI EX. 1020 - 15/40
`
`HUAWEI EX. 1020 - 15/40
`
`
`
`5,787,246
`
`5
`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 usedto 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 containsthe identi-
`fication code for the desired device. Thus, the identification
`code can be used as an entry key to search the records ofthe
`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 andis 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 overany 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
`highestpriority or ranking is selected and used to support the
`operationsof 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 computer
`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 doesnot conflict with the use of that particular
`resource by another device. A resource elementis 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
`
`6
`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 invention. a
`system is provided for supporting the bus-specific operations
`of devices connected to a system bus of a computer system.
`This system, which is alternatively referred to as an enu-
`meratoror a busdriver. 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-
`tation 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 independentof 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 (1) detecting dynamic events causing an asyn-
`chronous change in the operating state of the computer
`system; (2) enumerating each of the devices connectedto the
`assigned system bus in response to the detection of a
`dynamicevent; and (3) supplying assigned resources to each
`of the devices in response to an allocation of resources. To
`implementthese 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 formedbya tree-like
`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 resourcesto the appropriate devices. In response to
`the assigned resources, the configure element accesses the
`device nodes in the computer memory andstores 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
`
`30
`
`35
`
`45
`
`50
`
`35
`
`65
`
`HUAWEI EX. 1020 - 16/40
`
`HUAWEI EX. 1020 - 16/40
`
`
`
`5,787,246
`
`7
`system from a docking station. The event detect elementis
`further responsive to booting the computer or the power
`state for the computer. In response to one of these events, the
`event detect element can supply the event detection infor-
`mation to the enumerate element,
`thereby initiating the
`enumeration process. The event detect element also can be
`responsive to certain query-type instruction signals contain-
`ing commandsfor actions by the enumerator. These com-
`mands typically include: