throbber
Ulllted States Patent [19]
`Piwonka et al.
`
`US006073206A
`[11] Patent Number:
`[45] Date of Patent:
`
`6,073,206
`Jun. 6, 2000
`
`[54] METHOD FOR FLASHING ESCD AND
`VARIABLES INTOA ROM
`_
`_
`[75] Inventors: Mark A. Plwonka; Louis B. Hobson,
`both of Tomball; J e?'rey D. Kane,
`Spring; Randall L- HESS, Cypress, all
`Of TeX-
`
`Intel Corporation, “PentiumTM Processor’s User’s Manual,
`vol. 3: Architecture and Programming Manual,” @ Intel
`Corporation, 1996, pp. 20.1—20.9.
`
`Intel Corporation, “Intel486TM SL Microprocessor SuperSet
`Programmer’s Reference Manual,” Nov., 1992, pp.
`6.28—6.53.
`
`[73] Assignee: Compaq Computer Corporation,
`Houstoth Tex
`
`[21] Appl- N93 09/070,866
`[22]
`Filed:
`Apr. 30, 1998
`
`Primary Examiner—Do Hyun Yoo
`Assistant Examiner—Nasser MoaZZami
`Attorney, Agent, or Firm—Akin, Gump, Strauss, Hauer &
`Feld, LLP
`
`[51]
`
`Int. c1.7 .................................................... .. G06F 13/00
`
`[57]
`
`ABSTRACT
`
`[52] US‘
`
`’ 707/204;
`’
`’
`’
`[58] Field of Search ................................... .. 711/102, 103,
`711/161 162 170 714/4 5 6_ 395/653
`’
`’
`’
`70%/2b2: 203, 204;
`
`[56]
`
`References Cited
`
`U'S' PATENT DOCUMENTS
`
`5,339,437
`5,608,876
`5,724,027
`5,748,94O
`5,864,698
`
`8/1994 Yuen ..................................... .. 395/700
`3/1997 Cohen et al.
`..
`3/1998 Shipman et al. ................. ..
`5/1998 Angelo et al. ........................ .. 711/163
`1/1999 Krau et al. ................................ .. 713/2
`OTHER PUBLICATIONS
`Compaq Computer Corporation, PhoeniX Technologies Ltd.,
`Intel Corporation, “‘Preliminary’ Plug and Play Bios Speci
`?cation, Version 1.0A, ” Mar. 10, 1994, pp. 7—23, 57—64.
`.
`.
`.
`Compaq Computer Corporation, Intel Corporation, Phoenix
`Technologies Ltd‘ Extended System Con?guration Data
`speci?cation’versi’on 1 02 Feb 14 1994 @1993 pp 1_33
`Advanced ’Micro
`be‘licesi
`’Inc~ ’ “Am2’91P002Ty
`Am29F002B, 2 Megabit (262,144><8—Bit) CMOS 5.0 Vol-
`t—only, Sector Architecture Flash Memory,” @ 1996, pp.
`1—34.
`
`A computer system for ?ashing Extended System Con?gu
`ration Data (ESCD) and associated variables to a ?ash
`read-Only memory (ROM) 15 proYlded' Dunng. Power-On
`Self-Test (POST) code, a ROM image is copied from an
`ESCD sector of a read-only memory to an ESCO original
`buffer and an ESCD Write buffer. The ESCD Write buffer
`may be updated by POST code. FolloWing the POST
`operations, the contents of the ESCD Write buffer are copied
`to an ESCD runtime buffer. The contents of the ESCD
`
`Original buffer or the ESCD Seeter are Compared to the
`contents of the ESCD runtime buffer. If the contents of the
`runtime bu?er di?er from the Contents of the Com
`pared buffer or Sector, SMI Code ?ashes the ROM image in
`the ESCD runtime buffer to the ?ash ROM‘ If the ESCD
`runtime buffer is the same as the contents of the compared
`buffer or sector, a ROM ?ash it not performed. POST is then
`exited and the computer system is booted. During runtime,
`if a Write is performed to ESCD data or an associate variable,
`the ESCD runtime buffer is updated With the ESCD data or
`.
`.
`.
`.
`variable provided for the Write operation. The SMI code then
`?ashes the ROM image in the ESCD runtime buffer into the
`ESCD sector to save the ESCD data or variable provided by
`the Whte epetatleh
`
`24 Claims, 3 Drawing Sheets
`
`COFVROMlMAGEW
`ESWORlGINAlEUFFER
`MSDDWRITEBUFFER
`
`i - - - -- 202
`
`r’
`
`_,
`
`UPDATEESCD
`l
`WRITEBUFFER
`I
`L wmwosr
`
`COPY ESCD WRlTE
`BUFFERTO ESCD
`RUNHME BUFFER
`
`1
`
`

`

