throbber
United States Patent r191
`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 o

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket