`
`[191
`
`[11] Patent Number:
`
`5,787,246
`
`Lichtman et a].
`
`[45] Date of Patent:
`
`Jul. 28, 1998
`
`USOOS787246A
`
`[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.
`
`Assignee: Microsoft Corporation. Redmond.
`Wash.
`
`Appl. No.: 250,698
`
`Filed:
`
`May 27, 1994
`
`Int. Cl.6 ............................ G06F 15/02; G06F 12/02;
`G06F 9/445; G06F 15/40
`US Cl. ....................... 395/200.5; 395/828; 395I830;
`395/200.56
`Field of Search ................................... .. 395/600. 828.
`395/830. 882. 500. 700. 200.56. 200.5
`
`References Cited
`
`U.S. PATENT DOCUMENTS
`
`.
`
`..
`
`5/1981 Subrizi et a1.
`4,268,901
`2/1982 Shimizu et a1.
`4,317,183
`4,562,535 12/1985 Vincentet a1.
`4,589,063
`5/1986 Shah et a].
`4,660,141
`4/1987 Ceccon et al.
`4,727,475
`2/1988 Kiremidjian
`4,730,251
`3/1988 Aakneetal.
`4,974,151
`11/1990 Advani et al.
`4,982,325
`1/1991 Tignoretal.
`5,038,294
`8/1991 Arakawa eta].
`5,109,484
`4/1992 Hughes et a].
`5,136,709
`8/1992 Shirakabe etal.
`5,157,384 1011992
`5,197,098
`3/1993 Knuth et a1.
`.
`5,247,682
`9/1993 Kondou et a1.
`5,249,270
`9/1993 Stewart eta]. ......
`5,252,951
`10/1993 Tanncnbaum et al.
`5,257,368 10/1993 Benson et al.
`.........
`5,257,379 10/1993 Cwiakala et al.
`5,257,387 10/1993
`5,263,148
`11/1993 Jones, Jr. et al.
`
`(List continued on next page.)
`
`OTHER PUBLICATIONS
`
`“CardWareTM User Manual 1.50A.” released on Oct. 8. 1993
`by Award Software International. Inc. pp. 1—33.
`
`Primary Examiner—Thomas C. Lee
`Assistant Examiner—Rehana Perveen
`Anomey, 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. 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
`
`1‘
`
`.......................... 364/403
`2/1994 Guthlie et a1.
`5,289.372
`395/325
`3/1994 Coxetal.
`5,297.262
`395/800
`6/1994 Kumagai ..........
`5,319,790
`455/17
`8/1994 Feldenman et a1
`5,335,350
`395/200
`5,359,713 10/1994 Moran et a1.
`340/825.03
`5,371,492 12/1994 Lohrbach et al.
`395F700
`5,379,431
`l/1995 Lemon et al.
`395/575
`5,386,551
`1/1995 Chikira et al.
`395/700
`5,386,567
`1/1995 Lien eta].
`395/325
`5,408,618
`4/1995
`395/500
`5,412,798
`5/1995
`395/325
`.......
`5,420,987
`5/1995 Reid et a].
`395075
`5,428,748
`6/1995 Davidson et al.
`.. 395/500
`5,450,570
`9/1995 Richek et al.
`395/700
`5,452,454
`9/1995 Basu et al.
`.......
`. 395/2001
`5,454,078
`9/1995 Heimsothetal.
`395/700
`5,459,867 10/1995 Adams et a1.
`5,459,869 10/1995 Spilo ....................................... 395/700
`
`
`
`..
`
`..
`
`.......................... 364/200
`. 364/900
`. 364/200
`. 364/200
`. 364/200
`.. 364/200
`. 364/200
`. 364l200
`. 364/200
`. 364/491
`. 395/200
`. 395/700
`.. 340/706
`379/61
`.. 395/700
`.. 395/200
`.. 345/156
`.. 395/600
`.. 395f700
`.. 395/800
`.. 395/500
`
`their}; boss's;
`
`15
`
`DATABASE
`i comm
`3
`;
`
`.
`
`BUS (SCSI?
`warms
`
`17
`
`
`
`
`"agsamc'és"""g
`NG
`,
`5Y5 [M
`[ 09mm
`
`M
`
`)0
`
`COMPUTER
`CONTROL
`SVST941
`
`E
`E
`3
`;
`
`INTERRUFTS
`
`OLYMPUS EX. 1020 - 1/40
`
`
`
`5,517,636
`5,517,646
`5,542,055
`5,553,281
`5,581,261
`
`5/1996
`5/1996
`7/1996
`9/1996
`12/1996
`
`................
`DeHart cl 3],
`Piccicillo et al.
`.............
`Amjni et a].
`Brown et a].
`
`.......... 395/500
`........ .. 395/700
`. 395/231
`
`US. PATENT DOCUMENTS
`
`5,469,545
`5,471 ,675
`5,485,460
`5,491,8 13
`
`11/1995 Vaubuskirk et al.
`11/1995 Has ..................
`1/1996 Schrier et a].
`2/1996 Bondy et a1.
`
`395000.01
`395/162
`370/94.1
`........................... 395/500
`
`5,787,246
`Page 2
`_—________________________.____.—_———————————
`
`. 395/600
`
`OLYMPUS EX. 1020 - 2/40
`
`
`
`.
`
`mam$st
`
`.582
`
`Axmozcmz.
`
`
`
`>mO—2mS.>m02m_2
`
`
`
`mo<mo._.mmo<mo._.m
`
`
`
`mo_>un_mo_>mo
`
`US. Patent
`
`.mJ
`
`892
`
`8991|.
`
`Sheet 1 of 11
`
`mmomDOmmm
`
`>m05m=2
`
`NN
`
`mhmnmmmhz.
`
`26.20%
`
`mmemZOo
`
`405.200
`
`Emhm>m
`
`BEEF;
`
`mu_>mo
`
`02:.(mmmo
`
`5.5.96
`
`EEK—200
`
`mm<m<._.<o
`
`mug/$552.
`
`=wom.mam
`
`szmomfiz.
`
`2m:mam
`
`
`
`wmmmamEmpmxrw
`
`L-----o~—-n‘
`
`IIIIIIIIIIIIIIIIIlIIIIIIIIIIIIIIlIIlIIIIIIIIIl
`
`OLYMPUS EX. 1020 - 3/40
`
`
`
`US. Patent
`
`Jul. 28, 1993
`
`Sheet 2 of 11
`
`5,787,246
`
`CONFIGURATION LOGIC
`
`DETECT
`
`LOGIC
`
`COLLECT
`LOGIC
`
`AREéEFIéTE
`
`DRIVER
`
`DRIVER
`LOADER LOGIC
`
`IDENTIFICATION
`LOGIC
`
`DRIVERS
`
`SYSTEM BUS
`
`DEVICE
`
`COLLECT
`DEVICE
`
`INFORMATION
`
`OBTAIN
`DEVICE
`DRIVERS
`
`ALLOCATE
`
`COMPUTER
`RESOURCES
`
`LOAD
`DEVICE
`
`OLYMPUS EX. 1020 - 4/40
`
`
`
`US. Patent
`
`Jul. 28, 1998
`
`Sheet 3 of 11
`
`POWER
`COMPUTER
`
`CONFIGURE
`SYSTEM LEVEL
`DEVICES
`
`REQUIRED FOR BOOT
`
`OBTAIN
`DEVICE INFO FROM AL
`DEVICES ON
`BUS?
`
`SELECT INTEGRATE I
`SYSTEM
`“EXPANSION” BUS
`
`DETECT
`PARTICULAR
`DEVICE
`
`ASSIGN DEVICE
`IDENTIFICATION
`
`DEVICES
`REQUIRED FOR
`BOOT?
`
`INACTIVATE ALL
`DEVICES NOT
`
`OLYMPUS EX. 1020 - 5/40
`
`
`
`US. Patent
`
`Jul. 28, 1998
`
`Sheet 4 of 11
`
`5,787,246
`
`YES BRANCH
`
`IDENTIFY BOOT
`DEVICE DRIVERS
`
`60
`
`RESOURCES
`CONFLICT-FREE?
`
`CONFIGURE
`REMAINING DEVICES
`REQUIRED FOR BOOT
`
`CONSTRAINTS
`
`IDENTIFY DEVICE DRIVERS
`FOR REMAINING
`INTEGRATED BUS DEVICES
`
`ERROR
`MESSAGE
`
`70
`
`COMPARE RESOURCES
`TO REQUIREMENTS AND
`
`OLYMPUS EX. 1020 - 6/40
`
`
`
`US. Patent
`
`Jul. 28, 1998
`
`Sheet 5 of 11
`
`5,787,246
`
`ALLOCATE
`RESOURCES
`
`CONFIGURE
`DEVICES
`
`LOAD
`DEVICE
`DRIVERS
`
`SS
`DETECTED?
`
`YES
`
`SELECT ANOTHER
`SYSTEM BUS
`
`32
`
`FIG 4C
`
`COMPUTER CONFIGURED
`AND AVAILABLE FOR
`OPERATIONS
`
`DETECT
`PARTICULAR
`DEVICE
`
`ASSIGN DEVICE
`INFORMATION
`
`OBTAIN LOGICAL
`CONFIGURATION
`DATA
`
`OBTAIN DEVICE
`NFO FROM ALL DEVICES
`ON BUS?
`
`GO TO
`
`8;}?
`
`OLYMPUS EX. 1020 - 7/40
`
`
`
`US. Patent
`
`Jul. 28, 1998
`
`Sheet 6 of 11
`
`5,787,246
`
`SELECT PRIMARY
`
`DEVICE DRIVER
`
`AVAILABLE?
`
`YES
`
`SEARCHFORCOMPATI-
`BLE DEVICE HAVING
`HIGHEST PRIORITY
`
`SELECT CMPATIBLE
`DEVICE DRIVER FOR COM-
`PATIBLE DEVICE HAVING
`HIGHEST PRIORITY
`
`108
`
`no
`
`REQUESTUSER TO
`SUPPLY SUBSTITUTE
`DEVICE DRIVER
`
`STORE SUBSTITUTE
`DEVICE DRIVER
`
`RETRI EVE SUBSTI-
`TUTE DEVICE DRIVER
`
`"2
`
`114
`
`116
`
`FIG 6
`
`FURATION OPERATING SYSTEM
`
`160
`
`DEVICE
`
`ENUMERATOR
`
`ARBITRATOR
`
`DEVICE DRIVER
`
`nggflERATOR
`
`ARBITRATOR
`
`DEVICE DRIVER
`
`20
`
`20
`
`DEVICE
`
`20
`
`W 20
`
`DEVICE
`
`20
`
`OLYMPUS EX. 1020 - 8/40
`
`
`
`U.S. Patent
`
`Jul. 28, 1998
`
`Sheet 7 of 11
`
`LOCAL BUS
`
`DEVICE IDENTIFICATION CODE *PNPOAOO\MODEM\0
`
`LOGICAL CONFIGURATION DATA: IR03; I\03F8
`
`ASSIGNED RESOURCE ELEMENTS: IRO.3; I\03F8
`
`séSIENM
`
`SOFTWARE 132
`I—‘1 SOFTWARE RELATED SETTINGS AND DRIVER INFORMATION
`
`180
`
`HARDWARE
`
`ENUM
`
`’84
`
`1;:
`
`18
`
`8 ROOT
`19o
`
`192
`
`'SYS BIOS
`
`ISAENM
`
`196
`
`194
`
`TCM1234\O
`
`PCMCIAENM
`
`OLYMPUS EX. 1020 - 9/40
`
`
`
`US. Patent
`
`Jul. 28, 1998
`
`Sheet 3 of 11
`
`5,787,246
`
`ENUMERATE ELEMENT‘Izoo
`Ir u _ — . _ _ . . . . . . . . . . . _ _ . — — - — v _ — -—
`
`DETECTION
`MODULE
`
`COLLECTION
`MODULE
`
`RETRIEVE
`ID CODE
`
`APPEND
`BUS CODE
`RETRIEVE LOGI-
`CAL CONFIGU-
`RATION DATA
`
`CONFIGURATION
`MANAGER
`
`5
`I
`
`’
`1
`
`ELEMENT
`
`RECEIVE
`ASIGNED
`S ORE
`ASSIGNED
`RE URCE
`TRANSMIT
`ASSIGNED
`RESOURCES
`
`HAfliggfiE
`
`I
`
`‘
`
`CONFIGURE
`
`ELEMENT
`
`202
`
`I
`
`SYSTEM
`
`_
`
`DEVICE
`
`DETECT
`
`OLYMPUS EX. 1020 - 10/40
`
`
`
`US. Patent
`
`Jul. 28, 1998
`
`Sheet 9 of 11
`
`5,787,246
`
`250
`
`START
`
`SELECT
`
`SYSTEM BUS
`
`DETECT PARTICULAR 25‘
`DEVICE ON SELECT-
`ED SYSTEM BUS
`
`BUS7
`
`RETRIEVE IDENTIFI-
`CATION CODE FROM
`PARTICULAR DEVICE
`
`PPENDSYSTEM BUS 250
`CODE TO
`IDENTIFICATION CODE
`
`RETRIEVE LOGICAL
`CONFIGURATION
`DATA
`
`LINK LOGICAL
`CONFIGURATION ‘
`DATA TO DEVICE
`IDENTIFICATION CODE
`
`COLLECT
`DEVICE INFO FROM ALL
`DEVICES ON
`
`OLYMPUS EX. 1020 - 11/40
`
`
`
`US. Patent
`
`Jul. 28, 1998
`
`Sheet 10 of 11
`
`5,787,246
`
`259
`
`278
`
`START
`
`START
`
`DETECT REMOVAL
`OF DEVICE
`
`DETECT DEVICE
`INSERTION
`
`270
`
`280
`
`FIG 11A
`
`I ARBITRATE AND
`ALLOCATE
`RESOURCES
`
`STOP ACCESSING
`REMOVED
`DEVICE
`
`FREE RESOURCES
`ALLOCATED TO
`REMOVED DEVICE
`
`UNLOAD DEVICE
`DRIVER FOR
`REMOVED DEVICE
`
`ENUMERATE
`DEVICES ON
`AFFECTED BUS
`
`IDENTIFY
`DEVICE
`DRIVERS
`
`LOAD
`DEVICE
`
`DRIVERS
`
`OLYMPUS EX. 1020 - 12/40
`
`
`
`US. Patent
`
`Jul. 28, 1998
`
`Sheet 11 of 11
`
`5,787,246
`
`CONFIGURATION
`MANAGER
`
`:
`'
`.
`
`RESERVED
`RESOURCE
`TABLE
`
`ASSIGNED
`RESOURCE
`- -
`
`VATLABLE7
`
`IS
`APPROPRTAT
`RESOURCE ELMENT
`‘ SSIGNED?
`
`SELECT
`POSSIBLE
`CONFIGURATION
`
`-
`
`ASSIGN
`RESOURCE
`ELEMENT
`
`RESOURCE ELMENT
`
`OLYMPUS EX. 1020 - 13/40
`
`
`
`1
`SYSTEM FOR CONFIGURING DEVICES
`FOR A COMPUTER SYSTEM
`
`TECHNICAL FIELD
`
`The present invention relates to data processing systems
`and. more particularly described. relates to configuring
`devices for operation with a computer system without user
`intervention.
`
`BACKGROUND OF THE INVENTION
`
`system that determines the optimal configuration for its
`
`The process of installing a peripheral device or an add-on
`type adapter board for use with a personal computer system
`can be a relatively frustrating experience for the typical
`computer user. Nevertheless. a computer typically will not
`operate with a newly installed component until the user has
`completed a proper allocation of resources. Computer
`resources are allocated during a configuration process to
`permit the conflict-free use of the limited resources. To
`configure the computer. the user often must complete a
`relatively complex series of technical tasks. Thus. the dif—
`ficulties faced by many users during the configuration pro-
`cess are emphasized by the absence of an automated process
`for resolving resource conflicts.
`For many personal computer systems. neither the operat-
`ing system nor the application programs running on the
`computer can determine which hardware components are
`connected to the computer. Likewise. the various hardware
`components connected to the computer system often fail to
`detect the occurrence of a conflict between dilferent hard-
`ware devices that attempt
`to share the same resource.
`Accordingly. a user typically must resolve a resource con—
`flict by first identifying the problem and thereafter experi-
`menting with hardware and software configurations in an
`attempt to correct the resource conflict.
`When attempting to tackle hardware and software inte-
`gration issues. the user is exposed to technical concepts that
`can be somewhat confusing for those without technical
`training. such as computer architecture issues. including
`hardware interrupts. direct memory access (DMA) channels.
`memory addresses. and input/output (1/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. ConfigSys. and *.Ini files. In view of these
`technical concepts. some users find the configuration pro-
`cess so intimidating that they refuse to consider upgrading a
`component of their personal computer or connecting a new
`peripheral device to add a new capability to their computer
`system.
`Unlike today. early personal computers required mini-
`mum coordination between the computer hardware and
`software components. Users were presented with few diffi—
`cult configuration issues after the initial installation of the
`computer system. A limited number of peripheral devices
`were commercially available for supplementing the process-
`ing functions of the personal computer. In addition. early
`personal computers were primarily used for dedicated tasks.
`such as word processing or calculating financial information
`with a spreadsheet program. at a fixed desktop location.
`In contrast. present computers are often portable systems
`that can be regularly connected to different peripheral
`devices and external systems. There exists many more
`computer peripheral devices that require the use of resources
`during computer operation than the limited quantity of
`available resources. Furthermore. a user can harness the
`powerful computing operations of a present personal com-
`
`5.787.246
`
`2
`
`puter to complete numerous tasks outside the traditional
`realm of word processing and financial calculations. such as
`graphics. audio. and video. For example. numerous periph-
`eral devices and add-on systems are now commercially
`available to enable the user to customize the functions and
`operating characteristics of a personal computer. Docking-
`type computer systems enable a user to operate a mobile
`computer at either a base station or in remote locations.
`Thus. the rapid acceptance of portable computing and the
`multi—faceted uses of the personal computer emphasize the
`need for supplying a “user friendly" system that configures
`new hardware or software devices for use with the computer
`system.
`The Industry Standard Architecture (ISA) standard is a
`widely used bus architecture for personal computer systems.
`The ISA expansion bus. which is commonly associated with
`the IBM Personal Computer AT and other compatible
`computers. provides a 16-bit bus that supports the connec-
`tion of adapter boards within the computer. The ISA bus
`structure requires allocation of resources. such as hardware
`interrupts. DMA channels. memory addresses. and I/O ports.
`among multiple ISA—compatible adapter boards connected
`to the ISA expansion bus. However. the ISA standard does
`not define a hardware or softhue mechanism for allocating
`those resources for use by the installed adapter boards.
`Consequendy. configuration of the ISA adapta boards is
`typically completed by connecting jumper cables or chang—
`ing switch settings on the boards to change the decode maps
`for memory and I/O ports and to direct the DMA channels
`and interrupt signals to various pins along the expansion bus.
`Furthermore. system configuration program files of the
`operating system may need to be updated to reflect any
`modifications to the resource allocation.
`
`Alternative expansion bus standards. such as the Micro
`Channel Architecture (MCA) and the Extended Industry
`Standard Architecture (EISA) standards. have limited hard—
`ware and software mechanisms to identify resources
`requested by a peripheral device and to resolve resource
`conflicts. However. these mechanisms are not implemented
`by the computer's operating system and are not compatible
`with the large installed base of personal computers based on
`the ISA standard. Furthermore. computer systems 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
`
`OLYMPUS EX. 1020 - 14/40
`
`
`
`5 .787.246
`
`4
`
`storage device of the computer system.
`
`Briefly described. the method for configuring the devices
`of the computer system is started by collecting device
`information for each of the devices of the computer system.
`This device information acquisition process permits the
`unique identification of the devices and the description of
`device characteristics associated with the operation of
`devices with the computer. A device driver. which enables
`communications between a corresponding device and the
`computer system. is thereafter identified for each of the
`devices in response to the device information. The
`resources. which support the functions of the devices within
`the computer. are allocated based upon the device informa-
`tion. This allocation process prevents any potential conflict-
`ing use of the resources by the devices. In response to
`resource allocation. the devices are configured and device
`drivers for the devices are loaded. The devices are thereafter
`activated for operation with the computer.
`More particularly described. the present invention con-
`figures devices of a computer system based upon the col-
`lection of information about the devices and their connec-
`tions to the system busses of the computer system To collect
`the device information. a particular device is detected on the
`system bus of interest and thereafter assigned a device
`identification code that identifies the particular device as
`being connected to the selected system bus. At least a
`portion of the device identificau‘on code. specifically an
`identification code. uniquely identifies the detected device.
`Logical configuration data. which supplies configuration
`requirements for operating the particular device with the
`computer system. is also obtained for the detected device.
`This collection process is repeated until device information
`is eventually collected for each of the devices for all system
`busses of the computer system.
`The device information is stored within computer system
`memory. such as volatile memory. to support the present
`configuration operation. At least a portion of the system
`memory is allocated for the storage of device information
`within a neefike structure of device nodes. Each device
`connected to the computer system is represented by a device
`node that stores associated device information. Furthermore.
`if an identified device represents a newly installed device for
`the computer system. then this device information also can
`be stored in nonvolatile computer memory. such as a fixed
`disk. to supply an archival source of such information for
`future configuration tasks. A computer database having a
`hierarchical data arrangement is typically used to store this
`archival device information.
`The collection of device information. which is also
`described as enumeration. is initiated in response to dynamic
`events that cause an asynchronous change in the operating
`state of the computer system. These events typically affect
`the use of the resources by the devices of the computer
`system and include: powering the computer system; con—
`necting anoflier device to a system bus; removing a device
`from a system bus; and inserting the computer system into
`or removing the computer system from an expansion unit or
`a docking station.
`The collection of device information supplies data that
`supports the identification of device drivers for the identified
`devices. A device driver can be obtained from one of several
`alternative sources of the computer system.
`including
`selected files of the operating system installed on the com-
`puter system. the device itself. a computer database main-
`tained by the computer. or from the user via a disk contain-
`ing the device driver. In general. the device driver for a
`device is often obtained by accessing a selected program file
`stored on either afixed disk or another type of mass memory
`
`3
`resources and enables application programs to fully utilize
`the available resources.
`
`In recognition of the problems of prior configuration
`processes.
`the present
`invention provides a system that
`permits easy installation and configuration of devices which
`are capable of identifying themselves and declaring their
`services and resource requirements to the computer. The
`device identification and resource requirement information
`enable the system to determine and establish a working
`configuration for all devices connected to the computer. and
`to load the appropriate device drivers. In this manner. the
`present invention supports a variety of computer bus archi-
`tectures and device classes. Accordingly. the present inven-
`tion efficiently allocates system resources between the
`devices of the computer system without substantial user
`intervention.
`
`SUMMARY OF THE INVENTION
`
`The problems associated with the manual installation and
`configuration of adapter boards and peripheral devices for
`computer systems are solved by the principles of the present
`invention. The present
`invention provides a system for
`configuring the hardware and software components of a
`computer system by optimally allocating system resources
`for use by computer devices.
`The present invention enables a user of a computer system
`to install a new device by connecting the device to the
`computer. powering the computer. and using the computer to
`take advantage of the function supplied by the new device.
`Likewise. the present invention permits a user to insa’t a
`mobile computer into a base station while both the mobile
`computer and the base station are powered and to reconfig-
`ure the mobile computer for operation with the devices
`connected to the base station. Thus. the present invention
`addresses the needs of computer users by supplying a
`computer-implemented process for configuring devices for a
`computer system and for accommodating seamless dynamic
`configuration changes of the computer system.
`A system constructed in accordance with the present
`invention configures devices of a computer system by iden-
`tifying the devices. determining the desired usage of the
`resources of the computer system. detecting and resolving
`potential conflicting uses of the resources. and allocating
`resources for use by the devices. An operating system runs
`on the computer system and supports these configuration
`tasks.
`
`The computer system includes various resources. includ—
`ing interrupts. direct memory access (DMA) channels.
`memory addresses. and input/output (1/0) ports. at least one
`system bus. and devices. System busses are components that
`supply physical connections to devices. Each of the devices
`is connected to one of the system busses of the computer
`system.
`The system busses can be compatible with a variety of bus
`architectures. including the Industry Standard Architecture
`(ISA). Micro Channel Architecture (MCA) and Extended
`Industry Standard Architecture (EISA) bus standards. as
`well as Personal Computer Memory Card International
`Association (PCMCIA). Small Computer Systems Interface
`(SCSI). Personal Computer Interface (PCI). Enhanced
`Capabilities Parallel (ECP). Vesa Local Bus (VL). Integrated
`Drive Electronics (IDE). and other bus standards. Typical
`devices supply the functions of system-level components.
`such as fixed and floppy disk controllers. display. keyboard.
`and mouse controllers. and serial and parallel controllers.
`and implement the functions offered by numerous add—on
`type adapter boards and peripheral devices.
`
`OLYMPUS EX. 1020 - 15/40
`
`
`
`5
`
`5,787,246
`
`6
`
`
`
`The computer database can contain device information
`associated with a particular device. including information
`for that particular device. which is also described as a
`primary device. and information for devices that are “com-
`patible” with the primary device. For example. a first
`manufacturer’s device may be compatible with a second
`manufacturer’s device because both devices perform the
`same function and conform to an industry standard for
`operations. If the devices are compatible. a device driver for
`the first device often can be used to enable the operations of
`the second device and. likewise. a device driver for the
`second device can be used with the first device. Thus. a
`compatible device driver. if available. may be used to enable
`communications of the particular device with the computer
`system.
`The stored device information for a particular device
`typically can be accessed by searching in the computer
`database for a location or a record that contains the identi—
`fication code for the desired device. Thus. the identification
`code can be used as an entry key to search the records of the
`computer database. If the device information in a selected
`record describes the primary device. then the device driver
`intended for primary use with that device is maintained by
`the computer system and is available to support the device
`operations. Likewise. a compatible device driver is main—
`tained by the computer system if compatible device infor-
`mation is stored within the selected record and associated
`with the particular device.
`By convention. the primary device driver is typically
`selected to support the computer operations of the primary
`device over. any of the device drivers for compatible devices.
`However. if the device driver for the primary device is not
`available. then a device driver for a compatible device is
`selected. In this event. if the compatible device information
`lists more than one device that is compatible with the
`particular device.
`then the compatible device having the
`highest priority or ranking is selected and used to support the
`operations of the particular device.
`If neither the primary device driver nor a compatible
`device driver is available on the computer system. then the
`user can be requested to supply a substitute device drivm'
`that supports the operation of the device with the computm'
`system. This request
`is typically supplied as a textual
`statement displayed on a display or monitor for the computer
`system or as an audio prompt generated by the computer
`system. In response to the request. the user can insert within
`the proper computer drive a flexible disk or other appropri-
`ate electronic media containing the device driver. thereby
`permitting the computer to access the device driver. The
`device driver then can be stored within an appropriate mass
`memory storage device and used to enable the communica-
`tions between the particular device and the computer.
`Resources. which typically include a finite set of resource
`elements. are allocated by first analyzing the device infor—
`mation to detect whether the devices require a potential
`conflicting use of resource elements for operation of the
`devices with the computer system. The desired resource
`element is assigned for use by a device if this resource
`assignment does not conflict with the use of that particular
`resource by another device. A resource element is available
`for use by a device if this element is neither reserved nor
`assigned for use by another device. Some resource elements
`are typically reserved for use by selected devices to insure
`the compatibility of the present
`invention with existing
`devices. Thus. if at least two of the devices require use of an
`identical resource element. then this potential resource con-
`flict is arbitrated and resolved in an iterative manner based
`
`upon the device information and the finite resources of the
`computer. The resources are then assigned for use by the
`devices based upon this conflict-free solution.
`In response to allocating the assigned resources to the
`devices. the devices are configured for operation with the
`computer system. Each device driver is loaded for use by the
`corresponding devices and the devices are activated for
`operation with the computer.
`Focusing upon another aspect of the present invention. a
`system is provided for supporting the bu s-specific operations
`of devices conneCIed to a system bus of a computer system.
`This system. which is alternatively referred to as an enu-
`merator or a bus driver. is assigned to operate with a specific
`system bus and is programmed to recognize the operating
`parameters of the assigned bus. Each system bus typically
`requires a unique configuration process that is based upon
`the architecture of the bus. The enumerator. which can be
`part of an operating system. directly supports the configu-
`ration of devices on its assigned bus by accessing device
`information for those devices and storing this data with a
`central memory. This enables an operating system for the
`computer system to be independent of the characteristics of
`a computer bus architecture because bus-specific informa-
`tion is handled by an abstraction layer. in this case. the
`enumerator.
`
`The enumerator can perform. three primary operations.
`specifically (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 resources to each
`of the devices in response to an allocation of resources. To
`implement these operations. the enumerator can include one
`or more elements that are responsrble for those functions.
`namely an enumerate element. a configure element. and an
`event detect element. These functions are typically defined
`by the characteristics of its assigned system bus.
`The enumerate element includes a detection module for
`detecting a particular device on the system bus and a
`collection module for retrieving device information from the
`particular device. The collection module obtains device
`information from the detected device and stores this data
`within device nodes of the computer memory to maintain an
`up—to—date inventory of the devices on the assigned system
`bus. Thus. the detection and collection modules operate in
`tandem to enumerate these devices. The computer memory
`can be a hierarchical database structure formed by a tree-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 element accesses the
`device nodes in the computer memory and stores the appro-
`priate resource element assignments.
`The event detect element typically can detect the instal-
`lation of a new device on the assigned system bus or the
`removal of an existing device. For example. device instal-
`lation or removal can be detected by intercepting a particular
`interrupt signal or by periodically polling all of the available
`sockets of the bus to determine the installed devices.
`Likewise. the event detect element can detect the insertion
`of a computer system into or the removal of a computer
`
`OLYMPUS EX. 1020 - 16/40
`
`
`
`7
`
`5,787,246
`
`primary device and other associated compatible devices if
`
`The resource allocation process is supported by arbitrators
`that operate to determine the assignment of resource ele-
`ments to the devices of the computer. An arbitrator is
`assigned to each resource of the computer system and is
`responsive to the resource requirement information and
`resource dependency information related to its resource to
`produce a conflict-free allocation of the resource elements.
`The arbitrator for a selected resource is programmed to
`recognize the characteristics of its resource. For example.
`the arbitrator for a interrupt resource of a conventional
`personal computer recognizes that this resource includes 16
`interrupt elements.
`An arbitrator includes an analysis element that is respon-
`sive to a possible configuration which defines the set of
`resource elements that are appropriate for operating the
`devices with the computer system. In response. the analysis
`element determines whether a particular resource element
`for a selected device is available for use by the selected
`device. The arbitrator also includes an assignment element
`for assigning the particular resource element for use by the
`selected device in response to determining that the particular
`resource element is available for use by the selected device.
`Focusing upon yet another aspect of the present invention.
`a method is provided for obtaining a device driver to enable
`a device to communicate with a computer system. The
`computer system includes a database containing a set of
`records. Each record contains both a device identification
`field for storing the identification code of a primary device
`and a compatible device identification field for storing
`identification codes for compatible devices and at least one
`type of