`5,787,246
`[11] Patent Number:
`119
`United States Patent
`
`[45] Date of Patent: Jul. 28, 1998
`Lichtman etal.
`
`[54]
`
`[75]
`
`SYSTEM FOR CONFIGURING DEVICES
`FOR A COMPUTER SYSTEM
`
`Inventors: Moshe Lichtman, Bellevue; Mark R.
`Enstrom. Redmond; Thomas E.
`Lennon,Scattle; 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]
`
`[22]
`
`51)
`
`[52]
`
`[58]
`
`[56]
`
`Appl. No.: 250,698
`
`Filed:
`
`May 27, 1994
`
`Tmt, Co neecceseesessessseae GO6F 15/02; GOG6F 12/02;
`GO6F 9/445, GO6F 15/40
`US. Che ceecresconteesteersnes 395/200.5, 395/828; 395/830;
`395/200.56
`Field of Search ...........cccscscesenes 395/600, 828,
`395/830. 882, 500. 700, 200.56, 200.5
`
`References Cited
`
`U.S. PATENT DOCUMENTS
`
`
`
`5/1981 Subrizi et al...seesscenesneseee 364/200
`4,268,901
`
`2/1982 Shimizuetal.
`.
`4,317,183
`.
`4,562,535 12/1985 Vincent et al.
`4,589,063
`5/1986 Shah et al. ......
`4,660,141
`4/1987 Ceccon et al.
`..
`4,727,475
`2/1988 Kiremidjian ...
`4,730,251
`3/1988 Aakre et al.
`....
`4,974,151
`11/1990 Advani et al.
`..
`4,982,325
`1/1901 Tignoret al.
`...
`5,038,294
`8/1991 Arakawa etal.
`
`5,109,484
`4/1992 Hughesetal. ......
`
`5,136,709
`8/1992 Shirakabe et al.
`..
`395/700
`....
`5,157,384 10/1992 Greanias et al.
`
`5,197,093
`3/1993 Knuth etal.....
`5,247,682
`9/1993 Kondou et al.
`.
`
`......
`5,249,270
`9/1993 Stewart et al.
`
`10/1993 Tannenbaum et al.
`5,252,951
`
`5,257,368 10/1993 Benson etal. .........
`
`5,257,379 10/1993 Cwiakala et al.
`
`......
`5,257,387 10/1993 Richek et al.
`...
`5,263,148
`11/1993 Jones, Jr. et al.
`
`379/61
`395/700
`395/200
`345/156
`
`2/1994 Guthrie etal...eeeceneene 364/403
`5,289,372
`3/1994 Cox etal. .....
`v1 395/325
`5,297,262
`
`
`6/1994 Kumagai ..........
`wee 395/800
`5,319,790
`eee 455/17
`8/1994 Feldenman et al
`5,335,350
`
`+ 395/200
`5,359,713 10/1994 Moran et al.
`....
`
`5,371,492 12/1994 Lohrbachetal.
`340/825 .03
`
`...
`5,379,431
`1/1995 Lemonetal.
`395/700
`
`5,386,551
`1/1995 Chikira etal.
`395575
`
`....
`5,386,567
`1/1995 Lien etal.
`395/700
`
`4/1995 Aho etal. .
`5,408,618
`395/325
`
`
`5/1995 Garney ......
`5,412,798
`395/500
`.......
`wee 395/325
`5,420,987
`5/1995 Reid etal.
`
`6/1995 Davidson et al.
`5,428,748
`5,450,570
`9/1995 Richek et al.
`...
`
`ww» 395/700
`5,452,454
`9/1995 Basuet al.
`.......
`. 395/200.1
`5,454,078
`9/1995 Heimsoth et al.
`a 395/700
`5,459,867 10/1995 Adams et al.
`...
`$459,869 LO/1995 Spilo 0. cseccccsesscneecsesseeneeceeans 395/700
`
`...
`
`(List continued on next page.)
`
`OTHER PUBLICATIONS
`
`“CardWare™ User Manual 1.50A.” released on Oct. 8, 1993
`by Award Software International. Inc., pp. 1-33.
`
`Primary Examiner—ThomasC. Lee
`Assistant Examiner—Rehana Perveen
`Attorney, Agent, or Firm—Jones & Askew, LLP
`
`[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. Computerresources,
`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 responseto 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
`
`
`
`LOCAL
`BUS.
`
`SYSTEMBUSSES
`
`
`f
`TT
`OPERATING
`:
`
`coMputea
`1]
`INTERFACE
`DATABASE
`i]
`BUS [SCSI
`N
`:
`w@|| ‘22 i
`
`1S
`7 i
`16
`COMPUTER
`if
`'
`CONTROL
`|
`[INTERRUPTS
`J:
`SYSTEM
`|
`:
`
`INTERFACE]
`:
`ca
`sus
`|:
`i}
`t|cuca)
`
`
`
`at
`
`:
`
`DMA
`
`|
`
`OLYMPUS EX.1020 - 1/40
`
`
`
`[ SYSTEM | ;|MEMORY | :
`
`i
`
`
`
`
`
`
`
`OLYMPUS EX. 1020 - 1/40
`
`
`
`5,787,246
`Page 2aE
`
`....cseeensseneeen 395/500
`5/1996 DeHart et al.
`5,517,636
`U.S. PATENT DOCUMENTS
` decssscessessntseeeeees
`00
`icciri
`oseI
`yigee eam al
`eeeose
`5,469,545
`11/1995 Vanbuskirk et al.
`....
`395/200.01
`
`
`
`
`
`SATLOTS ntefal. .....11/1995 Zias ssccrssssssseeseeserseecerenenseesseeee 395/162 342, .
`
`
`9/1996 Brown etal. ....
`5,485,460
`1/1996 Schrier et al.
`370/94.1
`5,553,281
`. 395/600
`....ecceessseesssenseoes 395/500
`......ssccssmeee 342/385
`SAOL 813
`2/1996 Bondy et al.
`5,581,261 12/1996 Hickman et al.
`
`OLYMPUS EX.1020 - 2/40
`
`OLYMPUS EX. 1020 - 2/40
`
`
`
`U.S. Patent
`
`Jul. 28, 1998
`
`Sheet 1 of 11
`
`5,787,246
`
`b
`o
`
`VIG
`
`S1LdNYY3LNI
`
`éN
`
`SADENOSSY
`
`AYOWSIN
`
`2°)
`
`ONIIWeadO0
`
`WALSAS
`
`YALNAdWOD
`
`TOHLNOS
`
`W3.LSAS
`
`€l:Ndd
`LOld
`
`YH41LNdWOOA0VAYSLNI
`W207
`sna
`illi[iviowod)||gnat|JOVIYSLNI||
`
`(W3G0W)(HYOMLAN)
`
`ADIAIGADIAS0
`JDVYOLS
`
`62.
`
`6¢
`
`ANOWAW
`
`JIAO
`
`AYOWIN
`
`JOVYOLS
`
`4OIASO
`
`FA
`
`OLiysvaviva|:(ISOS)Sng
`
`daiVyOS1Ni
`
`
`
`(VSI)SNE
`
`0g.
`
`OLYMPUS EX.1020 - 3/40
`
`OLYMPUS EX. 1020 - 3/40
`
`
`
`
`
`
`
`
`
`
`
`U.S. Patent
`
`Jul. 28, 1998
`
`Sheet 2 of 11
`
`5,787,246
`
`CONFIGURATION LOGIC
`
` 31
` DETECT
`LOGIC
`
`32 COLLECT
`
`LOGIC
`
`LOGIC SYSTEM BUS
`
`ARBITRATE
`
`
`
`DRIVER
`IDENTIFICATION
`
`
`LOGIC
`
`
` 35
`
`DRIVER
`
`
`LOADER LOGIC
`
`30
`
`FIG 2
`
`
`
`DEVICE
`
`
`
`
`
`COLLECT
`DEVICE
`INFORMATION
`
`OBTAIN
`DEVICE
`DRIVERS
`
`ALLOCATE
`COMPUTER
`RESOURCES
`
`LOAD
`DEVICE
`DRIVERS
`
`FIG 3
`
`OLYMPUS EX.1020 - 4/40
`
`OLYMPUS EX. 1020 - 4/40
`
`
`
`U.S. Patent
`
`Jul. 28, 1998
`
`Sheet 3 of 11
`
`5,787,246
`
`POWER
`COMPUTER
`
`CONFIGURE
`SYSTEM LEVEL
`DEVICES
`
`
`
`
`
`41 42
` SELECT INTEGRATED
`
`
`SYSTEM
`“EXPANSION” BUS
`
`
`
`DETECT
`PARTICULAR
`
`
`DEVICE
` ASSIGN DEVICE
`CODE
`
` OBTAINLOGICAL|72
`
`IDENTIFICATION
`
`CONFIGURATION
`
`
`
`INACTIVATE ALL
`DEVICESNOT
`{—»(
`REQUIRED FOR BOOT
`
`
`
`GO TO
`step
`66
`
`GO TO
`STEP
`58
`
`FIG 4A
`
`OLYMPUS EX.1020 - 5/40
`
`OLYMPUS 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?
`
`
`CONFIGURE
`REMAINING DEVICES
`
`
`64
`
`
`REQUIRED FOR BOOT
`
`62
`
`ERROR
`MESSAGE
`
`79
`
`[74
`
`
`
`IDENTIFY DEVICE DRIVERS]
`FOR REMAINING
`INTEGRATED BUS DEVICES
`
`COMPARERESOURCES
`TO REQUIREMENTS AND
`CONSTRAINTS
`
`
`
`OLYMPUS EX.1020 - 6/40
`
`OLYMPUS EX. 1020 - 6/40
`
`
`
`U.S. Patent
`
`Jul. 28, 1998
`
`Sheet 5 of 11
`
`5,787,246
`
`ALLOCATE
`RESOURCES
`
`CONFIGURE
`DEVICES
`
`74
`
` 78
`
`LOAD
`DEVICE
`DRIVERS
`
`80
`
`COMPUTER CONFIGURED|94
`ANOTHER
`SYSTEM BUS
`
`AND AVAILABLE FOR
`DETECTED?
`
`
`YES
`54
`SELECT ANOTHER
`SYSTEM BUS
`
`
`
`
`
`DETECT
`PARTICULAR
`DEVICE
`
`
`
`OPERATIONS
`
`
`
`ASSIGN DEVICE
`INFORMATION
`
`OBTAIN LOGICAL
`CONFIGURATION
`DATA
`
` OBTAIN DEVICE
`NFO FROM ALL DEVICES
`
`ON BUS?
`
`
`GOTO
`
`ste?)
`
`FIG 4C
`
`OLYMPUS EX.1020 - 7/40
`
`OLYMPUS EX. 1020 - 7/40
`
`
`
`US. Patent
`
`Jul. 28, 1998
`
`Sheet 6 of 11
`
`5,787,246
`
`100
`
`START
`
`
` SELECT PRIMARY
`
`DEVICE DRIVER
`
`CONBLE
`AVAILABLE?
`
`NO
`
`VES
`
`SEARCHFOR COMPATI-}_ [REQUESTUSERTO|,772108
`BLE DEVICE HAVING
`SUPPLY SUBSTITUTE
`HIGHEST PRIORITY
`DEVICE DRIVER
`
`
`
`SELECT COMPATIBLE}1710 114
`
`
`DEVICE DRIVER FOR COM-
`STORE SUBSTITUTE
`PATIBLE DEVICE HAVING
`DEVICE DRIVER
`HIGHEST PRIORITY
`
`END
`
`RETRIEVE SUBSTI-
`TUTE DEVICE DRIVER
`
`116
`
`DEVICE
`
`158
`
`
`
`10
`
`156
`
`156
`
`153
`
`
`COMIGURATION) OPERATING SYSTEM REGISTRY
`
`
`
`~me
`
`TAeen,Stee
`
`5 = 5
`
`20
`
`20
`
`5
`
`20
`
`FIG 6
`
`OLYMPUS EX.1020 - 8/40
`
`OLYMPUS 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\O03F8
`
`LOGICAL CONFIGURATION DATA:IRQ3; I\03F8
`
`168
`
`153
`
`SOFTWARE 782
`SOFTWARE RELATED SETTINGS AND DRIVER INFORMATION
`
`ROOT
`
`180
`
`HARDWARE
`
`ENUM
`
`184
`
`5 ROOT
`
`SYS BIOS
`
`ISAENM
`
`18
`
`FIG 8
`
`19943
`
`196
`
`196
`
`TCM1234\0
`PCMCIAENM
`
`SCSIENM
`
`OLYMPUS EX.1020 - 9/40
`
`OLYMPUS EX. 1020 - 9/40
`
`
`
`U.S. Patent
`
`Jul. 28, 1998
`
`Sheet 8 of 11
`
`5,787,246
`
`ENUMERATE ELEMENT200
`206
`i|DETECTION
`MODULE
`
` cledeeledeeketetetateletetaaeeiatetetetadatatatal
`
`wre
`
`18
`
`
`
`SYSTEM
`
`f_
`
`’'' J
`
`
`
`
`
`COLLECTION
`MODULE
`
`RETRIEVE
`ID CODE
`
`APPEND
`BUS CODE
`
`
`
`RETRIEVE LOG!-
`CAL CONFIGU-
`RATION DATA
`
`
`
`
`HARDWARE
`CONFIGURE
`
`
`ELEMENT
`
`202
`
`RECEIVE
`ASSIGNED
`WU
`STORE
`ASSIGNED
`
`
`RESOURCE
`
`
`bs8
`TRANSMIT
`
`
`ASSIGNED
`
`
`RESOURCES
`
`
`204
`
`EVENT
`DETECT
`ELEMENT
`
`eeee
`
`FIG 9
`
`OLYMPUS EX.1020 - 10/40
`
`OLYMPUS EX. 1020 - 10/40
`
`
`
`U.S. Patent
`
`Jul. 28, 1998
`
`Sheet 9 of 11
`
`5,787,246
`
`250
`
`SELECT
`SYSTEMBUS
`
`252
`
`
`
`DETECT PARTICULAR
`DEVICE ON SELECT-
`ED SYSTEM BUS
`
`
`
` RETRIEVE IDENTIFI-
`
`
`
`
`
`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
`
`OLYMPUS EX.1020 - 11/40
`
`OLYMPUS EX. 1020 - 11/40
`
`
`
`USS. Patent
`
`Jul. 28, 1998
`
`Sheet 10 of 11
`
`5,787,246
`
`269
`
`278
`
`STARTt
`
`DETECT REMOVAL
`OF DEVICE
`
`STOP ACCESSING
`REMOVED
`DEVICE
`
`FREE RESOURCES
`ALLOCATED TO
`REMOVEDDEVICE
`
`UNLOAD DEVICE
`DRIVER FOR
`REMOVED DEVICE
`
`272
`
`274
`
`276
`
` 270
`
`START
`
`280
`
`DETECT DEVICE
`INSERTION
`
`DRIVERS
`
`ENUMERATE
`DEVICES ON
`AFFECTED BUS
`
`IDENTIFY
`DEVICE
`DRIVERS
`
` ARBITRATEAND
`ALLOCATE
`RESOURCES
`
`LOAD
`DEVICE
`
`262
`
`284
`
`{286
`
`288
`
`OLYMPUS EX.1020 - 12/40
`
`FIG TIA
`
`OLYMPUS EX. 1020 - 12/40
`
`
`
`U.S. Patent
`
`Jul. 28, 1998
`
`Sheet 11 of 11
`
`5,787,246
`
`pe ence eee c eee ence ene nee en ee ne cneeee sees ceeceeeeeeee ¢
`\
`306,
`
`
`
`|}
`RESERVED
`
`|:
`RESOURCE
`
`|:
`TABLE
`|:
`ASSIGNED
`CONFIGURATION RESOURCE||
`
`MANAGER
`AB
`
`158;
`
`
`
`
`154
`
`320
`
`SELECT
`POSSIBLE
`CONFIGURATION
`
`IS
`
`APPROPRIAT
`
`RESOURCE ELMENT
`
`SSIGNED?
`
`
`
`
`
`iS
`
`
`ASSIGN
`APPROPRIAT
`RESOURCE
`RESOURCE ELMENT
`
`
`ELEMENT
`RESERVED?
`
`
` IS
`
`
`NON-RESERVED
`RESOURCE ELMENT
`
`AVAILABLE?
`
`
`328
`
`FIG 13
`
`OLYMPUS EX.1020 - 13/40
`
`OLYMPUS EX. 1020 - 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.
`
`BACKGROUND OF THE INVENTION
`
`The processof 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 instalied 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.
`When attempting to tackle hardware and software inte-
`gration issues, the user is exposed to technical concepts that
`can be somewhat confusing for those without technical
`taining, 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 extemal 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-
`
`10
`
`20
`
`25
`
`30
`
`35
`
`45
`
`50
`
`55
`
`65
`
`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 expansion bus.
`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 EISA standards are generally more
`expensive than ISA-compatible computers and lack the
`variety of add-on adapter boards and peripheral devices
`available for use with ISA-compatible computers.
`To address the issue of configuration management, the
`computer industry is at present offering full-featured com-
`puter systems having preconfigured hardware and prein-
`stalled software, thereby eliminating the need for a user to
`conduct
`the installation and configuration tasks for the
`purchased computer system. However, this is a somewhat
`limited solution because vendors typically market a com-
`puter system having a standard configuration of hardware
`and software components. Thus, this approach defeats the
`flexibility 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
`
`OLYMPUS EX.1020 - 14/40
`
`OLYMPUS 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
`configurationfor all devices connected to the computer, and
`to load the appropriate device drivers. In this manner, the
`present invention supports a variety of computer bus archi-
`tectures and device classes. Accordingly. the present inven-
`tion efficiently allocates system resources between the
`devices of the computer system without substantial user
`intervention.
`
`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
`(SCST. 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
`Briefiy 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
`nodethat stores associated device information. Furthermore,
`if an identified device represents a newly installed device for
`the computer system, then this device information also can
`be stored in nonvolatile computer memory. such as a fixed
`disk, to supply an archival source of such information for
`future configuration tasks. A computer database having a
`hierarchical data 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 expansion unit or
`a docking station.
`The collection of device information supplies data that
`supports the identification of device drivers for the identified
`devices. A device driver can be obtained from one of several
`alternative sources of the computer system,
`including
`selected files of the operating system installed on the com-
`puter system, the device itself. a computer database main-
`tained by the computer, or from the user via a disk contain-
`ing the device driver. In general, the device driver for a
`device is often obtained by accessing a selected program file
`stored on either a fixed disk or another type of mass memory
`storage device of the computer system.
`
`10
`
`25
`
`30
`
`35
`
`45
`
`50
`
`55
`
`65
`
`OLYMPUS EX.1020 - 15/40
`
`OLYMPUS 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 used to enable
`communications of the particular device with the computer
`system.
`The stored device information for a particular device
`typically can be accessed by searching in the computer
`database for a location or a record that contains the identi-
`fication code for the desired device. Thus, the identification
`code can be used as an entry key to search the records of the
`computer database. If the device information in a selected
`record describes the primary device, then the device driver
`intended for primary use with that device is maintained by
`the computer system 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 over. any of the device drivers for compatible devices.
`However,if the device driver for the primary device is not
`available, then a device driver for a compatible device is
`selected. In this event. if the compatible device information
`lists more than one device that is compatible with the
`particular device,
`then the compatible device having the
`highestpriority or ranking is selected and used to support the
`operations of the particular device.
`If neither the primary device driver nor a compatible
`device driver is available on the computer system, then the
`user can be requested to supply a substitute device driver
`that supports the operation of the device with the 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 does not conflict with the use of that particular
`resource by another device. A resource element is available
`for use by a device if this element is neither reserved nor
`assigned for use by another device. Some resource elements
`are typically reserved for use by selected devices to insure
`the compatibility of the present
`invention with existing
`devices. Thus.if at least two of the devices require use of an
`identical resource element. then this potential resource con-
`flict is arbitrated and resolved in an iterative manner based
`
`6
`upon the device information andthefinite 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-
`moerator or 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-
`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-
`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
`dynamic event; and (3) supplying assigned resourcesto 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 functionsare 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 formedby a 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 resources to the appropriate devices. In response to
`the assigned resources, the configure elementaccesses the
`device nodes in the computer memory and stores the appro-
`priate resource element assignments.
`The event detect element typically can detect the instal-
`lation of a new device on the assigned system bus or the
`removal of an existing device. For example. device instal-
`lation or remoyal 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
`
`OLYMPUS EX.1020 - 16/40
`
`OLYMPUS 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
`tesponsive to certain query-type instruction signals contain-
`ing commands for actions by the enumerator. These com-
`mands typically include: delete device information in a
`designated device node because the associated device has
`been removed from the computer, stop a present operation,
`and start a new operation.