`US. Patent
`
`6
`
`S
`
`3pm
`
`6,073,206
`
`
`052m80oo0
`
`we
`
`mamaI.I.mamJ
`
`m».0%E»
`
`n.1:35mzseagm:mE2%
`.8__%H_ngzwfin_8E:55:m”gammam,E8222
`.fi%8%a
`228oIE5:22@358Ima2Em2205:m28NV2E
`mmE382385
`aermags«In
`
`9‘mmmm
`25522%;.558-”saga;I”.838“;
`
`
`
`
`
`we
`
`aozézmEEEaEBmmmazes.ONmm5#wmmgamma
`
`FGE
`
`
`
`055:Egg
`
`mma%m58\.
`
`2
`
`
`
`
`

`

`U.S. Patent
`
`Jun. 6, 2000
`
`Sheet 2 0f 3
`
`6,073,206
`
`100
`
`OSI
`APPLICATION
`
`1 04
`
`f1 06
`
`l '
`FLASH
`(ESCD SECTOR)
`ROM
`
`[- 106
`
`/-108
`
`FLASH ROM
`
`> ESCD ORIGINAL
`BUFFER
`
`f1 10
`
`1 14
`
`[1 1 2
`
`ESCD WRITE
`BUFFER
`
`POST
`CODE
`
`ESCD RUNTIME
`BUFFER
`
`3
`
`

`

`U.S. Patent
`
`Jun. 6,2000
`
`Sheet 3 of3
`
`6,073,206
`
`ESCD FLASH
`PROCESS
`
`COPY ROM IMAGE TO / 200
`ESCD ORIGINAL BUFFER
`& ESCD WRITE BUFFER
`
`___i___ 202
`
`UPDATE ESCD
`I
`WRITE BUFFER
`I
`L WITH POST
`
`r’
`|
`_,
`
`_ _ _ _ _ _ - - - - — — - — — POST OPERATIONS
`
`/ 204
`
`f 206
`
`COPY ESCD WRITE
`BUFFER TO ESCD
`RUNTIME BUFFER
`
`E
`COMPARE ESCD
`ORIGINAL BUFFER OR
`ESCD SECTOR WITH
`ESCD RUNTIME BUFFER
`
`208
`Y
`
`N
`
`SMI CODE FLASHES
`NEW IMAGE INTO
`ESCD SECTOR
`
`,- 214
`
`f 216
`
`UPDATE ESCD
`RUNTIME BUFFER
`
`E
`SMI CODE FLASHES
`NEW lMAGE INTO
`ESCD SECTOR
`
`____+
`FIG. 4
`
`4
`
`

`

`1
`METHOD FOR FLASHING ESCD AND
`VARIABLES INTO A ROM
`
`BACKGROUND OF THE INVENTION
`
`1. Field of the Invention
`The present invention relates to read-only-memory
`(ROM) ?ashing, and more particularly to a method for
`?ashing Extended System Con?guration Data (ESCD) and
`variables into a ROM of a computer system.
`2. Description of the Related Art
`In order to support the automatic con?guration of Plug
`and Play devices on platforms that include a standard
`expansion bus, non-volatile storage such as CMOS RAM,
`ROM, or NVRAM is used to store information about system
`resources used by non-Plug and Play devices in a computer
`system. This con?guration information is typically stored in
`an Extended System Con?guration Data (ESCD) format.
`The ESCD format accommodates storage of con?guration
`information for Plug and Play devices and non-Plug and
`Play devices. ESCD generally alloWs Plug and Play System
`Basic Input Output Services (BIOS) code to more fully
`con?gure a computer system at poWer up by specifying the
`system resources assigned to devices that have been
`installed in the system. The portion of non-volatile storage
`used to store the ESCD may be only a subset of the total
`non-volatile storage available in a computer system.
`System BIOS code is used by the operating system to read
`or Write ESCD as the non-volatile storage storing ESCD has
`traditionally resided in the system BIOS memory space.
`Accordingly, only system BIOS has knoWn the location of
`the ESCD in the non-volatile storage and the proper method
`for accessing the non-volatile storage. If the non-volatile
`storage is memory-mapped, the physical base address of the
`memory mapped non-volatile storage alloWs a “caller,” such
`as an operating system, to construct a segment descriptor
`pointed to by a memory pointer knoWn as a segment
`selector. If a function to read or Write ESCD is called from
`a protected mode, the segment descriptor is created from a
`protected mode base segment address typically termed an
`ESCD Selector parameter. If a function to read or Write
`ESCD is called from real mode, a segment descriptor is
`created from a real mode base segment address typically
`termed a BIOS Selector parameter. A segment selector
`serves as a pointer to a segment descriptor for an ESCD area
`of non-volatile storage. In addition, a function to read or
`Write ESCD generates a pointer to the siZe of ESCD for
`determining an entry point into the ESCD. Afunction to read
`ESCD transfers ESCD from an ESCD area of non-volatile
`storage to a memory buffer typically having a pointer termed
`ESCD Buffer, and a function to Write ESCD transfers data
`from the memory buffer to an ESCD area of non-volatile
`storage. ESCD functions are further described in the
`Extended System Con?guration Data Speci?cation, Version
`1.02, published on Feb. 14, 1994, by Compaq Computer
`Corporation, Intel Corporation, and Phoenix Technologies,
`Ltd.
`ESCD may be updated during a PoWer-On-Self-Test
`(POST) or at runtime. For example, ESCD may be updated
`by POST if POST detects that a neW Plug and Play bootable
`device is added to the computer system. ESCD information
`may be used by POST to allocate system resources to all
`con?gurable devices that are knoWn to the system BIOS.
`System resources typically include Direct Memory Access
`(DMA) channels, Interrupt Request Lines (IRQ’s), Input/
`Output (I/O) addresses, and memory. ESCD also may be
`updated during runtime by system softWare in order to effect
`
`10
`
`15
`
`20
`
`25
`
`30
`
`35
`
`40
`
`45
`
`55
`
`60
`
`65
`
`6,073,206
`
`2
`con?guration of devices on the next boot. An ESCD inter
`face provides a mechanism for alloWing system softWare to
`lock system resources allocated to speci?c devices in the
`system and thereby avoid system resource con?icts.
`Updating ESCD in a conventional computer system has
`been dependent upon a segment selector from an operating
`system. The segment selector used by system BIOS to
`address an ESCD area of non-volatile storage is generated
`by the operating system. As a segment selector is exclusively
`con?gured for the memory map of the operating system, a
`segment selector loses meaning outside the context of the
`operating system memory map. A segment selector provided
`by an operating system also must be con?gured for the
`particular operating mode—real mode, 16-bit protected
`mode, or 32-bit protected mode—Whichever is applicable.
`The segment selector in one operating mode is therefore
`different from the segment selector for another operating
`mode. Further, the need for a segment selector from an
`operating system to update ESCD has required a different
`selector if an ESCD area is relocated. Another draWback of
`using a segment selector from an operating system to read or
`Write ESCD is the need to use a relatively sloW bus Within
`a computer system to reach the ESCD area of non-volatile
`storage.
`ESCD has typically resided in a portion of a ROM treated
`as an option ROM. Option ROM represents a designated
`area of ROM space Which an operating system preferably is
`programmed not to utiliZe. In certain operating modes,
`hoWever, availability of an option ROM is not guaranteed.
`For example, during runtime in a 32-bit protected mode, an
`operating system may not provide a segment selector to an
`option ROM, thereby preventing access to the option ROM
`during runtime. In addition, the siZe of the ROM space for
`Which an operating system provides a segment selector is
`limited.
`
`SUMMARY OF THE INVENTION
`
`Brie?y, a computer system according to the present inven
`tion provides a method of ?ashing Extended System Con
`?guration Data (ESCD) and variables stored With ESCD to
`a read-only-memory (ROM) using System Management
`Interrupt (SMI) code. An ESCD sector is de?ned in a
`read-only-memory for storing ESCD and associated vari
`ables. During PoWer-On-Self-Test (POST) code, a ROM
`image of the ESCD sector is copied to an ESCD original
`buffer and an ESCD Write buffer. The ESCD original buffer
`and ESCD Write buffer are areas of random access memory
`(RAM) used during POST for storing a ROM image of
`ESCD and associated variables. The ESCD Write buffer may
`be updated by POST code. FolloWing the POST operations,
`the contents of the ESCD Write buffer are copied to an ESCD
`runtime buffer. The ESCD runtime buffer is a RAM area to
`be used during runtime for storing ESCD data and associ
`ated variables. The contents of the ESCD original buffer or
`the ESCD sector are compared to the contents of the ESCD
`runtime buffer. If the contents of the ESCD runtime buffer
`differ from the contents of the compared buffer or sector,
`SMI code ?ashes the ROM image in the ESCD runtime
`buffer to the ESCD sector. If the ESCD runtime buffer is the
`same as the contents of the compared buffer or sector, a
`ROM ?ash is not performed. POST is then exited and the
`computer system is booted.
`During runtime, any Write to ESCD or an associated
`variable is detected. If a Write to ESCD or an associated
`variable is detected, the ESCD runtime buffer is updated
`With the ESCD or variable provided for the Write operation.
`
`5
`
`

`

`6,073,206
`
`3
`The SMI code then ?ashes the ROM image in the ESCD
`runtime buffer into the ESCD sector to save the ESCD or
`variable provided by the Write operation.
`This method of ?ashing ESCD and associated variables
`permits ESCD and associated variables to be ?ashed in any
`operating mode Whether real mode, 16-bit protected mode,
`or 32-bit protected mode. An operating mode-speci?c seg
`ment selector from an operating system for locating ESCD
`thus is no longer needed. Another advantage of this method
`of ?ashing ESCD and associated variables is the reduced
`POST execution time. This advantage is achieved by using
`the ESCD buffers to read a ROM image during late POST
`and runtime rather than reading a ROM image from the
`ESCD sector.
`
`BRIEF DESCRIPTION OF THE DRAWINGS
`
`A better understanding of the present invention can be
`obtained When the folloWing detailed description of the
`preferred embodiment is considered in conjunction With the
`folloWing draWings, in Which:
`FIG. 1 is a schematic diagram of a computer system
`including a ?ash ROM;
`FIG. 2 is a data ?oW diagram of an ESCD ?ash process
`in accordance With the present invention;
`FIG. 3 is a data ?oW diagram of an ESCD ?ash process
`using an ESCD original buffer, ESCD Write buffer, and
`ESCD runtime buffer in accordance With the present inven
`tion; and
`FIG. 4 is a ?oWchart of the ESCD ?ash process of FIG.
`3.
`
`DETAILED DESCRIPTION OF THE
`PREFERRED EMBODIMENT
`
`Turning to FIG. 1, illustrated is a typical computer system
`S implemented according to the invention. While this system
`is illustrative of one embodiment, the techniques according
`to the invention can be implemented in a Wide variety of
`systems. The computer system S in the illustrated embodi
`ment is a PCI bus/ISA bus based machine, having a periph
`eral component interconnect (PCI) bus 10 and an industry
`standard architecture (ISA) bus 12. The PCI bus 10 is
`controlled by PCI controller circuitry located Within a
`memory/accelerated graphics port (AGP)/PCI controller 14.
`This controller 14 (the “host bridge”) couples the PCI bus 10
`to a processor socket 16 via a host bus, an AGP connector
`18, a memory subsystem 20, and an AGP 22. A second
`bridge circuit, a PCI/ISA bridge 24 (the “ISA bridge”)
`bridges betWeen the PCI bus 10 and the ISA bus 12.
`The host bridge 14 in the disclosed embodiment is a
`440LX Integrated Circuit by Intel Corporation, also knoWn
`as the PCI AGP Controller (PAC). The ISA bridge 24 is a
`PIIX4, also by Intel Corporation. The host bridge 14 and ISA
`bridge 24 provide capabilities other than bridging betWeen
`the processor socket 16 and the PCI bus 10, and the PCI bus
`10 and the ISAbus 12. Speci?cally, the disclosed host bridge
`14 includes interface circuitry for the AGP connector 18, the
`memory subsystem 20, and the AGP 22. The ISA bridge 24
`further includes an internal enhanced IDE controller for
`controlling up to four enhanced IDE drives 26, and a
`universal serial bus (USB) controller for controlling USB
`ports 28.
`The host bridge 14 is preferably coupled to the processor
`socket 16, Which is preferably designed to receive a Pentium
`II processor module 30, Which in turn includes a micropro
`cessor core 32 and a level tWo
`cache 34. The processor
`
`4
`socket 16 could be replaced With different processors other
`than the Pentium II Without detracting from the spirit of the
`invention.
`The host bridge 14, When the Intel 440LX North Bridge
`is employed, supports extended data out (EDO) dynamic
`random access memory (DRAM) and synchronous DRAM
`(SDRAM), a 64/72-bit data path memory, a maximum
`memory capacity of one gigabyte, dual inline memory
`module (DIMM) presence detect, eight roW address strobe
`(RAS) lines, error correcting code (ECC) With single and
`multiple bit error detection, read-around-Write With host for
`PCI reads, and 3.3 volt DRAMs. The host bridge 14 support
`up to 66 megahertZ DRAMs, Whereas the processor socket
`16 can support various integral and non-integral multiples of
`that speed.
`The ISA bridge 24 also includes enhanced poWer man
`agement. It supports a PCI bus at 30 or 33 megahertZ and an
`ISA bus 12 at 1A1 of the PCI bus frequency. PCI revision 2.1
`is supported With both positive and subtractive decode. The
`standard personal computer input/output (I/O) functions are
`supported, including a dynamic memory access (DMA)
`controller, tWo 82C59 interrupt controllers, an 8254 timer, a
`real time clock (RTC) With a 256 byte couple metal oxide
`semiconductor (CMOS) static RAM (SRAM), and chip
`selects for system read only memory (ROM), real time clock
`(RTC), keyboard controller, an external microcontroller, and
`tWo general purpose devices. The enhanced poWer manage
`ment Within the ISA bridge 24 includes ?ll clock control,
`device management, suspend and resume logic, advanced
`con?guration and poWer interface (ACPI), and system man
`agement bus (SMBus) control, Which implement the inter
`integrated circuit (I2C) protocol.
`The PCI bus 10 couples a variety of devices that generally
`take advantage of a high speed data path. This includes a
`small computer system interface (SCSI) controller 26, With
`both an internal port 38 and an external port 40. In the
`disclosed embodiment, the SCSI controller 26 is aAIC-7860
`SCSI controller. Also coupled to the PCI bus 10 is a netWork
`interface controller (NIC) 42, Which preferably supports the
`ThunderLanTN poWer management speci?cation by Texas
`Instruments. The NIC 42 is coupled through a physical layer
`44 and a ?lter 46 to an RJ-45 jack 48, and through a ?lter
`50 to a AUI jack 52.
`BetWeen the PCI Bus 10 and the ISA Bus 12, an ISA/PCI
`backplane 54 is provided Which include a number of PCI and
`ISA slots. This alloWs ISA cards or PCI cards to be installed
`into the system for added functionality.
`Further coupled to the ISA Bus 12 is an enhanced sound
`system chip (ESS) 56, Which provides sound management
`through an audio in port 58 and an audio out port 60. The
`ISA bus 12 also couples the ISA bridge 24 to a Super I/O
`chip 62, Which in the disclosed embodiment is a National
`Semiconductor Corporation PC87307VUL device. This
`Super I/O chip 62 provides a variety of input/output
`functionality, including a parallel port 64, an infrared port
`66, a keyboard controller for a keyboard 68, a mouse port for
`a mouse port 70, additional series ports 72, and a ?oppy disk
`drive controller for a ?oppy disk drive 74. These devices are
`coupled through connectors to the Super I/O 62.
`The ISA bus 12 is also coupled through bus transceivers
`76 to a ?ash ROM 78, Which can include both basic
`input/output system (BIOS) code for execution by the pro
`cessor 32, as Well as an additional code for execution by
`microcontrollers in a ROM-sharing arrangement. The ?ash
`ROM 78 includes an ESCD sector for storing ESCD and
`associated variables. Details concerning ESCD may be
`
`10
`
`15
`
`25
`
`35
`
`55
`
`65
`
`6
`
`

`

`10
`
`15
`
`25
`
`35
`
`5
`obtained from the Extended System Con?guration Data
`Speci?cation, Version 1.02, published on Feb. 14, 1994 by
`Compaq Computer Corporation, Intel Corporation, and
`Phoenix Technologies, Ltd.
`The ISA bus 12 further couples the ISA bridge 24 to a
`security, poWer, ACPI, and miscellaneous application spe
`ci?c integrated circuit (ASIC) 80, Which provides a variety
`of miscellaneous functions for the system. The ASIC 80
`includes security features, system poWer control, light emit
`ting diode (LED) control, a PCI arbiter, remote Wake up
`logic, system fan control, hood lock control, ACPI registers
`and support, system temperature control, and various glue
`logic. Finally, a video display 82 can be coupled to the AGP
`connector 18 for display of data by the computer system S.
`Again, a Wide variety of systems could be used instead of the
`disclosed system S Without detracting from the spirit of the
`invention.
`Referring to FIG. 2, a data ?oW diagram of an ESCD ?ash
`process in accordance With the present invention is shoWn.
`An operating system or application 100 may initiate an
`update of the ESCD sector 106 so as to store data to ESCD
`or associated variables. The operating system 100 for
`example may call ROM BIOS code to be executed by the
`processor 32 for performing an update of the ESCD sector
`106 (FIGS. 2 & 3). In accordance With the present invention,
`an update related to the ESCD sector 106 is achieved by
`copying data to an ESCD runtime buffer 112 during runtime
`or POST (PoWer-On-Self-Test). POST is designed to
`identify, test, and con?gure the computer system S in
`preparation for starting the operating system. During late
`POST, data associated With the ESCD sector 106 may be
`copied to an ESCD Write buffer 110 (FIG. 3). The set of
`operations collectively termed the POST operations are of
`the conventional type knoWn in the art. During late POST,
`the contents of the ESCD Write buffer 110 may be copied to
`the ESCD runtime buffer 112. In the disclosed embodiment,
`data is copied a byte at a time. If the ESCD runtime buffer
`112 has been updated, runtime code 116 (FIG. 3) generates
`a softWare management interrupt (SMI) so as to pass the
`ROM image contained in the ESCD runtime buffer 112 to
`SMI code 104. In the disclosed embodiment, the SMI code
`104 is initially stored in the ?ash ROM 78 and copied to a
`volatile memory area during boot-up of the computer system
`S. The SMI code 104 ?ashes the ROM image to the ESCD
`sector 106 of the ?ash ROM 78. The SMI code 104 includes
`an algorithm for ?ashing the ESCD sector 106 Which is
`speci?c to the particular ?ash ROM 78. An algorithm for
`?ashing a ?ash ROM typically includes an erase sequence
`for erasing a ?ash ROM folloWed by a programming
`sequence for programming a ?ash ROM.
`Referring to FIG. 3, a data ?oW diagram of an ESCD ?ash
`process using an ESCD original buffer 108, the ESCD Write
`buffer 110, and an ESCD runtime buffer 112 in accordance
`With the present invention is shoWn. In accordance With the
`present invention, the ?ash ROM 78 includes the ESCD
`sector 106, POST code 114, SMI code 104 for ?ashing a
`ROM image into the ESCD sector 106, and code for
`executing the ESCD ?ash process. Referring to FIG. 4, a
`?oWchart of the ESCD ?ash process of FIG. 3 is shoWn.
`FolloWing boot-up of the computer system S, POST is
`initiated. Beginning at step 200, a ROM image of the ESCD
`sector 106 is copied to the ESCD original buffer 108 and the
`ESCD Write buffer 110. The ESCD original buffer 108
`serves to maintain the original ROM image of the ESCD
`sector 106. Next, in step 202, the ESCD Write buffer 110
`may or may not be updated by POST. Step 202 is shoWn in
`broken line to re?ect that the step is optional. If performed,
`step 202 is typically folloWed by a POST operation.
`
`45
`
`55
`
`65
`
`6,073,206
`
`6
`From either step 202 or 200, control proceeds to step 204
`of the POST operation Wherein the contents of the ESCD
`Write buffer 110 are copied to the ESCD runtime buffer 112
`during POST 114. Next, in step 206, either the ESCD
`original buffer 108 or the ESCD sector 106 is compared to
`the ESCD runtime buffer 112. The ESCD original buffer 108
`contains a ROM image of the ESCD sector 106. Either the
`ESCD original buffer 108, ESCD Write buffer 110, or the
`ESCD sector 106 may be used to determine if the ESCD
`sector 106 has been updated. Since the ESCD original buffer
`108 is a random access memory area, accessing the ESCD
`original buffer 108 is faster than accessing the ESCD sector
`106.
`Control then proceeds to step 208 Wherein it is determined
`if the ESCD runtime buffer 112 matches the compared buffer
`or sector. If the ESCD runtime buffer 112 does not match the
`compared buffer or sector, then control proceeds to step 210
`Wherein the SMI code 104 ?ashes the ROM image in the
`ESCD runtime buffer 112 into the ESCD sector 106. A
`mismatch betWeen the ESCD runtime buffer 112 and the
`compared buffer or sector indicates that the ESCD runtime
`buffer 112 has been updated. If the ESCD runtime buffer 112
`matches the compared buffer or sector, control proceeds to
`step 212. Amatch betWeen the ESCD runtime buffer 112 and
`the compared buffer or sector indicates that the ESCD
`runtime buffer 112 has not been updated.
`From step 210, control proceeds to step 212. FolloWing
`step 208 or 210, POST is exited and runtime begins. At step
`212, it is determined Whether there is a Write to ESCD data
`or associated variables. ESCD data and associated variables
`may change during runtime. If a Write to ESCD data or
`associated variables is detected, control proceeds from step
`212 to step 214. In step 214, the ESCD runtime buffer 112
`is updated With the data Written to ESCD or associated
`variables. The ESCD data or associated variables Written
`may be neW data or may be the same as previously stored
`data. Alternatively, it is contemplated that the ESCD runtime
`buffer 112 may be exclusively updated When a Write of neW
`ESCD data or associated variables is detected. From step
`214, control proceeds to step 216 Wherein the SMI code 104
`?ashes the ROM image in the ESCD runtime buffer 112 into
`the ESCD sector 106. This step is performed during a system
`management mode of the computer system S. From step
`216, control returns to step 212. In this Way, any Write to
`ESCD or associated variables during runtime results in
`?ashing a neW ROM image into the ESCD sector 106.
`The use of the ESCD Write buffer 110 and the ESCD
`runtime buffer 112 serves to isolate storage of ESCD and
`associated variables during POST from storage of ESCD
`and associated variables during runtime. The ESCD original
`buffer 108 and ESCD Write buffer 110 both serve as ESCD
`POST buffers. The ESCD original buffer 108 maintains the
`original ROM image of the ESCD sector 106, and the ESCD
`Write buffer 110 re?ects any updates to ESCD data and
`associated variables during POST. In the disclosed
`embodiment, the ESCD original buffer 108 and ESCD Write
`buffer 110 are random access memory areas existing during
`POST. Further, in the disclosed embodiment, the ESCD
`runtime buffer 112 is a random access memory area existing
`during late POST and runtime. It should be understood that
`the ESCD buffers and the ESCD sector described store both
`ESCD data and associated variables.
`In the disclosed embodiment, the associated variables
`include variables representing system features and oWner
`ship data. Speci?cally, the oWnership data variables may
`include an oWnership tag, a chassis serial number and
`manufacturing process numbers bytes. Use of an oWnership
`
`7
`
`

`

`10
`
`15
`
`25
`
`35
`
`7
`tag, chassis serial number, and manufacturing process num
`ber bytes are conventional and known in the art. The
`ownership tag may be an 80-byte standard ASCI character
`string protected by an administrator passWord. In the dis
`closed embodiment, the speci?c oWnership tag used is, for
`example, “Property of
`,” the particular vendor of the
`system S. An oWnership tag is typically displayed during
`POST. Manufacturing process number bytes are used to
`track the last station of a manufacturing line Which the
`computer system has been through.
`In a conventional computer system, a segment selector
`from an operating system is used to locate ESCD. The
`segment selector provided by the operating system is con
`?gured for the particular operating mode—real mode, 16-bit
`protected mode, 32-bit protected mode—Whichever is appli
`cable. A segment selector in one operating mode is therefore
`different from a segment selector for another operating
`mode. Also, ESCD has typically resided in a portion of a
`ROM treated as an option ROM. In certain operating modes,
`hoWever, availability of an option ROM is not guaranteed.
`For example, during runtime in a 32-bit protected mode, an
`operating system may not provide a segment selector to an
`option ROM, thereby preventing access to the option ROM
`during runtime. In accordance With the ?ash process of the
`present invention, a ?ash may be performed in any operating
`mode since there is no operating system intervention. Using
`SMI code in accordance With the present invention thus
`provides for ?ashing a non-volatile memory independent of
`the operating mode of the computer system.
`Further, in a conventional computer system, updating
`ESCD has required accessing the non-volatile memory
`storing ESCD. The need to access a non-volatile memory
`each time ESCD is updated requires the transfer of ESCD
`across a relatively sloW bus coupled to the non-volatile
`memory. In accordance With the present invention, a ROM
`image is ?ashed from the ESCD runtime buffer 112. Access
`ing a random access memory area of the ESCD runtime
`buffer 112 as opposed to the ESCD sector 106 increases
`POST execution time since the ESCD runtime buffer 112
`may be accessed Without providing data across a relatively
`sloW bus.
`It should be understood that the ?ash process of the
`present invention may extend to areas of a non-volatile
`memory other than the ESCD sector. In accordance With the
`present invention, SMI code may be used to ?ash any area
`of the non-volatile memory. Further, it should be understood
`that a stack, pointers, and registers may be used in copying
`contents from one ESCD buffer to another ESCD buffer. It
`should also be understood that the ?ash process in accor
`dance With the present invention encompasses ?ashing any
`non-volatile memory and therefore is not limited to ?ashing
`a read-only-memory.
`The foregoing disclosure and description of the invention
`are illustrative and explanatory thereof, and various changes
`in the siZe, shape, materials, components, circuit elements,
`Wiring connections and contacts, as Well as in the details of
`the illustrated circuitry and construction and method of
`operation may be made Without departing from the spirit of
`the invention.
`What is claimed is:
`1. Amethod of ?ashing an extended system con?guration
`data (ESCD) storage area of a non-volatile memory of a
`computer system comprising the steps of:
`copying a non-volatile memory image of an ESCD data
`storage area for storing ESCD and associated variables
`of a non-volatile memory to a ?rst region of a poWer on
`self test (POST) buffer and a second region of the
`POST buffer;
`
`45
`
`55
`
`65
`
`6,073,206
`
`8
`copying contents of the second region of the POST buffer
`to an ESCD runtime buffer;
`comparing the contents of the ?rst region of the POST
`buffer or the ESCD data storage area of the non-volatile
`memory With the contents of the ESCD runtime buffer;
`and
`?ashing the non-volatile memory image in the ESCD
`runtime buffer into the ESCD data storage area during
`the system management mode of the computer system
`if the contents of the ESCD runtime buffer differ from
`the contents of the compared ?rst region of the POST
`buffer or the ESCD data storage area.
`2. The method of claim 1, further comprising the steps of:
`detecting an update to the ESCD runtime buffer during
`runtime; and
`?ashing the non-volatile image in the ESCD runtime
`buffer into the ESCD data storage area of the non
`volatile memory.
`3. The method of claim 1, further comprising the step of:
`updating the ?rst region of the POST buffer during POST
`before the step of copying the contents of the second
`region of the POST buffer to the ESCD runtime buffer.
`4. The method of claim 1, Wherein the non-volatile
`memory is a ?ash read-only memory.
`5. The method of claim 1, Wherein the POST buffer is an
`area of random access memory existing during POST.
`6. The method of claim 1, Wherein the ESCD runtime
`buffer is an area of random access memory existing during
`POST and runtime.
`7. The method of claim 1, Wherein the associated vari
`ables comprise variables representing system features or
`oWnership data.
`8. The method of claim 1, further comprising the step of:
`entering a system management mode of the computer
`system from a 16-bit protected mode of the computer
`system before the step of ?ashing the non-volatile
`image.
`9. The method of claim 1, further comprising the step of:
`entering a system management mode of the computer
`system from a 32-bit protected mode of the computer
`system before the step of ?ashing the non-volatile
`image.
`10. The method of claim 1, further comprising the step of:
`entering a system management mode of the computer
`system from a real mode of the computer system before
`the step of ?ashing the non-volatile image.
`11. A computer system for ?ashing an extended system
`con?guration data (ESCD) storage area of a non-volatile
`memory comprising:
`a non-volatile memory, comprising storage locations for:
`an ESCD data storage area for storing ESCD data and
`associated variables;
`a non-volatile memory BIOS storage area for storing
`BIOS code for generating an system management
`interrupt (SMI) ?ash for the ESCD data storage area
`of the non-volatil

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