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

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