`Lichtman et al.
`
`[54) SYSTEM FOR CONFIGURING DEVICES
`FOR A COMPUTER SYSTEM
`
`[75]
`
`Inventors: Moshe Lichtman, Bellevue; Mark R.
`Enstrom. Redmond; Thomas E.
`Lennon, Seattle; Ralph A. Lipe.
`Woodinville; Pierre-Yves Santerre.
`Bellevue; Robert T. Short, Kirkland;
`David W. Voth. Redmond, all of Wash.
`
`[73] Assignee: Microsoft Corporation. Redmond.
`Wash.
`
`[21] Appl. No.: 250,698
`
`May 27, 1994
`
`[22] Filed:
`Int. CL 6
`
`[51]
`
`............................ G06F 15/02; G06F 12/02;
`G06F 9/445; G06F 15/40
`[52) U.S. Cl ........................ 395/200.S; 395/828; 395/830;
`395/200.56
`[58] Field of Search ..................................... 395/600, 828.
`395/830. 882. 500, 700. 200.56, 200.5
`
`[56)
`
`References Cited
`
`U.S. PATENT DOCUMENTS
`
`4,268,901
`4,317,183
`4,562,535
`4,589,063
`4,660,141
`4,727,475
`4,730,251
`4,974,151
`4,982,325
`5,038,294
`5,109,484
`5,136,709
`5,157,384
`5,197,093
`5,247,682
`5,249,270
`5,252,951
`5,257,368
`5,257,379
`5,257,387
`5,263,148
`
`5/1981 Subrizi et al ........................... 3641200
`2/1982 Shimizu et al ......................... 3641900
`1211985 Vincent et al .......................... 3641200
`5/1986 Shah et al ............................... 3641200
`4/1987 Ceccon et al ........................... 3641200
`2/1988 Kiremidjian ............................ 3641200
`3/1988 Aakre et al. ............................ 3641200
`11/1990 Advani et al ........................... 3641200
`1/1991 Tignor et al ............................ 3641200
`8/1991 Arakawa et al ........................ 3641491
`4/1992 Hughes et al ........................... 395/200
`8/1992 Shirakabe et al. ...................... 395noo
`10/1992 Greanias et al ......................... 340n06
`3/1993 Knuth et al ............................... 379/61
`9/1993 Kondou et al. ......................... 395noo
`9/1993 Stewart et al. .......................... 395/200
`10/1993 Tannenbaum et al .................. 345/156
`10/1993 Benson et al. .......................... 395/600
`10/1993 Cwiakala et al. ....................... 395noo
`10/1993 Richek et al ........................... 395/800
`11/1993 Jones, Jr. et al. ....................... 395/500
`
`111111111111~ 1111111111111111111111111111111111111111111111
`US005787246A
`5,787,246
`[111 Patent Number:
`[45J Date of Patent:
`Jul. 28, 1998
`
`5,289,372
`5,297,262
`5,319,790
`5,335,350
`5,359,713
`5,371,492
`5,379,431
`5,386,551
`5,386,567
`5,408,618
`5,412,798
`5,420,987
`5,428,748
`5,450,570
`5.452,454
`5,454,078
`5,459,867
`5,459,869
`
`211994 Guthrie et al. .......................... 3641403
`3/1994 Cox et al ................................ 3951325
`6/1994 Kumagai ................................. 395/800
`8/1994 Feldenman et al ....................... 455/17
`10/1994 Moran et al. ........................... 395/200
`1211994 Lohrbach et al .................. 340/825.03
`1/1995 Lemon et al ........................... 395noo
`1/1995 Chikira et al ........................... 395/575
`111995 Lien et al ............................... 395noo
`4/1995 Aho et al ................................ 395/325
`5/1995 Garney .................................... 3951500
`511995 Reid et al. .............................. 395/325
`6/1995 Davidson et al.
`.. .................... 3951275
`911995 Richek et al. . ......................... 395/500
`911995 Basu et al ............................... 395noo
`9/1995 Heimsoth et al .................... 395/200.l
`10/1995 Adams et al. .. ........................ 395noo
`10/1995 Spilo ....................................... 395noo
`
`(List continued on next page.)
`
`OTHER PUBLICATIONS
`
`"CardWare™ User Manual l.50A." released on Oct. 8. 1993
`by Award Software International, Inc., pp. 1-33.
`
`Primary Examiner-Thomas C. Lee
`Assistant Examiner-Rehana Perveen
`Attome)I Agent, or Firm-Jones & Askew. ILP
`
`[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
`
`12
`
`IJ
`
`VUJ
`
`CP\J
`
`LOCAL
`lllJS
`
`COMPUTER
`DATABASE
`
`.,
`
`29
`
`29
`
`OLYMPUS et al. EX. 1017 - 1/40
`
`
`
`5,787,246
`Page 2
`
`U.S. PATENT DOCUMENTS
`
`5,469,545
`5,471,675
`5,485,460
`5,491,813
`
`11/1995 Vanbuskirk et al .......•.•...••. 395/200.01
`11/1995 Zias ......................................... 395/162
`1/1996 Schrier et al .......................... 370194.1
`2/1996 Bondy et al. ........................... 395/500
`
`5,517,636
`5,517,646
`5,542,055
`5,553,281
`5,581,261
`
`511996 DeHart et al ........................... 395/500
`511996 Piccirillo et al. ....................... 395noo
`7 /1996 Amini et al. .... ...... .................. 3951'28 l
`911996 Brown et al. ... ................ ........ 395/600
`12/1996 Hickman et al ........................ 3421385
`
`OLYMPUS et al. EX. 1017 - 2/40
`
`
`
`~
`~
`N
`,,.
`....J
`00
`'!...I
`01
`
`! -s, --
`~ -~
`
`~
`
`~ F-
`
`•--------------------?~_j
`:
`
`'\.
`
`FIG 1
`
`:
`r·----------------~----~
`
`RESOURCES
`
`14
`
`T
`
`I
`I
`I
`
`BUS
`
`LOCAL
`
`:
`• •
`' . --
`l DATABASE
`I : I COMPUTER
`.
`~---------__________________ j
`j
`v
`I/
`
`16
`
`"
`
`-
`
`17
`
`'
`
`" 26
`
`" 24
`
`1/0
`
`OMA
`
`INTERRUPTS
`
`" 22
`
`MEMORY
`
`" 21
`
`SYSTEM
`CONTROL
`COMPUTER
`
`" 10
`
`I
`
`OPERATING
`
`SYSTEM
`
`------------------~
`I
`
`11'
`
`(PCMCIA)
`
`INTERFACE
`
`BUS
`I
`
`"" 29
`
`DEVICE
`STORAGE
`MEMORY
`
`20
`\
`(MODEM)
`DEVICE
`
`I
`
`29
`
`DEVICE
`STORAGE
`MEMORY
`
`20
`•
`\
`(NETWORK)
`
`I
`
`DEVICE
`
`BUS(SCSI)
`INTERFACE
`
`INTEGRATED
`
`BUS(ISA)
`
`I . I
`: SYSTEM suSSES·-----------------_______ ;
`'
`'
`·-------
`:
`
`--------
`
`-
`
`T
`
`L----------•----------·---------,
`' I
`I . I
`
`15
`
`I
`
`I
`I
`I
`I
`I
`I
`
`• I
`• I
`
`I
`
`~ = """"' ~ a
`
`•
`rJJ.
`0 •
`
`a
`
`/
`
`: w
`
`:
`r---------------------------------,
`
`3
`
`CPU
`
`1/12
`
`OLYMPUS et al. EX. 1017 - 3/40
`
`
`
`U.S. Patent
`
`Jul. 28, 1998
`
`Sheet 2 of 11
`
`5,787,246
`
`CONFIGURATION LOGIC
`
`31
`
`30
`
`DETECT
`LOGIC
`
`COLLECT
`LOGIC
`
`ARBITRATE
`LOGIC
`
`DRIVER
`IDENTIFICATION
`LOGIC
`
`DRIVER
`LOADER LOGIC
`
`FIG 2
`
`18
`
`0
`
`SYSTEM BUS
`
`DEVICE
`
`START
`
`COLLECT
`DEVICE
`INFORMATION
`
`OBTAIN
`DEVICE
`DRIVERS
`
`ALLOCATE
`COMPUTER
`RESOURCES
`
`LOAD
`DEVICE
`DRIVERS
`
`FIG J
`
`OLYMPUS et al. EX. 1017 - 4/40
`
`
`
`U.S. Patent
`
`Jul. 28, 1998
`
`Sheet 3of11
`
`5,787,246
`
`41
`
`42
`
`44
`
`46
`
`48
`
`50
`
`POWER
`COMPUTER
`
`CONFIGURE
`SYSTEM LEVEL
`DEVICES
`
`SELECT INTEGRATE
`SYSTEM
`"EXPANSION" BUS
`
`DETECT
`PARTICULAR
`DEVICE
`
`ASSIGN DEVICE
`IDENTIFICATION
`CODE
`
`OBTAIN LOGICAL
`CONFIGURATION
`DATA
`
`NO
`
`56
`
`NO
`
`INACTIVATE ALL
`DEVICES NOT
`REQUIRED FOR BOOT
`
`---...
`
`FIG 4A
`
`OLYMPUS et al. EX. 1017 - 5/40
`
`
`
`U.S. Patent
`
`Jul. 28, 1998
`
`Sheet 4of11
`
`5,787,246
`
`YES BRANCH
`r - - - - - ' - - - - - ._ 58
`IDENTIFY BOOT
`DEVICE DRIVERS
`
`NO
`
`ERROR
`MESSAGE
`
`62
`
`YES
`CONFIGURE
`R EMAlNING DEVICES
`REQUIRED FOR BOOT
`
`POST
`
`BOOT
`
`64
`
`66
`
`68
`
`IDENTIFY DEVICE DRIVERS 70
`FOR REMAINING
`INTEGRATED BUS DEVICES
`
`COMPARE RESOURCES
`TO REQUIREMENTS AND
`CONSTRAINTS
`
`72
`
`FIG 48
`
`OLYMPUS et al. EX. 1017 - 6/40
`
`
`
`U.S. Patent
`
`Jul. 28, 1998
`
`Sheet 5 of 11
`
`5,787,246
`
`74
`
`76
`
`78
`
`ALLOCATE
`RESOURCES
`
`CONFIGURE
`DEVICES
`
`LOAD
`DEVICE
`DRIVERS
`
`NO
`
`COMPUTER CONFIGURED 82
`AND AVAILABLE FOR
`OPERATIONS
`
`84
`
`86
`
`88
`
`90
`
`SELECT ANOTHER
`SYSTEM BUS
`
`DETECT
`PARTICULAR
`DEVICE
`
`ASSIGN DEVICE
`INFORMATION
`
`OBTAIN LOGICAL
`CONFIGURATION
`DATA
`
`NO
`
`FIG 4C
`
`OLYMPUS et al. EX. 1017 - 7/40
`
`
`
`U.S. Patent
`
`Jul. 28, 1998
`
`Sheet 6 of 11
`
`5,787,246
`
`100
`
`START
`
`NO
`
`FIG~
`
`10
`
`153
`
`OPERATING SYSTEM
`HARDWARE TREE
`
`REGISTRY
`
`152
`
`ARBITRATOR
`
`154
`
`DEVICE DRIVER
`
`156
`
`156
`
`lr18
`
`20
`
`ENUMERATOR
`BIOS
`
`150
`ARBITRATOR
`--~=:::::::::::...~---... ; ______ _
`-~
`~
`-------------------------
`--sv-s"""'rE_M_BU_S_lr18
`.---S-YS_T ....... EM_B_U_S ___,lr18
`SYSTEM BUS
`
`154
`
`DEVICE DRIVER
`
`DEVICE
`
`20
`
`20
`
`DEVICE
`
`20
`
`DEVICE
`
`20
`
`DEVICE
`
`FIG 6
`
`OLYMPUS et al. EX. 1017 - 8/40
`
`
`
`U.S. Patent
`
`Jul. 28, 1998
`
`Sheet 7 of 11
`
`5,787,246
`
`LOCAL BUS
`-----------------
`ROOT\ROOT\
`
`162
`
`152
`
`/
`
`164
`
`ISABUS
`
`172
`
`ROOT\ *PNPOAOO\O
`176
`
`179
`
`SCSJBUS
`
`ROOT\E!SAO\O
`
`170
`
`166
`
`NETWORK
`*PNPOAOO\Net \0
`
`174
`
`MODEM
`*PNPOAOO\MODEM\O
`178 ._ ___ __.
`
`168
`
`171
`
`PCMCIABUS
`*PNPOAOO\PCMCIA \0
`
`FIG 7A
`
`------------------------~~~~~-------------------------- 1.,/168
`DEVICE IDENTIFICATJON CODE *PNPOAOO\MODEM\O
`LOGICAL CONFIGURATION DATA: IRQ3; l\03F8
`
`ASSIGNED RESOURCE ELEMENTS: IRQ3; l\03F8
`
`ROOT
`
`180
`
`FIG 78
`
`153
`
`/
`
`SOFTWARE 182
`j
`
`LsoFTWARE RELATED SETTINGS AND DRIVER INFORMATION
`
`HARDWARE
`~ENUM
`184
`188 ROOT
`190
`i - - ' - - - SYS BIOS
`192
`1---<---- ISAENM
`~ TCM123410
`•
`PCMCIAENM
`• •
`194
`'---"'---- SCSIENM
`
`FIG 8
`
`OLYMPUS et al. EX. 1017 - 9/40
`
`
`
`U.S. Patent
`
`Jul. 28, 1998
`
`Sheet 8of11
`
`5,787,246
`
`150
`'-r------------------------------------,
`ENUMERATE ELEMENT 200 !
`i
`! r-----------------------------<
`!
`206
`
`I
`
`: l
`
`I
`
`DETECTION
`MODULE
`
`li-
`
`I
`
`i
`
`I
`
`j
`
`I
`
`18
`
`0
`
`SYSTEM
`BUS
`
`DEVICE
`
`158
`
`CONFIGURATION
`MANAGER
`
`152
`
`HARDWARE
`TREE
`
`I
`
`I
`I
`
`I
`
`I
`
`I
`I
`
`I
`
`COLLECTION
`MODULE
`' I
`: :210
`RETRIEVE
`......
`: :
`ID CODE
`I :212
`APPEND
`"
`BUS CODE
`l214
`RETRIEVE LOG!-
`"
`CAL CONFIGU-
`RATION DATA
`
`208
`
`I
`I
`
`\ I
`:
`I ~-------••••-··--·-•··---·~---J
`I
`I
`
`CONFIGURE
`ELEMENT
`
`202
`
`204
`
`1 ..
`
`EVENT
`DETECT
`ELEMENT
`
`~------------------------------------~
`
`FIG 9
`
`OLYMPUS et al. EX. 1017 - 10/40
`
`
`
`U.S. Patent
`
`Jul. 28, 1998
`
`Sheet 9of11
`
`5,787,246
`
`~250
`
`252
`
`SELECT
`SYSTEM BUS
`
`DETECT PARTICULAR 256
`DEVICE ON SELECT-
`ED SYSTEM BUS
`
`258
`
`RETRIEVE IDENTIFI-
`CATION CODE FROM
`PARTICULAR DEVICE
`
`PPEND SYSTEM BUS 260
`CODE TO
`IDENTIFICATION CODE
`
`RETRIEVE LOGICAL 262
`CONFIGURATION
`DATA
`
`264
`
`UNK LOGICAL
`CONFIGURATION '
`DATA TO DEVICE
`IDENTIFICATION CODE
`66
`
`NO
`
`268
`
`END
`
`FIG 10
`
`OLYMPUS et al. EX. 1017 - 11/40
`
`
`
`U.S. Patent
`
`Jul. 28, 1998
`
`Sheet 10 of 11
`
`5,787,246
`
`269
`
`START
`
`278
`
`START
`
`270
`
`272
`
`274
`
`276
`
`DETECT REMOVAL
`OFDEVJCE
`
`STOP ACCESSING
`REMOVED
`DEVICE
`
`FREE RESOURCES
`ALLOCATED TO
`REMOVED DEVICE
`
`UNLOAD DEVICE
`DRIVER FOR
`REMOVED DEVICE
`
`FIG 1 lA
`
`280
`
`282
`
`284
`
`286
`
`288
`
`DETECT DEVICE
`INSERTION
`
`ENUMERATE
`DEVICES ON
`AFFECTED BUS
`
`IDENTIFY
`DEVICE
`DRIVERS
`
`ARBITRATE AND
`ALLOCATE
`RESOURCES
`
`LOAD
`DEVICE
`DRIVERS
`
`FIG 11 B
`
`OLYMPUS et al. EX. 1017 - 12/40
`
`
`
`U.S. Patent
`
`Jul. 28, 1998
`
`Sheet 11 of 11
`
`5,787,246
`
`154
`,----------------------------------------------------~
`:
`306.
`
`158
`
`ANALYSIS
`ELEMENT
`
`CONFIGURATlON
`MANAGER
`
`ASSIGNMENT
`ELEMENT
`
`300
`
`302
`
`304
`
`RESERVED
`RESOURCE
`TABLE
`ASSIGNED
`RESOURCE
`
`' I
`'
`~------------·---------------------------------------~
`
`FIG 12
`
`START
`
`320
`
`SELECT
`POSSIBLE
`CONFIGURATION
`
`ASSIGN
`RESOURCE
`ELEMENT
`
`328
`
`END
`
`FIG l'J
`
`OLYMPUS et al. EX. 1017 - 13/40
`
`
`
`5,787,246
`
`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.
`
`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(cid:173)
`eral devices and add-on systems are now commercially
`5 available to enable the user to customize the functions and
`operating characteristics of a personal computer. Docking(cid:173)
`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
`15 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(cid:173)
`tion of adapter boards within the computer. The ISA bus
`20 structure requires allocation of resources. such as hardware
`interrupts. DMA channels. memory addresses. and J/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
`25 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(cid:173)
`ing switch settings on the boards to change the decode maps
`for memory and I/O ports and to direct the DMA channels
`30 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
`35 Channel Architecture (MCA) and the Extended Industry
`Standard Architecture (EISA) standards. have limited hard(cid:173)
`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(cid:173)
`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(cid:173)
`puter systems having preconfigured hardware and prein-
`50 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(cid:173)
`ing a customized function through this standardized con(cid:173)
`figuration approach.
`To overcome the frustration of users with present com(cid:173)
`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(cid:173)
`erly work with the computer. There is a further need for a
`system that determines the optimal configuration for its
`
`10
`
`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(cid:173)
`ficulties faced by many users during the configuration pro(cid:173)
`cess are emphasized by the absence of an automated process
`for resolving resource conflicts.
`For many personal computer systems. neither the operat(cid:173)
`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(cid:173)
`ware devices that attempt to share the same resource.
`Accordingly. a user typically must resolve a resource con(cid:173)
`flict by first identifying the problem and thereafter experi(cid:173)
`menting with hardware and software configurations in an
`attempt to correct the resource conflict.
`When attempting to tackle hardware and software inte(cid:173)
`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. 40
`memory addresses, and input/output (J/0) 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 45
`technical concepts. some users find the configuration pro(cid:173)
`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(cid:173)
`mum coordination between the computer hardware and
`software components. Users were presented with few diffi(cid:173)
`cult configuration issues after the initial installation of the
`computer system. A limited number of peripheral devices 55
`were commercially available for supplementing the process(cid:173)
`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 65
`available resources. Furthermore. a user can harness the
`powerful computing operations of a present personal com-
`
`60
`
`OLYMPUS et al. EX. 1017 - 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 con.figuration of devices which 5
`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 10
`to load the appropriate device chivers. In this manner. the
`present invention supports a variety of computer bus archi(cid:173)
`tectures and device classes. Accordingly. the present inven(cid:173)
`tion efficiently allocates system resources between the
`devices of the computer system without substantial user 15
`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 insert a
`mobile computer into a base station while both the mobile
`computer and the base station are powered and to reconfig(cid:173)
`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(cid:173)
`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(cid:173)
`ing interrupts. direct memory access (DMA) channels,
`memory addresses. and input/output (I/0) ports, at least one
`system bus, and devices. System busses are components that 50
`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 55
`(ISA), Micro Channel Architec:ture (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 60
`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 se1ial and parallel controllers. 65
`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(cid:173)
`tion. This allocation process prevents any potential conflict(cid:173)
`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(cid:173)
`figures devices of a computer system based upon the col(cid:173)
`lection of information about the devices and their connec-
`20 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
`2s portion of the device identification code. specifically an
`identi.fication code, uniquely identi.fies the detected device.
`Logical configuration data, which supplies configuration
`requirements for operating the particular device with the
`computer system, is also obtained for the detec.,ted device.
`30 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
`35 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
`node that stores associated device information. Furthermore.
`40 if an identi.fied 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
`45 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(cid:173)
`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 identi.fication of device drivers for the identi.fied
`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(cid:173)
`puter system. the device itself, a computer database main(cid:173)
`tained by the computer, or from the user via a disk contain(cid:173)
`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.
`
`OLYMPUS et al. EX. 1017 - 15/40
`
`
`
`5,787,246
`
`15
`
`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(cid:173)
`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 10
`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(cid:173)
`fication code for the desired device. Thus, the identification
`code can be used as an entry key to search the records of the 20
`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- 25
`tained by the computer system if compatible device infor(cid:173)
`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 30
`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 35
`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 40
`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 45
`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 50
`memory storage device and used to enable the communica(cid:173)
`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(cid:173)
`mation to detect whether the devices require a potential 55
`confilcting 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 confilct with the use of that particular
`resource by another device. A resource element is available 60
`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 65
`identical resource element. then this potential resource con(cid:173)
`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 contlict-free solution.
`In response to allocating the assigned resources to the
`5 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(cid:173)
`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 (1) detecting dynamic events causing an asyn(cid:173)
`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 op