US5794054A - Flash ROM sharing between a processor and a controller - Google Patents

Flash ROM sharing between a processor and a controller Download PDF

Info

Publication number
US5794054A
US5794054A US08/684,414 US68441496A US5794054A US 5794054 A US5794054 A US 5794054A US 68441496 A US68441496 A US 68441496A US 5794054 A US5794054 A US 5794054A
Authority
US
United States
Prior art keywords
microcontroller
processor
resource
flash rom
code
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
US08/684,414
Inventor
Hung Q. Le
David J. DeLisle
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hewlett Packard Development Co LP
Original Assignee
Compaq Computer Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Compaq Computer Corp filed Critical Compaq Computer Corp
Priority to US08/684,414 priority Critical patent/US5794054A/en
Assigned to COMPAQ COMPUTER CORPORATION reassignment COMPAQ COMPUTER CORPORATION ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: DELISLE, DAVID J., LE, HUNG Q.
Priority to US08/775,281 priority patent/US5819087A/en
Application granted granted Critical
Publication of US5794054A publication Critical patent/US5794054A/en
Priority to US09/166,616 priority patent/US6154838A/en
Assigned to COMPAQ INFORMATION TECHNOLOGIES GROUP, L.P. reassignment COMPAQ INFORMATION TECHNOLOGIES GROUP, L.P. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: COMPAQ COMPUTER CORPORATION
Assigned to HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P. reassignment HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P. CHANGE OF NAME (SEE DOCUMENT FOR DETAILS). Assignors: COMPAQ INFORMATION TECHNOLOGIES GROUP, LP
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1433Saving, restoring, recovering or retrying at system level during software upgrading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration

Definitions

  • the present invention relates to the sharing of a resource among consumers, and more specifically, to the sharing of a read-only-memory (ROM) device between processors in a computer system.
  • ROM read-only-memory
  • Today's modem personal computer typically includes a microprocessor, a memory system, data storage devices, and input/output (I/O) devices such as a display, a keyboard, a mouse, and communication devices, among others.
  • the computer system is typically initialized, or boot-strapped, during a power up sequence using system software and information representing a sequence of internal control variables stored within a system read-only-memory (ROM). Since the system ROM is non-volatile, the content of the ROM contains valid data or instructions so that the computer system can be reliably boot-strapped to a point where the disk operating system (DOS) can be loaded to complete the boot-up sequence.
  • DOS disk operating system
  • One computer system utilizing the ROM-based boot code approach is the IBM personal computer (PC) developed by the IBM Corporation of Armonk, N.Y.
  • PC IBM personal computer
  • the system ROM stores the Basic Input/Output System (BIOS) which is executed upon power-up by the microprocessor to initialize the system, to perform a power-on self-test (POST) and to provide certain low level, hardware dependent support for the display, floppy/hard disk drives, and communication devices.
  • BIOS Basic Input/Output System
  • POST power-on self-test
  • More sophisticated routines and data may be included in the system ROM, depending upon the needs and complexity of a given computer system.
  • BIOS code In the original PC architecture, the BIOS code was fairly straight forward and required little memory space (about 32KB total). BIOS code provides the lowest level of interface between the operating system and the hardware. It normally is located at the top of memory for the original 8088 system of the original PC. In the original IBM PC architecture, the BIOS code is stored beginning at F8000h. Following a system reset or power-on, the typical system first goes to the high memory area of the 1 megabyte memory map, where the boot code is stored. Further, a checksum routine is typically executed to verify the status of the BIOS currently available to the system. If the integrity of the BIOS is determined to be good, the boot code initializes the system and its peripherals and passes control to the operating system. This is done by jumping to the address pointed to by a jump vector. If the BIOS is found to be corrupted or unusable (i.e., the computed checksum value does not match the expected value), the computer system indicates a system failure. In such instances, the BIOS ROM needs to be replaced.
  • a large capacity, reprogrammable storage device called a flash ROM can be used to store the POST and BIOS routines required for the initialization and operation of the computer system.
  • the flash ROM can be reprogrammed without being removed from the system, the flash ROM provides a more expeditious and less costly solution over conventional ROMs when software updates are required.
  • processing devices are also present in a modern computer. These processing devices include a coprocessor for performing specialized processing, a digital signal processor for handling modem, video and signal processing requirements, and one or more microcontrollers which handle the peripheral devices and offload the processing from the microprocessor. For instance, a microcontroller such as an 8051-compatible microcontroller may be used to interface with the keyboard as well as other I/O devices of the computer system. These processing devices also require one or more ROMs to store their operating code.
  • the microcontroller has a small amount of on-chip ROM and RAM to enable the microcontroller to operate with a minimum part count.
  • certain applications require more storage space than available with the built-in ROM on the microcontroller.
  • the microcontroller may require an external ROM device to handle more sophisticated application software.
  • an additional ROM device undesirably adds cost to the system.
  • the increase in the part count decreases the overall reliability of the computer, as these additional components increase the possibility of a failure.
  • a flash ROM storing the BIOS and POST codes is a high capacity device, which usually has spare storage capacity to accept codes intended for the microcontroller.
  • the flash ROM is shared between the microprocessor and a keyboard controller such as an 8051 microcontroller.
  • the microprocessor initially owns the flash ROM during the power-on reset and boot-up. After the microprocessor has verified system functionality using the POST codes, the microprocessor copies the BIOS code stored in the flash ROM to its main memory array, in an operation called "shadowing", to enhance the performance of the computer system, as the access speed to the main memory array is much faster than the access speed to the flash ROM.
  • the microcontroller After the microprocessor has copied the BIOS code of the flash ROM into the main memory array, the microprocessor only needs to occasionally access the flash ROM such as to reprogram the flash ROM.
  • the microcontroller retains ownership of the flash ROM until the computer system is reset by the cycling of power to the computer system or until the computer system writes to a control register to regain control of the flash ROM.
  • the microcontroller can no longer access the flash ROM until the system has been rebooted.
  • the prior art sharing approach is undesirable in that, once the ownership of the flash ROM has been surrendered to the microcontroller, the microprocessor can access the flash ROM for purposes such as reprogramming the flash ROM, but it cannot return control to the microcontroller.
  • the prior art solution requires that the entire content of the shared flash ROM be shadowed in the RAM such that all data stored in the flash ROM are accessible.
  • the flash ROM may store a number of optional data which may never be used such as language options and plug-and-play peripheral parameters, it is not desirable to copy fully the contents of the flash ROM into the main memory, as a full "shadow" backup in the main memory array unnecessarily consumes valuable main memory storage space.
  • key code segments of the flash ROM can be shadowed to economize on main memory consumption.
  • the computer system may need to access optional data stored on the flash ROM but not shadowed in the main memory array.
  • the computer system may need to access the flash ROM after it has released the ownership of the flash ROM to the microcontroller.
  • the "shadowed" version may occasionally be corrupted, necessitating a reload of the code and data images stored in the shared flash ROM. In such events, it is desirable to access the code and data images without requiring the system to be rebooted.
  • a computer system is provided with a processor, a flash ROM, a microcontroller and an arbiter for selectively assigning the ownership of the flash ROM to either the microprocessor or the microcontroller.
  • the arbiter assigns the flash ROM initially to the microcontroller when a power source is attached to the system.
  • the microcontroller releases the flash ROM to the microprocessor to enable the computer system to proceed with the normal boot-up process. In this process, various system self tests are performed.
  • the microprocessor shadows one or more portions of the flash ROM BIOS into a main memory array. After the processor successfully boots up, the processor releases the flash ROM back to the microcontroller by restarting the clock of the microcontroller and writing a command to a mailbox register in the arbiter which takes the microcontroller out of idle mode.
  • the microprocessor In the event that the microprocessor needs to regain access to the flash ROM contents, the microprocessor writes to a register of the arbiter to request access to the flash ROM. The microprocessor waits for a confirmation from the arbiter that the microcontroller is entering an idle mode. Next, the microprocessor halts the clock of the microcontroller. These events cause the microcontroller to float, or tristate, the signal lines going from the microcontroller to the flash ROM such that the microprocessor can drive the signal lines without conflict. In this manner, the microprocessor can still access the shared flash ROM after the system has booted up. Thus, the system cost is reduced, the system reliability is enhanced, while the system accessibility to the flash ROM after the boot-up period is still preserved.
  • FIG. 1 is a block diagram of a computer system having a flash ROM sharing device in accordance with the present invention
  • FIG. 2 is a more detailed schematic block diagram of the flash ROM sharing device of the present invention.
  • FIG. 3 is a flow chart of the process for booting up the microcontroller and the microprocessor of FIG. 1;
  • FIG. 4 is a flow chart showing the process of booting up the microprocessor of FIG. 1 after the microcontroller has booted up;
  • FIG. 5 is a flow chart showing the process of requesting ownership to the flash ROM of FIG. 1;
  • FIG. 6 is a flow chart showing the process using codes stored in the flash ROM of FIG. 2 for processing a flash ROM access request from the microprocessor;
  • FIG. 7 is a flow chart showing the process using codes stored in the built-in ROM of the microcontroller of FIG. 2 for processing a flash ROM access request from the microprocessor.
  • FIG. 1 is a computer system S according to the present invention.
  • the system S comprises a portable computer 80 and an expansion base unit 90.
  • a CPU 100 and a level two (L2) cache 104 are connected to a high speed local bus 105.
  • the processor 100 of the preferred embodiment is one of the 80 ⁇ 86 microprocessor family manufactured by Intel Corporation of Santa Clara, Calif.
  • the processor operates with a standard IBM-PC compatible operating system, such as MS-DOS or Windows, available from Microsoft Corporation of Redmond, Washington.
  • the L2 cache 104 provides additional caching capabilities to the processor's on-chip cache to improve performance.
  • a number of memory interface and memory devices are connected between the local bus 105 and a PCI bus 106. These devices include a memory to PCI cache controller (MPC) 101, a dynamic random access memory (DRAM) array 102, and a memory data buffer (MDB) 103.
  • the MPC 101 is connected to the DRAM array 102, which is further connected to the MDB 103.
  • the MPC 101, DRAM array 102, and MDB 103 collectively form a high performance memory system for the computer system S.
  • a video controller 108 is also connected to a PCI bus 106.
  • the PCI bus 106 is also connected to a system controller 112.
  • the system controller 112 is a PCI to ISA bus bridge which also provides various support functions for the portable computer 80 and the expansion base unit 90 of the system S.
  • the system controller 112 is a single integrated circuit that acts as a PCI bus master and slave, an ISA bus controller, an ISA write posting buffer, an ISA bus arbiter, DMA devices, and an IDE disk interface.
  • the system controller 112 is connected to an audio controller 116 and a modem 118 as conventionally present in PC systems to provide sound and data communication capabilities for the system S via a first ISA interface 121.
  • the system controller 112 is also connected to an IDE interface port 114 for driving one or more peripheral devices such as hard disk drives, preferably a CD-ROM player 117 and a disk drive 119.
  • peripheral devices such as the disk drives typically store boot data used during the initial power-up of the computer system.
  • the system controller 112 provides a single pin output to support an interrupt serial bus (IRQSER) 144.
  • IRQSER interrupt serial bus
  • the system controller 112 is connected to an MSIO (mobile super I/O) chip 120.
  • the MSIO 120 is connected to a flash ROM 122.
  • the flash ROM 122 receives its control, address and data signals from the MSIO 120.
  • the flash ROM 122 contains the BIOS information for the computer system S and can be reprogrammed to allow for revisions of the BIOS.
  • the MSIO 120 provides a parallel port 180, a serial port, a floppy interface, a keyboard interface and a mouse interface, among others, for the computer system S.
  • a plurality of Quick Connect switches 109 are also connected to the PCI bus 106. Upon detecting a docking sequence between the portable computer 80 and the base unit 90, the Quick Connect switches 109 couple the PCI bus 106 and the IRQSER bus 144 to an expansion PCI bus 107 and an expansion IRQSER bus 145 on the base unit 90.
  • the Quick Connect switches 109 are series in-line FET transistors having low r ds , or turn-on resistance, values to minimize the loading on the PCI buses 106 and 107 and the IRQSER buses 144 and 145.
  • one or more PCI masters 132 are connected on the expansion PCI bus 107, which is adapted to be connected to the PCI bus 106 over the Quick Switches 109 when the portable computer 80 is docked to the expansion base unit 90.
  • the PCI bus 107 is also connected to PCI slots 142 and 144 and also to a card-bus interface 146 for accepting expansion cards.
  • a second system controller 130 which is preferably a second integrated circuit of the same type as the system controller 112.
  • the system controller 130 is configured to be the slave upon power-up. As a slave, the write posting buffer is not available in the system controller 130.
  • the system controller 130 is connected to the expansion PCI bus 107 and the expansion interrupt serial bus 145.
  • the system controller 130 supports additional drives 137 and 139 through an the IDE interface 134.
  • the system controller 130 also supports an ISA bus 135 which is connected to one or more ISA slots 136-138.
  • the system controller 130 is further connected to a second MSIO device 140, which provides a secondary parallel port, serial port, and floppy interface.
  • the system S upon docking, may have multiple parallel ports, serial ports, keyboards, mice, and disk drives via the system controllers 112 and 130. Additionally, the system S may have a plurality of PCI and ISA type peripherals on their respective buses. The availability of a plurality of slots allows more peripherals to be connected to the system S and contributes to the useability and flexibility of the portable computer 80 when it is docked to the expansion base unit 90.
  • FIG. 2 the circuitry for sharing the flash ROM 122 between a microcontroller and a microprocessor is disclosed.
  • operations directed at the ISA expansion bus are communicated over the PCI bus 106 and directed at the system controller 112.
  • the system controller 112 communicates with the super I/O device 120 over the ISA bus.
  • an interface unit 170 is connected to the ISA bus for receiving instructions from the CPU 100.
  • the interface 170 provides a number of "mailbox" registers mapped into the I/O memory space to facilitate the interprocessor communication and coordination between the CPU 100 and a microcontroller 174.
  • the interface 170 is connected to the enable input of an oscillator gating circuit 172 to allow the CPU 100 to control the generation of the clock to the microcontroller 174.
  • the oscillator gating circuit, or the variable clock generator 172 receives a clock signal which is externally generated by an oscillator 185.
  • the oscillator gating circuit or variable clock generator 172 preferably receives a 14 MHz clock signal from the oscillator 185 and generates a programmable clock output that can be selected from 0 MHz, 12 MHz, 14 MHz, or 16 MHz.
  • the oscillator 185 is active when the computer system 80 is in the ON state.
  • a 32 Khz crystal 161 is connected to the MSIO 120 to clock the real time clock (RTC) circuit (not shown), to clock the 8051 microcontroller 174 when it is in a deep sleep mode, and to clock other portions of the MSIO 120.
  • the deep sleep mode is an ultra low power mode where most sections of the microcontroller 174 are shut down to conserve power. This mode is a special mode that is provided as an enhancement to a standard 8051-compatible microcontroller cell. The deep sleep mode is entered when the standard 8051 IDLE instruction is executed with a particular register bit set.
  • the microcontroller 174 assumes that it will operate off a ring oscillator 187 and thus arms the ring oscillator 187 such that the ring oscillator 187 will wake up when certain events such as interrupts are presented to the microcontroller 174.
  • the internal ring oscillator 187 is connected to the oscillator gating circuit 172 to provide clock signals to the microcontroller 174 when the computer system 80 is in the STANDBY mode or when the microcontroller comes out of its deep sleep.
  • the ring oscillator 187 consists essentially of a number of inverters connected together in a looped series arrangement, with a pass transistor connected between the output of one inverter and the input of another inverter such that, upon turning off the pass transistor, the feedback is broken and the oscillation stops.
  • the control gate of the pass transistor is connected to the microcontroller 174 such that the microcontroller 174 can wake up the ring oscillator 187 when certain internal and external events are encountered.
  • the external events that wake up the microcontroller 174 include the actuation of the ring indicator from the modem, the standby button, the hibernation button, PCMCIA card detect, and the PCMCIA ring indicator.
  • the internal events which wake up the microcontroller 174 include events relating to the real time clock alarm, the hibernation time, the keyboard, and the mouse, among others.
  • the ring oscillator is available as a standard ASIC module from SMC Corporation of Hauppauge, N.Y.
  • the output of the oscillator gating circuit 172 is provided to the clock input of the 8051 compatible microcontroller 174.
  • the 8051 compatible microcontroller 174 has a random access memory (RAM) 175 and a read only memory (ROM) 176 for storing boot-up instructions.
  • the microcontroller 174 has a built-in timer 177 named Timer -- 0 which may be used to allow the microcontroller 174 to detect failures when the timer time-outs.
  • the timer 177 is a count-up timer which interrupts at the rollover point.
  • the timer 177's duration and count-up sequencing are controlled by the microcontroller 174.
  • the timer 177 generates an interrupt to the microcontroller 174 upon the completion of its count sequence.
  • the generation of the interrupt to the microcontroller 174 wakes the microcontroller 174 out of its idle mode so that the processing of the routines of the present invention can be performed.
  • the timer 177 is used as a fail-safe mechanism to wake up the microcontroller in the event of power failures and other abnormal operating conditions.
  • a watchdog timer can be used in place of the timer 177.
  • the software overhead on the microcontroller 174 is reduced, as the watchdog timer will reset the microcontroller 174 in event of an abnormal program execution. If the watchdog timer is not periodically reset by the microcontroller 174, the counter in the watchdog timer overflows, causing the microcontroller 174 to be reset. The watchdog timer thus restarts the microcontroller 174 in abnormal situations, providing for recovery from a hardware or software error.
  • the microcontroller 174 is also connected to the select input of a two-to-one multiplexer 178.
  • the B input of the multiplexor 178 is connected the input/output lines of the microcontroller 174.
  • the A input of the multiplexor 178 is connected to the interface 170 for transferring data from the parallel port directly to the processor 100 via the system controller 112.
  • the microcontroller 174 has an output connected to the select input S of the multiplexor 178 to control the routing of data from the parallel port 180 to either the interface 170 or the microcontroller 174.
  • the output of the multiplexor 178 is connected to the parallel port 180.
  • the interface 170 and the microcontroller core 174 are connected to the flash ROM 122.
  • the parallel port 180 communicates with a parallel port 190 (FIG. 2) which is driven by a second computer system 192.
  • the second computer system 192 contains uncorrupted data such as a new valid BIOS to be loaded to the flash ROM 122.
  • the microcontroller 174 of FIG. 2 receives battery statistics from one or more battery packs 191 and 193, which are connected in parallel to provide portable power V to the portable computer 80. Further, the battery packs 191 and 193 communicate over an interintegrated circuit (I 2 C) bus, a simple bi-directional two wire bus for efficiently controlling multiple integrated chips. Details of the I 2 C bus can be found in the "The I 2 C-Bus and How to Use It (Including Specification)," published by Phillips Semiconductors, January 1992. Briefly, the I 2 C bus consists of two lines: a serial clock (SCL) and a serial data line (SDA). Each of these lines is bidirectional. The SCL line provides the clock signal for data transfers which occur over the I 2 C bus.
  • SCL serial clock
  • SDA serial data line
  • Logic levels for this signal are referenced to VBATT-, which is common to all installed battery packs B.
  • the SDA line is the data line for data transfers which occur over the I 2 C bus. Again, logic levels for this signal are referenced to VBATT-.
  • the battery microcontroller of any additional battery pack is also coupled to the MSIO 120 via the I 2 C bus. Low value series resistors (not shown) are typically provided at each device connection for protection against high-voltage spikes.
  • Each device connected to the I 2 C bus is recognized by a unique address--whether it is the MSIO 120 or the battery microcontroller of any installed battery packs 191 and 193. Both the MSIO 120 and battery microcontroller incorporate an on-chip interface which allows them to communicate directly with each other via the I 2 C bus. Using the I 2 C bus in cooperation with the master battery signal MSTR -- BAT reduces the number of interface signals necessary for efficient battery management.
  • Co-pending U. S. patent application Ser. No. 08/573,296, entitled “BATTERY PACK WAKEUP” and filed on Dec. 15, 1995 illustrates various aspects of nickel-based and lithium ion battery packs and communications over a serial bus. This application is hereby incorporated by reference.
  • the microcontroller 174 also receives inputs from a plurality of switches, including a computer lid opening switch 194, a power-on switch 195, and a standby switch 196.
  • the lid opening switch 194 senses when the lid of the computer system 80 is opened, indicating that the user is about to activate the computer system 80.
  • the power-on switch 195 allows the user to turn on the portable computer 80, while the standby switch 196 allows the user to put the portable computer system 80 to an idle mode or a sleep mode to conserve power.
  • the actuation of the switches 194, 195 and 196 generates an interrupt to the microcontroller 174 and causes the microcontroller 174 to exit its deep sleep mode, if the microcontroller 174 is in such a mode, and further causes the microcontroller 174 to branch to an appropriate interrupt handler to respond to the actuation of the switches or the insertion/removal of the battery packs 191 and 193.
  • the microcontroller 174 is connected to a keyboard 197 for receiving data entries from the user.
  • the microcontroller 174 is further connected to a DC/DC converter 198 which provides regulated +5VDC and +12VDC to the VCC2 plane to power the portable computer 80.
  • the DC/DC converter receives a DC voltage supplied by an AC/DC converter (not shown) which is connected to the AC power at a docking station (not shown).
  • the portable computer unit 80 When the portable computer unit 80 is docked with its docking station, it communicates with peripheral devices, receives DC currents for charging batteries plugged into the portable computer 80 and for operating the portable computer unit 80.
  • the DC/DC converter 198 has an enable input driven by the microcontroller 174 such that the microcontroller 174 can turn on or off the DC/DC converter 198.
  • FIG. 3 describes the basic power-up sequence in the computer of FIG. 1.
  • the routine checks to see if a system reset has occurred in step 202. If not, the routine exits in step 218. Alternatively, the routine transfers to step 203 where the microprocessor or CPU 100 reset input remains asserted.
  • the microcontroller 174 boots-up using codes stored in the ROM 176. The microcontroller 174 boots-up by executing the instructions located at address 0000h in the 8051 address space. The microcontroller 174 then jumps to another memory location to initialize the RAM 175 by clearing it.
  • the microcontroller 174 checks the integrity of the flash ROM 122 using an integrity checker.
  • the integrity checker of step 206 performs a checksum computation on the bottommost 16 KB segment of the flash ROM 122 content.
  • the checksum is computed at step 206 by adding, without carry, the lowest 8,192 16-bit words of the flash ROM. While the addition is being performed, the routine also verifies that the 16 KB are not all zero. If the flash ROM segment passes the checksum test, the routine proceeds to step 209. Alternatively, if the flash ROM 122 check-sum indicates a failure in step 206, the flash ROM 122 has been corrupted and needs to be reprogrammed in step 208.
  • the apparatus and process for performing the flash recovery step 208 are disclosed in the previously incorporated co-pending patent application entitled "FLASH ROM PROGRAMMING.”
  • the routine waits until the user presses the power button in step 209. Once the power button has been actuated, the microcontroller 174 releases its ownership of the flash ROM 122 in step 210 by tristating its signal lines coupled to the flash ROM 122. Further, the microcontroller 174 preferably controls the reset input of the CPU 100 through circuitry not shown, and the microcontroller 174 releases that reset input of the CPU 100 to allow the CPU 100 to boot-up with ownership of the flash ROM 122. When the Intel 80 ⁇ 86 CPU 100 of the preferred embodiment first powers-up, the CPU 100 executes the instruction located 16 bytes from the highest memory address.
  • this address is FFFF0h.
  • FFFFF0h For the 80286 CPU, it is FFFFF0h, for the 80386 CPU, it is FFFFFFF0h, and for the 80486 CPU, it is FFFFFFF0h.
  • Typical IBM PC/AT compatible systems have a jump instruction at this address, to the beginning of the power-on-self-test (POST) routine of the system ROM BIOS.
  • the POST tests the microprocessor 100, memory 102, and other hardware components for their presence and integrity, and also initializes various interrupt vector table entries with default values pointing to handler routines within the system BIOS.
  • step 212 the CPU 100 performs a shadow operation to enhance the access speed to the routines stored in the BIOS.
  • shadowing is performed by copying the contents of selected portions of the original reserved memory to be shadowed to predetermined temporary memory locations. Once the selected portions are transferred into these temporary memory locations, the selected portions of the original reserved memory are disabled, and the corresponding portions of shadowed memory are enabled. Then, in a second step, the contents of these temporary locations are copied into the shadow memory at the same memory address locations from which they originate. Thereafter, accesses to the selective portions of the original reserved memory result in the access of corresponding portions of a shadowed memory, now RAM.
  • the portion of the DRAM main memory 102 which receives such a portion of the BIOS is sometimes referred to as "shadow RAM.” More specifically, in the standard system architecture, the logical main memory address space is divided into a low memory range (0h-9FFFFh), a reserved memory range (A0000h-FFFFFh) and an extended memory range (100000h-FFFFFFh).
  • the system ROM BIOS is located logically at addresses F0000h-FFFFFh, and is located physically on the ISA bus. Addresses C0000h-EFFFFh contain ROM BIOS portions of the specific add-on cards and are located physically on their respective cards on the ISA bus.
  • addresses A0000h-BFFFFh contain the video buffer, located physically on a video controller on the I/O bus.
  • Duplicate memory space is typically provided in the dynamic RAM on the local bus for addresses C0000h-FFFFFh, and a user of the system can select during a setup procedure which portions of the ROM BIOS are to be shadowed by being copied into the duplicate DRAM space during boot up.
  • the address of the shadow RAM area is then mapped into the address of the flash ROM 122 address space by the memory controller 101. Once shadowed, accesses to BIOS routines are accelerated because the RAM access time is much faster than the ROM access times.
  • step 214 the CPU 100 returns ownership of the flash ROM 122 back to the microcontroller 174 before the microcontroller 174 is restarted.
  • the CPU 100 writes to a mailbox register which in turn generates an interrupt signal to the microcontroller 174.
  • the microcontroller 174 wakes up and assumes ownership of the flash ROM 122. If the CPU 100 fails to write to the mailbox register, Timer -- 0 will overflow and generate a timeout. In the event of a timeout in step 215, the routine loops backs to step 203 where the microcontroller soft-resets, or executes at address 0000h. Alternatively, if the CPU 100 timely writes to the mailbox register, the routine exits in step 218.
  • FIG. 4 describes in more detail the process in which the microcontroller 174 releases the flash ROM 122 to allow the CPU 100 to boot up after a reset.
  • the microcontroller 174 switches to the ring oscillator 185 in step 219.
  • the microcontroller 174 sets the Timer -- 0 to a predetermined long timeout in step 220.
  • the microcontroller 174 programs the stop clock counter to the longest countdown in step 221. Preferably, the longest countdown period is 15 machine cycles.
  • the microcontroller 174 clears the system reset bit and starts the stop clock countdown in step 222.
  • step 223 the microcontroller 174 enters the 8051 IDLE mode by setting a predetermined bit in step 223.
  • step 224 the stop clock counter reaches zero. This event stops the 8051 clock, and provides the flash ROM 122 back to the CPU 100. Further,this event releases the system reset line in step 224 to allow the CPU to boot. From step 224, the CPU 100 comes out of reset and the BIOS copies the flash contents to the shadow RAM in step 225. From step 225, the BIOS jumps into the shadow RAM and returns control of the flash to the microcontroller 174 by starting the microcontroller clock in step 226.
  • the BIOS writes a dummy command such as a FFh command to a mailbox register to get the microcontroller 174 out of the IDLE mode in step 227.
  • the microcontroller 174 checks its reset bit in step 228. If the reset bit indicates that the reset is active in step 229, the routine jumps to the reset vector at 00h in step 290. Alternatively, from step 229, if the reset is inactive, the microcontroller 174 switches to the 16 MHz clock in step 240 before it exits FIG. 4.
  • FIG. 5 describes in details the arbitration process performed by a software arbiter which grants access to the flash ROM 122 to the CPU 100 after the CPU 100 has released the flash ROM 122 in step 214 of FIG. 3.
  • the routine of FIG. 5 allows the CPU 100 to regain control over the flash ROM 122 when necessary to, for example, load foreign language options or record plug-and-play parameters into the flash ROM 122. Additionally, the CPU 100 can regain control over the flash ROM 122 if the BIOS routines in the flash ROM 122 need to be updated. For example, errors in the BIOS code requiring corrections and new versions or new releases of the boot code are common, so that the boot code stored in the flash ROM 122 is generally subject to modifications. The ability to upgrade the flash ROM 122 is thus a desirable feature as it positively affects the economics of operating and maintaining the computer system. In the instant case, a user may update the flash ROM 122 as specified in the copending case previously incorporated by reference.
  • the routine disables the keyboard and mouse in step 230.
  • the disabling of the keyboard and the mouse is not necessary after a hard reset because these devices are automatically disabled at power-on.
  • the keyboard and the mouse need to be disabled as the microcontroller 174 can no longer service the devices after clock input to the microcontroller 174 has been stopped.
  • the routine of FIG. 5 disables the interrupts to the CPU 100 in step 232 because the remaining section of FIG. 5 is a timing critical section.
  • the interrupts are preferably disabled using the 80 ⁇ 86 CLI instruction which stops the host CPU 100 from processing further interrupts.
  • the routine checks if the mailbox has been cleared by the microcontroller 174. If not, the routine simply waits for the clearing operation. Alternatively, once the microcontroller 174 clears the mailbox in step 233, the routine writes a specific command to the mailbox register MailBox -- 0 in step 234.
  • the routine writes to a specific index and then writes a specific data command.
  • the microcontroller 174 Upon receipt of the request from the CPU 100 to access the flash ROM 122, the microcontroller 174 clears the mailbox request in step 252 of FIG. 6 to acknowledge the flash ROM access request from the CPU. During this period, the routine waits for MailBox -- 0 register to clear to indicate that the microcontroller 174 has received the flash ROM 122 access request and that the microcontroller 174 is about to suspend its operation via the execution of the IDLE instruction of the 8051 microcontroller 174. The routine then delays for approximately 100 microseconds in step 236 to let the microcontroller 174 enter its idle mode before the routine stops the microcontroller 174 clock in step 238. At this point, the microcontroller 174 is suspended and the host CPU 100 has control of the flash ROM 122. Preferably, stopping the clock of the microcontroller 174 also causes the flash ROM 122 to be multiplexed and accessible to the CPU 100.
  • the routine stored in the flash ROM 122 and executed by the microcontroller 174 to relinquish control of the flash ROM 122 is disclosed.
  • the microcontroller 174 executable code is located in the bottom 32K of the flash ROM 122.
  • the code is located in the flash ROM 122, as opposed to the mask ROM 176 so that the code can be updated if necessary.
  • the CPU 100 sets a flash operation flag to indicate the appropriate operations to be performed.
  • the flash ROM 122 is only accessed and not altered.
  • the flash ROM 122 is actually modified by the CPU 100. In that case, the entire flash ROM 122 or portions of the flash ROM 122 may be overwritten.
  • the modification of the flash ROM 122 requires that the microcontroller 174 be restarted as the microcontroller 174 cannot simply return to its interruption point because that code may have been changed.
  • the microcontroller 174 jumps to reset address location 0.
  • step 250 the microcontroller 174 owns the flash ROM 122. After the CPU 100 has set the appropriate flag in step 250 by writing a specific value to a mailbox register, the microcontroller 174 clears the local flag indicating that a mailbox register request has occurred in step 252. Next, in step 254, the routine disables all interrupts except the interrupts for Timer -- 0 and MailBox -- 0. Timer -- 0, the output of the timer 177, is programmed to interrupt at some periodic level, typically one millisecond. Either one of these interrupts wakes up the controller 174 from the idle mode, if the microcontroller 174 was in idle mode, and allows the 8051 microcontroller 174 to operate.
  • Timer -- 0 is essentially used as a fail safe mechanism in the event that power is lost. Normally, the microcontroller 174 is woken from its idle mode when the CPU 100 writes to MailBox -- 0. In the event where primary power is lost such that a hard reset is generated, the CPU 100 releases control of the flash ROM 122 and microcontroller 174 starts running. In this case, Timer -- 0 simply runs out of time. When Timer -- 0 reaches 0, it generates an interrupt to reboot the microcontroller 174 and to reset the entire computer system. Thus, in step 256, the routine changes the setting of Timer -- 0 to the longest timeout, preventing an undesired deadman timeout. In the preferred embodiment which runs at 16 MHz, the longest delay period for Timer -- 0 is 48 milliseconds.
  • step 256 of FIG. 6 the microcontroller 174 detects the type of flash operation to be performed in step 258. From step 258, if the requested operation is not flash access, the routine proceeds to step 260 where it calls a ROM dispatcher routine with the flash modify parameters to indicate that the flash ROM is to be updated. Next, the routine of FIG. 6 causes a reset, or a jump to 0000h, in step 261.
  • step 258 if the flash operation flag indicates that the CPU 100 is requesting a flash access operation, the routine calls the ROM dispatcher routine with the parameters configured to perform a flash access operation in step 262. From step 262, the routine proceeds to step 264 where Timer -- 0 is restored to its proper timeout period, which is generally a one millisecond delay. Further, the interrupts are enabled in step 266 so that normal interrupt operations can occur before the routine of FIG. 6 exits.
  • FIG. 7 illustrates in more detail the routine stored in the ROM 176 and executed by the microcontroller 174 for processing a request from the CPU 100 to access the flash ROM 122.
  • the routine clears MailBox -- 0.
  • the CPU 100 should also disable its interrupts because, as soon as MailBox -- 0 has been cleared, the CPU 100 must delay for about 100 microseconds before writing to a register to stop the microcontroller 174 clock and take control of the flash ROM 122 (see step 260 in FIG. 6).
  • the CPU 100 When the CPU 100 detects that MailBox -- 0 has been cleared at step 280, the CPU 100 starts its 100 microsecond countdown.
  • the routine clears a sleep flag in the control register of the microcontroller 174.
  • the sleep flag is cleared to allow the microcontroller 174 to enter the idle mode via the IDLE instruction of the 8051 microcontroller 174.
  • the microcontroller 174 stops executing instructions until it receives an interrupt which may be either a timer interrupt or an external interrupt.
  • the idle mode is entered by executing the IDLE instruction of the 8051 microcontroller 174.
  • the microcontroller 174 releases, or tristates, the control, address and clock signals driving the flash ROM 122 inputs, allowing the CPU 100 to drive those lines instead.
  • the CPU 100 stops the microcontroller's 174 clock by writing to a control register.
  • the write operation stops the Timer -- 0.
  • the microcontroller 174 will remain in idle mode until its clock has been started and one or more interrupts occur.
  • the routine halts and waits for the BIOS to stop and restart the clock to the microcontroller 174.
  • the BIOS code writes a dummy instruction such as the FFh instruction to MailBox -- 0 to generate an interrupt to the microcontroller 174 to bring the microcontroller 174 out of the idle mode.
  • the microcontroller 174 Upon being woken, the microcontroller 174 examines MailBox -- 0. If cleared, the microcontroller 174 assumes that an error has occurred or something has failed since the BIOS code of the CPU 100 is expected to write a non-zero value to MailBox -- 0. As a fall safe mechanism, the microcontroller 174 reinitializes the entire system in step 290 by executing the routine of FIG. 3. As such, the microcontroller 174 performs a soft reset by jumping to address location zero to once more perform the checksum in the flash ROM 122 just as if it had started from a cold reset.
  • the microcontroller 174 assumes that the BIOS of the CPU 100 had requested the flash ROM 122 and had properly returned the flash ROM 122 to the microcontroller 174. At this point, if the flash ROM 122 ownership arbitration had been successfully completed, the microcontroller 174 continues to execute from the location just before it was interrupted by the CPU 100's request for access to the flash ROM 122. From step 288, if the requested flash ROM 122 operation does not modify the flash ROM 122, the routine clears the MailBox -- 0 before exiting the routine of FIG. 7. The process thus safely allows the microcontroller 174 to reenter the code if the component of flash ROM 122 containing the microcontroller 174 code has not changed or power has not been interrupted.
  • the flash ROM 122 is initially owned by the microcontroller 174. After checking the integrity of the flash ROM 122, the microcontroller 174 turns over the ownership of the flash ROM 122 to the CPU 100. This is achieved by placing the microcontroller 174 in an idle mode to tri-state the lines driving the flash ROM 122 via mailbox instructions and further by turning off the clock generator to the microcontroller 174 while releasing the system reset to start the CPU 100.
  • the microprocessor 100 shadows necessary portions of the flash ROM 122 BIOS into the main memory array. Once the necessary portion of the flash ROM 122 has been shadowed, the microprocessor 100 returns ownership of the flash ROM 122 to the microcontroller 174. This is accomplished by starting the microcontroller's 174 clock and writing a dummy instruction such as FFh to wake the microcontroller 174 from its idle mode.
  • the CPU 100 In the event that the CPU 100 needs to regain access to the flash ROM 122 contents, the CPU 100 writes a predetermined value to the mailbox register to cause the microcontroller 174 to execute the IDLE instruction. Further, the clock provided to the microcontroller 174 is halted. The execution of the IDLE instruction causes the microcontroller 174 to tristate the I/O lines driving the address, data, and control lines of the flash ROM 122 such that the CPU 100 can access the flash ROM 122. Upon completion of the access to the flash ROM 122, the CPU 100 starts the microcontroller's 174 clock and writes a non-zero value to MailBox -- 0 to generate an interrupt to the microcontroller 174 and to waking-up the microcontroller 174. Upon waking up, the microcontroller 174 owns the flash ROM 122 and can continue execution until the next request for access to the flash ROM 122 from the CPU 100.
  • the CPU 100 can still access the shared flash ROM 122 after it has booted-up.
  • the system cost is reduced, the system reliability is enhanced, while the system accessibility to the flash ROM after the boot-up period is still preserved.
  • the present invention discloses the use of a mailbox for interprocessor communication and/or coordination, one skilled in the art would realize that other methods of coordinating and scheduling accesses to a shared resource may be used. Specifically, the present invention contemplates that alternative methods of communication such as any IBM PC compatible I/O ports, including I/O ports located at 60h and 64h, can be used in place of mailbox registers. Further, although the preferred embodiment shows the sharing of the flash ROM between a microprocessor and a microcontroller, the present invention contemplates that other devices or resources can be shared as well, including RAM and peripherals, among others. Additionally, the present invention contemplates that other processing devices such as digital signal processors, coprocessors, and custom processors may be used in place of the microcontroller.

Abstract

In accordance with the invention, a computer system is provided with a processor, a flash ROM, a microcontroller and an arbiter for selectively assigning the ownership of the flash ROM to either the microprocessor or the microcontroller. The arbiter assigns the flash ROM initially to the microcontroller when it boots up. After checking the integrity of the flash ROM and updating the content of the flash ROM with valid software if necessary, the microcontroller releases the flash ROM to the microprocessor to enable the computer system to proceed with the normal boot-up process. In this process, various system self tests are performed. Next, the microprocessor shadows one or more portions of the flash ROM BIOS into a main memory array. After the processor successfully boots up, the processor releases the flash ROM back to the microcontroller by writing a command to a mailbox register in the arbiter which places the microcontroller in an idle mode and by restarting the clock generator of the microcontroller. The restarting of the clock signal to the microcontroller to switch the ownership of the flash ROM back to the microcontroller. In the event that the microprocessor needs to regain access to the flash ROM contents, the microprocessor writes to the mailbox register of the arbiter to request access to the flash ROM. The microprocessor waits for a confirmation from the arbiter that the microcontroller is entering an idled mode. Next, the microprocessor halts the clock of the microcontroller. These events cause the microcontroller to float or tristate the signal lines going from the microcontroller to the flash ROM such that the microprocessor can drive the signal lines without any conflict potentials. In this manner, the microprocessor can still access the shared flash ROM after it has booted up. Thus, the system cost is reduced, the system reliability is enhanced, while the system accessibility to the flash ROM after the boot-up period is still preserved.

Description

BACKGROUND OF THE INVENTION
1. Field of the Invention
The present invention relates to the sharing of a resource among consumers, and more specifically, to the sharing of a read-only-memory (ROM) device between processors in a computer system.
2. Description of the Related Art
Today's modem personal computer typically includes a microprocessor, a memory system, data storage devices, and input/output (I/O) devices such as a display, a keyboard, a mouse, and communication devices, among others. The computer system is typically initialized, or boot-strapped, during a power up sequence using system software and information representing a sequence of internal control variables stored within a system read-only-memory (ROM). Since the system ROM is non-volatile, the content of the ROM contains valid data or instructions so that the computer system can be reliably boot-strapped to a point where the disk operating system (DOS) can be loaded to complete the boot-up sequence.
One computer system utilizing the ROM-based boot code approach is the IBM personal computer (PC) developed by the IBM Corporation of Armonk, N.Y. In an IBM PC or an IBM compatible PC system, the system ROM stores the Basic Input/Output System (BIOS) which is executed upon power-up by the microprocessor to initialize the system, to perform a power-on self-test (POST) and to provide certain low level, hardware dependent support for the display, floppy/hard disk drives, and communication devices. More sophisticated routines and data may be included in the system ROM, depending upon the needs and complexity of a given computer system.
In the original PC architecture, the BIOS code was fairly straight forward and required little memory space (about 32KB total). BIOS code provides the lowest level of interface between the operating system and the hardware. It normally is located at the top of memory for the original 8088 system of the original PC. In the original IBM PC architecture, the BIOS code is stored beginning at F8000h. Following a system reset or power-on, the typical system first goes to the high memory area of the 1 megabyte memory map, where the boot code is stored. Further, a checksum routine is typically executed to verify the status of the BIOS currently available to the system. If the integrity of the BIOS is determined to be good, the boot code initializes the system and its peripherals and passes control to the operating system. This is done by jumping to the address pointed to by a jump vector. If the BIOS is found to be corrupted or unusable (i.e., the computed checksum value does not match the expected value), the computer system indicates a system failure. In such instances, the BIOS ROM needs to be replaced.
A large capacity, reprogrammable storage device called a flash ROM can be used to store the POST and BIOS routines required for the initialization and operation of the computer system. As the flash ROM can be reprogrammed without being removed from the system, the flash ROM provides a more expeditious and less costly solution over conventional ROMs when software updates are required.
In addition to the microprocessor, other processing devices are also present in a modern computer. These processing devices include a coprocessor for performing specialized processing, a digital signal processor for handling modem, video and signal processing requirements, and one or more microcontrollers which handle the peripheral devices and offload the processing from the microprocessor. For instance, a microcontroller such as an 8051-compatible microcontroller may be used to interface with the keyboard as well as other I/O devices of the computer system. These processing devices also require one or more ROMs to store their operating code.
Typically, the microcontroller has a small amount of on-chip ROM and RAM to enable the microcontroller to operate with a minimum part count. However, certain applications require more storage space than available with the built-in ROM on the microcontroller. In these instances, the microcontroller may require an external ROM device to handle more sophisticated application software. However, an additional ROM device undesirably adds cost to the system.
Further, the increase in the part count decreases the overall reliability of the computer, as these additional components increase the possibility of a failure. Thus, it is desirable to share a ROM between the microcontroller and the microprocessor.
Typically, a flash ROM storing the BIOS and POST codes is a high capacity device, which usually has spare storage capacity to accept codes intended for the microcontroller. In previous portable computers, the flash ROM is shared between the microprocessor and a keyboard controller such as an 8051 microcontroller. In such systems, the microprocessor initially owns the flash ROM during the power-on reset and boot-up. After the microprocessor has verified system functionality using the POST codes, the microprocessor copies the BIOS code stored in the flash ROM to its main memory array, in an operation called "shadowing", to enhance the performance of the computer system, as the access speed to the main memory array is much faster than the access speed to the flash ROM. After the microprocessor has copied the BIOS code of the flash ROM into the main memory array, the microprocessor only needs to occasionally access the flash ROM such as to reprogram the flash ROM. In the prior art, the microcontroller retains ownership of the flash ROM until the computer system is reset by the cycling of power to the computer system or until the computer system writes to a control register to regain control of the flash ROM. However, in the prior art, once control of the flash ROM is handed to the computer system, the microcontroller can no longer access the flash ROM until the system has been rebooted.
Although the sharing of the flash ROM between the processor and the microcontroller results in a system which is more efficient and economically desirable, the prior art sharing approach is undesirable in that, once the ownership of the flash ROM has been surrendered to the microcontroller, the microprocessor can access the flash ROM for purposes such as reprogramming the flash ROM, but it cannot return control to the microcontroller. Thus, the prior art solution requires that the entire content of the shared flash ROM be shadowed in the RAM such that all data stored in the flash ROM are accessible. However, as the flash ROM may store a number of optional data which may never be used such as language options and plug-and-play peripheral parameters, it is not desirable to copy fully the contents of the flash ROM into the main memory, as a full "shadow" backup in the main memory array unnecessarily consumes valuable main memory storage space.
Alternatively, key code segments of the flash ROM can be shadowed to economize on main memory consumption. However, on certain occasions, the computer system may need to access optional data stored on the flash ROM but not shadowed in the main memory array. Thus, the computer system may need to access the flash ROM after it has released the ownership of the flash ROM to the microcontroller. Further, the "shadowed" version may occasionally be corrupted, necessitating a reload of the code and data images stored in the shared flash ROM. In such events, it is desirable to access the code and data images without requiring the system to be rebooted.
SUMMARY OF THE INVENTION
In accordance with the invention, a computer system is provided with a processor, a flash ROM, a microcontroller and an arbiter for selectively assigning the ownership of the flash ROM to either the microprocessor or the microcontroller. The arbiter assigns the flash ROM initially to the microcontroller when a power source is attached to the system. When a power switch is activated, and after checking the integrity of the flash ROM and updating the content of the flash ROM with valid firmware if necessary, the microcontroller releases the flash ROM to the microprocessor to enable the computer system to proceed with the normal boot-up process. In this process, various system self tests are performed. Next, the microprocessor shadows one or more portions of the flash ROM BIOS into a main memory array. After the processor successfully boots up, the processor releases the flash ROM back to the microcontroller by restarting the clock of the microcontroller and writing a command to a mailbox register in the arbiter which takes the microcontroller out of idle mode.
In the event that the microprocessor needs to regain access to the flash ROM contents, the microprocessor writes to a register of the arbiter to request access to the flash ROM. The microprocessor waits for a confirmation from the arbiter that the microcontroller is entering an idle mode. Next, the microprocessor halts the clock of the microcontroller. These events cause the microcontroller to float, or tristate, the signal lines going from the microcontroller to the flash ROM such that the microprocessor can drive the signal lines without conflict. In this manner, the microprocessor can still access the shared flash ROM after the system has booted up. Thus, the system cost is reduced, the system reliability is enhanced, while the system accessibility to the flash ROM after the boot-up period is still preserved.
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 block diagram of a computer system having a flash ROM sharing device in accordance with the present invention;
FIG. 2 is a more detailed schematic block diagram of the flash ROM sharing device of the present invention;
FIG. 3 is a flow chart of the process for booting up the microcontroller and the microprocessor of FIG. 1;
FIG. 4 is a flow chart showing the process of booting up the microprocessor of FIG. 1 after the microcontroller has booted up;
FIG. 5 is a flow chart showing the process of requesting ownership to the flash ROM of FIG. 1;
FIG. 6 is a flow chart showing the process using codes stored in the flash ROM of FIG. 2 for processing a flash ROM access request from the microprocessor; and
FIG. 7 is a flow chart showing the process using codes stored in the built-in ROM of the microcontroller of FIG. 2 for processing a flash ROM access request from the microprocessor.
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT
The following disclosures are hereby incorporated by reference:
U.S. application Ser. No. 08/684686, entitled "IMPROVED CONTROL OF COMPUTER AC ADAPTER OUTPUT VOLTAGE VIA BATTERY PACK FEEDBACK," by Brian C. Fritz, William C. Hallowell, Thomas P. Sawyers, Norman D. Stobert, Robert F. Watts and Michael E. Schneider, filed concurrently herewith;
U.S. application Ser. No. 08/684420, entitled "MULTIFUNCTION POWER AND KEYBOARD CONTROLLER," by David J. Delisle, William C. Hallowell and Patrick R. Cooper, filed concurrently herewith;
U.S. application Ser. No. 08/684413, entitled "FLASH ROM PROGRAMMING," by Patrick R. Cooper, David J. Delisle and Hung Q. Le, filed concurrently herewith;
U.S. application Ser. No. 08/684486, entitled "BUS SYSTEM FOR SHADOWING REGISTERS," by Dwight D. Riley and David J. Maguire, filed concurrently herewith;
U.S. application Ser. No. 08/684412, entitled "CIRCUIT FOR HANDLING DISTRIBUTED ARBITRATION IN A COMPUTER SYSTEM HAVING MULTIPLE ARBITERS," by David J. Maguire, Dwight D. Riley and James R. Edwards, filed concurrently herewith;
U.S. application Ser. No. 08/684485, entitled "LONG LATENCY INTERRUPT HANDLING AND INPUT/OUTPUT WHILE POSTING," by David J. Maguire and James R. Edwards, filed concurrently herewith;
U.S. application Ser. No. 08/684710, entitled "SERIAL BUS SYSTEM FOR SHADOWING REGISTERS," by David J. Maguire and Hung Q. Le, filed concurrently herewith;
U.S. application Ser. No. 08/684584, entitled "APPARATUS AND METHOD FOR POSITIVELY AND SUBTRACTIVELY DECODING ADDRESSES ON A BUS," by Gregory N. Santos, James R. Edwards, Dwight D. Riley and David J. Maguire, filed concurrently herewith;
U.S. application Ser. No. 08/671316, entitled "TWO ISA BUS CONCEPT," by Gregory N. Santos, James R. Edwards, Dwight D. Riley and David J. Maguire, filed concurrently herewith;
U.S. application Ser. No. 08/684490, entitled "RECONFIGURABLE DUAL MASTER IDE INTERFACE," by Gregory N. Santos, David J. Maguire, William C. Hallowell and James R. Edwards, filed concurrently herewith; and
U.S. application Ser. No. 08/684225, entitled "COMPUTER SYSTEM INCORPORATING HOT DOCKING AND UNDOCKING CAPABILITIES WITHOUT REQUIRING A STANDBY OR SUSPEND MODE," by Richard S. Lin, David J. Maguire, James R. Edwards and David J. Delisle, filed concurrently herewith; all of which are assigned to the assignee of this invention.
Turning now to the drawings, FIG. 1 is a computer system S according to the present invention. In FIG. 1, the system S comprises a portable computer 80 and an expansion base unit 90. Within the portable computer 80, a CPU 100 and a level two (L2) cache 104 are connected to a high speed local bus 105. The processor 100 of the preferred embodiment is one of the 80×86 microprocessor family manufactured by Intel Corporation of Santa Clara, Calif. In the preferred embodiment, the processor operates with a standard IBM-PC compatible operating system, such as MS-DOS or Windows, available from Microsoft Corporation of Redmond, Washington. The L2 cache 104 provides additional caching capabilities to the processor's on-chip cache to improve performance.
In addition to the CPU 100 and cache 104, a number of memory interface and memory devices are connected between the local bus 105 and a PCI bus 106. These devices include a memory to PCI cache controller (MPC) 101, a dynamic random access memory (DRAM) array 102, and a memory data buffer (MDB) 103. The MPC 101 is connected to the DRAM array 102, which is further connected to the MDB 103. The MPC 101, DRAM array 102, and MDB 103 collectively form a high performance memory system for the computer system S. A video controller 108 is also connected to a PCI bus 106.
The PCI bus 106 is also connected to a system controller 112. The system controller 112 is a PCI to ISA bus bridge which also provides various support functions for the portable computer 80 and the expansion base unit 90 of the system S. Preferably the system controller 112 is a single integrated circuit that acts as a PCI bus master and slave, an ISA bus controller, an ISA write posting buffer, an ISA bus arbiter, DMA devices, and an IDE disk interface. The system controller 112 is connected to an audio controller 116 and a modem 118 as conventionally present in PC systems to provide sound and data communication capabilities for the system S via a first ISA interface 121. The system controller 112 is also connected to an IDE interface port 114 for driving one or more peripheral devices such as hard disk drives, preferably a CD-ROM player 117 and a disk drive 119. The peripheral devices such as the disk drives typically store boot data used during the initial power-up of the computer system. Further, the system controller 112 provides a single pin output to support an interrupt serial bus (IRQSER) 144.
The system controller 112 is connected to an MSIO (mobile super I/O) chip 120. The MSIO 120 is connected to a flash ROM 122. The flash ROM 122 receives its control, address and data signals from the MSIO 120. Preferably, the flash ROM 122 contains the BIOS information for the computer system S and can be reprogrammed to allow for revisions of the BIOS. Additionally, the MSIO 120 provides a parallel port 180, a serial port, a floppy interface, a keyboard interface and a mouse interface, among others, for the computer system S.
A plurality of Quick Connect switches 109 are also connected to the PCI bus 106. Upon detecting a docking sequence between the portable computer 80 and the base unit 90, the Quick Connect switches 109 couple the PCI bus 106 and the IRQSER bus 144 to an expansion PCI bus 107 and an expansion IRQSER bus 145 on the base unit 90. The Quick Connect switches 109 are series in-line FET transistors having low rds, or turn-on resistance, values to minimize the loading on the PCI buses 106 and 107 and the IRQSER buses 144 and 145.
Turning now to the expansion base unit 90, one or more PCI masters 132 are connected on the expansion PCI bus 107, which is adapted to be connected to the PCI bus 106 over the Quick Switches 109 when the portable computer 80 is docked to the expansion base unit 90. The PCI bus 107 is also connected to PCI slots 142 and 144 and also to a card-bus interface 146 for accepting expansion cards. Also connected to the expansion PCI bus 107 is a second system controller 130, which is preferably a second integrated circuit of the same type as the system controller 112. The system controller 130 is configured to be the slave upon power-up. As a slave, the write posting buffer is not available in the system controller 130. The system controller 130 is connected to the expansion PCI bus 107 and the expansion interrupt serial bus 145. The system controller 130 supports additional drives 137 and 139 through an the IDE interface 134. The system controller 130 also supports an ISA bus 135 which is connected to one or more ISA slots 136-138. The system controller 130 is further connected to a second MSIO device 140, which provides a secondary parallel port, serial port, and floppy interface.
Thus, the system S, upon docking, may have multiple parallel ports, serial ports, keyboards, mice, and disk drives via the system controllers 112 and 130. Additionally, the system S may have a plurality of PCI and ISA type peripherals on their respective buses. The availability of a plurality of slots allows more peripherals to be connected to the system S and contributes to the useability and flexibility of the portable computer 80 when it is docked to the expansion base unit 90.
Turning to FIG. 2, the circuitry for sharing the flash ROM 122 between a microcontroller and a microprocessor is disclosed. In FIG. 2, operations directed at the ISA expansion bus are communicated over the PCI bus 106 and directed at the system controller 112. The system controller 112 communicates with the super I/O device 120 over the ISA bus. In the super I/O device 120, an interface unit 170 is connected to the ISA bus for receiving instructions from the CPU 100. The interface 170 provides a number of "mailbox" registers mapped into the I/O memory space to facilitate the interprocessor communication and coordination between the CPU 100 and a microcontroller 174. The interface 170 is connected to the enable input of an oscillator gating circuit 172 to allow the CPU 100 to control the generation of the clock to the microcontroller 174. The oscillator gating circuit, or the variable clock generator 172, receives a clock signal which is externally generated by an oscillator 185. The oscillator gating circuit or variable clock generator 172 preferably receives a 14 MHz clock signal from the oscillator 185 and generates a programmable clock output that can be selected from 0 MHz, 12 MHz, 14 MHz, or 16 MHz. The oscillator 185 is active when the computer system 80 is in the ON state.
Further, a 32 Khz crystal 161 is connected to the MSIO 120 to clock the real time clock (RTC) circuit (not shown), to clock the 8051 microcontroller 174 when it is in a deep sleep mode, and to clock other portions of the MSIO 120. The deep sleep mode is an ultra low power mode where most sections of the microcontroller 174 are shut down to conserve power. This mode is a special mode that is provided as an enhancement to a standard 8051-compatible microcontroller cell. The deep sleep mode is entered when the standard 8051 IDLE instruction is executed with a particular register bit set. In this mode, the microcontroller 174 assumes that it will operate off a ring oscillator 187 and thus arms the ring oscillator 187 such that the ring oscillator 187 will wake up when certain events such as interrupts are presented to the microcontroller 174.
As discussed above, the internal ring oscillator 187 is connected to the oscillator gating circuit 172 to provide clock signals to the microcontroller 174 when the computer system 80 is in the STANDBY mode or when the microcontroller comes out of its deep sleep. The ring oscillator 187 consists essentially of a number of inverters connected together in a looped series arrangement, with a pass transistor connected between the output of one inverter and the input of another inverter such that, upon turning off the pass transistor, the feedback is broken and the oscillation stops. The control gate of the pass transistor is connected to the microcontroller 174 such that the microcontroller 174 can wake up the ring oscillator 187 when certain internal and external events are encountered. The external events that wake up the microcontroller 174 include the actuation of the ring indicator from the modem, the standby button, the hibernation button, PCMCIA card detect, and the PCMCIA ring indicator. The internal events which wake up the microcontroller 174 include events relating to the real time clock alarm, the hibernation time, the keyboard, and the mouse, among others. The ring oscillator is available as a standard ASIC module from SMC Corporation of Hauppauge, N.Y. Finally, the output of the oscillator gating circuit 172 is provided to the clock input of the 8051 compatible microcontroller 174.
Other than the special clock circuits discussed above for the deep sleep feature, the 8051 compatible microcontroller 174 has a random access memory (RAM) 175 and a read only memory (ROM) 176 for storing boot-up instructions. The microcontroller 174 has a built-in timer 177 named Timer-- 0 which may be used to allow the microcontroller 174 to detect failures when the timer time-outs. The timer 177 is a count-up timer which interrupts at the rollover point. The timer 177's duration and count-up sequencing are controlled by the microcontroller 174. The timer 177 generates an interrupt to the microcontroller 174 upon the completion of its count sequence. The generation of the interrupt to the microcontroller 174 wakes the microcontroller 174 out of its idle mode so that the processing of the routines of the present invention can be performed. The timer 177 is used as a fail-safe mechanism to wake up the microcontroller in the event of power failures and other abnormal operating conditions.
Although a conventional timer can be used, the present invention also contemplates that a watchdog timer can be used in place of the timer 177. In the event that the watchdog timer is used, the software overhead on the microcontroller 174 is reduced, as the watchdog timer will reset the microcontroller 174 in event of an abnormal program execution. If the watchdog timer is not periodically reset by the microcontroller 174, the counter in the watchdog timer overflows, causing the microcontroller 174 to be reset. The watchdog timer thus restarts the microcontroller 174 in abnormal situations, providing for recovery from a hardware or software error.
The microcontroller 174 is also connected to the select input of a two-to-one multiplexer 178. The B input of the multiplexor 178 is connected the input/output lines of the microcontroller 174. The A input of the multiplexor 178 is connected to the interface 170 for transferring data from the parallel port directly to the processor 100 via the system controller 112. The microcontroller 174 has an output connected to the select input S of the multiplexor 178 to control the routing of data from the parallel port 180 to either the interface 170 or the microcontroller 174. The output of the multiplexor 178 is connected to the parallel port 180. The interface 170 and the microcontroller core 174 are connected to the flash ROM 122. Finally, the parallel port 180 communicates with a parallel port 190 (FIG. 2) which is driven by a second computer system 192. The second computer system 192 contains uncorrupted data such as a new valid BIOS to be loaded to the flash ROM 122.
Additionally, the microcontroller 174 of FIG. 2 receives battery statistics from one or more battery packs 191 and 193, which are connected in parallel to provide portable power V to the portable computer 80. Further, the battery packs 191 and 193 communicate over an interintegrated circuit (I2 C) bus, a simple bi-directional two wire bus for efficiently controlling multiple integrated chips. Details of the I2 C bus can be found in the "The I2 C-Bus and How to Use It (Including Specification)," published by Phillips Semiconductors, January 1992. Briefly, the I2 C bus consists of two lines: a serial clock (SCL) and a serial data line (SDA). Each of these lines is bidirectional. The SCL line provides the clock signal for data transfers which occur over the I2 C bus. Logic levels for this signal are referenced to VBATT-, which is common to all installed battery packs B. The SDA line is the data line for data transfers which occur over the I2 C bus. Again, logic levels for this signal are referenced to VBATT-. As illustrated by a second installed battery pack 193, the battery microcontroller of any additional battery pack is also coupled to the MSIO 120 via the I2 C bus. Low value series resistors (not shown) are typically provided at each device connection for protection against high-voltage spikes.
Each device connected to the I2 C bus is recognized by a unique address--whether it is the MSIO 120 or the battery microcontroller of any installed battery packs 191 and 193. Both the MSIO 120 and battery microcontroller incorporate an on-chip interface which allows them to communicate directly with each other via the I2 C bus. Using the I2 C bus in cooperation with the master battery signal MSTR-- BAT reduces the number of interface signals necessary for efficient battery management. Co-pending U. S. patent application Ser. No. 08/573,296, entitled "BATTERY PACK WAKEUP" and filed on Dec. 15, 1995, illustrates various aspects of nickel-based and lithium ion battery packs and communications over a serial bus. This application is hereby incorporated by reference.
Further, the microcontroller 174 also receives inputs from a plurality of switches, including a computer lid opening switch 194, a power-on switch 195, and a standby switch 196. The lid opening switch 194 senses when the lid of the computer system 80 is opened, indicating that the user is about to activate the computer system 80. The power-on switch 195 allows the user to turn on the portable computer 80, while the standby switch 196 allows the user to put the portable computer system 80 to an idle mode or a sleep mode to conserve power. Preferably, the actuation of the switches 194, 195 and 196 generates an interrupt to the microcontroller 174 and causes the microcontroller 174 to exit its deep sleep mode, if the microcontroller 174 is in such a mode, and further causes the microcontroller 174 to branch to an appropriate interrupt handler to respond to the actuation of the switches or the insertion/removal of the battery packs 191 and 193.
Finally, the microcontroller 174 is connected to a keyboard 197 for receiving data entries from the user. The microcontroller 174 is further connected to a DC/DC converter 198 which provides regulated +5VDC and +12VDC to the VCC2 plane to power the portable computer 80. The DC/DC converter receives a DC voltage supplied by an AC/DC converter (not shown) which is connected to the AC power at a docking station (not shown). When the portable computer unit 80 is docked with its docking station, it communicates with peripheral devices, receives DC currents for charging batteries plugged into the portable computer 80 and for operating the portable computer unit 80. The DC/DC converter 198 has an enable input driven by the microcontroller 174 such that the microcontroller 174 can turn on or off the DC/DC converter 198.
FIG. 3 describes the basic power-up sequence in the computer of FIG. 1. In FIG. 3, the routine checks to see if a system reset has occurred in step 202. If not, the routine exits in step 218. Alternatively, the routine transfers to step 203 where the microprocessor or CPU 100 reset input remains asserted. In step 204, the microcontroller 174 boots-up using codes stored in the ROM 176. The microcontroller 174 boots-up by executing the instructions located at address 0000h in the 8051 address space. The microcontroller 174 then jumps to another memory location to initialize the RAM 175 by clearing it.
Proceeding to step 206, the microcontroller 174 checks the integrity of the flash ROM 122 using an integrity checker. The integrity checker of step 206 performs a checksum computation on the bottommost 16 KB segment of the flash ROM 122 content. The checksum is computed at step 206 by adding, without carry, the lowest 8,192 16-bit words of the flash ROM. While the addition is being performed, the routine also verifies that the 16 KB are not all zero. If the flash ROM segment passes the checksum test, the routine proceeds to step 209. Alternatively, if the flash ROM 122 check-sum indicates a failure in step 206, the flash ROM 122 has been corrupted and needs to be reprogrammed in step 208. The apparatus and process for performing the flash recovery step 208 are disclosed in the previously incorporated co-pending patent application entitled "FLASH ROM PROGRAMMING."
Alternatively from step 206, if the flash ROM 122 memory passes the checksum process, the routine waits until the user presses the power button in step 209. Once the power button has been actuated, the microcontroller 174 releases its ownership of the flash ROM 122 in step 210 by tristating its signal lines coupled to the flash ROM 122. Further, the microcontroller 174 preferably controls the reset input of the CPU 100 through circuitry not shown, and the microcontroller 174 releases that reset input of the CPU 100 to allow the CPU 100 to boot-up with ownership of the flash ROM 122. When the Intel 80×86 CPU 100 of the preferred embodiment first powers-up, the CPU 100 executes the instruction located 16 bytes from the highest memory address. For the 8086-8088 CPU, this address is FFFF0h. For the 80286 CPU, it is FFFFF0h, for the 80386 CPU, it is FFFFFFF0h, and for the 80486 CPU, it is FFFFFFF0h. Typical IBM PC/AT compatible systems have a jump instruction at this address, to the beginning of the power-on-self-test (POST) routine of the system ROM BIOS. The POST tests the microprocessor 100, memory 102, and other hardware components for their presence and integrity, and also initializes various interrupt vector table entries with default values pointing to handler routines within the system BIOS.
Next, in step 212, the CPU 100 performs a shadow operation to enhance the access speed to the routines stored in the BIOS. Conventionally, shadowing is performed by copying the contents of selected portions of the original reserved memory to be shadowed to predetermined temporary memory locations. Once the selected portions are transferred into these temporary memory locations, the selected portions of the original reserved memory are disabled, and the corresponding portions of shadowed memory are enabled. Then, in a second step, the contents of these temporary locations are copied into the shadow memory at the same memory address locations from which they originate. Thereafter, accesses to the selective portions of the original reserved memory result in the access of corresponding portions of a shadowed memory, now RAM.
The portion of the DRAM main memory 102 which receives such a portion of the BIOS is sometimes referred to as "shadow RAM." More specifically, in the standard system architecture, the logical main memory address space is divided into a low memory range (0h-9FFFFh), a reserved memory range (A0000h-FFFFFh) and an extended memory range (100000h-FFFFFFh). In a typical system, the system ROM BIOS is located logically at addresses F0000h-FFFFFh, and is located physically on the ISA bus. Addresses C0000h-EFFFFh contain ROM BIOS portions of the specific add-on cards and are located physically on their respective cards on the ISA bus. Further, addresses A0000h-BFFFFh contain the video buffer, located physically on a video controller on the I/O bus. Duplicate memory space is typically provided in the dynamic RAM on the local bus for addresses C0000h-FFFFFh, and a user of the system can select during a setup procedure which portions of the ROM BIOS are to be shadowed by being copied into the duplicate DRAM space during boot up. The address of the shadow RAM area is then mapped into the address of the flash ROM 122 address space by the memory controller 101. Once shadowed, accesses to BIOS routines are accelerated because the RAM access time is much faster than the ROM access times.
In step 214, the CPU 100 returns ownership of the flash ROM 122 back to the microcontroller 174 before the microcontroller 174 is restarted. Once the microcontroller 174 has been restarted, the CPU 100 writes to a mailbox register which in turn generates an interrupt signal to the microcontroller 174. Upon receipt of the interrupt signal, the microcontroller 174 wakes up and assumes ownership of the flash ROM 122. If the CPU 100 fails to write to the mailbox register, Timer-- 0 will overflow and generate a timeout. In the event of a timeout in step 215, the routine loops backs to step 203 where the microcontroller soft-resets, or executes at address 0000h. Alternatively, if the CPU 100 timely writes to the mailbox register, the routine exits in step 218.
FIG. 4 describes in more detail the process in which the microcontroller 174 releases the flash ROM 122 to allow the CPU 100 to boot up after a reset. In FIG. 4, from the start step 210, the microcontroller 174 switches to the ring oscillator 185 in step 219. From step 219, the microcontroller 174 sets the Timer-- 0 to a predetermined long timeout in step 220. Next, the microcontroller 174 programs the stop clock counter to the longest countdown in step 221. Preferably, the longest countdown period is 15 machine cycles. From step 221, the microcontroller 174 clears the system reset bit and starts the stop clock countdown in step 222. Next, in step 223, the microcontroller 174 enters the 8051 IDLE mode by setting a predetermined bit in step 223. Next, in step 224, the stop clock counter reaches zero. This event stops the 8051 clock, and provides the flash ROM 122 back to the CPU 100. Further,this event releases the system reset line in step 224 to allow the CPU to boot. From step 224, the CPU 100 comes out of reset and the BIOS copies the flash contents to the shadow RAM in step 225. From step 225, the BIOS jumps into the shadow RAM and returns control of the flash to the microcontroller 174 by starting the microcontroller clock in step 226. Next, the BIOS writes a dummy command such as a FFh command to a mailbox register to get the microcontroller 174 out of the IDLE mode in step 227. From step 227, the microcontroller 174 checks its reset bit in step 228. If the reset bit indicates that the reset is active in step 229, the routine jumps to the reset vector at 00h in step 290. Alternatively, from step 229, if the reset is inactive, the microcontroller 174 switches to the 16 MHz clock in step 240 before it exits FIG. 4.
FIG. 5 describes in details the arbitration process performed by a software arbiter which grants access to the flash ROM 122 to the CPU 100 after the CPU 100 has released the flash ROM 122 in step 214 of FIG. 3. The routine of FIG. 5 allows the CPU 100 to regain control over the flash ROM 122 when necessary to, for example, load foreign language options or record plug-and-play parameters into the flash ROM 122. Additionally, the CPU 100 can regain control over the flash ROM 122 if the BIOS routines in the flash ROM 122 need to be updated. For example, errors in the BIOS code requiring corrections and new versions or new releases of the boot code are common, so that the boot code stored in the flash ROM 122 is generally subject to modifications. The ability to upgrade the flash ROM 122 is thus a desirable feature as it positively affects the economics of operating and maintaining the computer system. In the instant case, a user may update the flash ROM 122 as specified in the copending case previously incorporated by reference.
At the beginning of FIG. 5, if necessary, the routine disables the keyboard and mouse in step 230. The disabling of the keyboard and the mouse is not necessary after a hard reset because these devices are automatically disabled at power-on. However, when the CPU needs to access the flash ROM 122 after the initial boot-up period, the keyboard and the mouse need to be disabled as the microcontroller 174 can no longer service the devices after clock input to the microcontroller 174 has been stopped.
After the system has disabled the keyboard and mouse devices, the routine of FIG. 5 disables the interrupts to the CPU 100 in step 232 because the remaining section of FIG. 5 is a timing critical section. The interrupts are preferably disabled using the 80×86 CLI instruction which stops the host CPU 100 from processing further interrupts. Next, in step 233, the routine checks if the mailbox has been cleared by the microcontroller 174. If not, the routine simply waits for the clearing operation. Alternatively, once the microcontroller 174 clears the mailbox in step 233, the routine writes a specific command to the mailbox register MailBox-- 0 in step 234.
Preferably, the routine writes to a specific index and then writes a specific data command.
Upon receipt of the request from the CPU 100 to access the flash ROM 122, the microcontroller 174 clears the mailbox request in step 252 of FIG. 6 to acknowledge the flash ROM access request from the CPU. During this period, the routine waits for MailBox-- 0 register to clear to indicate that the microcontroller 174 has received the flash ROM 122 access request and that the microcontroller 174 is about to suspend its operation via the execution of the IDLE instruction of the 8051 microcontroller 174. The routine then delays for approximately 100 microseconds in step 236 to let the microcontroller 174 enter its idle mode before the routine stops the microcontroller 174 clock in step 238. At this point, the microcontroller 174 is suspended and the host CPU 100 has control of the flash ROM 122. Preferably, stopping the clock of the microcontroller 174 also causes the flash ROM 122 to be multiplexed and accessible to the CPU 100.
Turning now to FIG. 6, the routine stored in the flash ROM 122 and executed by the microcontroller 174 to relinquish control of the flash ROM 122 is disclosed. Preferably, the microcontroller 174 executable code is located in the bottom 32K of the flash ROM 122. The code is located in the flash ROM 122, as opposed to the mask ROM 176 so that the code can be updated if necessary.
At the beginning of FIG. 6, the CPU 100 sets a flash operation flag to indicate the appropriate operations to be performed. In one type of operation, the flash ROM 122 is only accessed and not altered. In a second type of operation, the flash ROM 122 is actually modified by the CPU 100. In that case, the entire flash ROM 122 or portions of the flash ROM 122 may be overwritten. The modification of the flash ROM 122 requires that the microcontroller 174 be restarted as the microcontroller 174 cannot simply return to its interruption point because that code may have been changed. Thus, when the flash ROM 122 is modified or in the event of a soft reset, the microcontroller 174 jumps to reset address location 0. In the event where the flash ROM 122 is only read from, as at boot time, or if some portion of the flash ROM 122 will be written to but not the portion which contains the microcontroller 174 code currently being executed, then when the system returns control of the flash ROM 122 back to the microcontroller 174, which continues execution of codes where the last memory location left off.
During step 250, the microcontroller 174 owns the flash ROM 122. After the CPU 100 has set the appropriate flag in step 250 by writing a specific value to a mailbox register, the microcontroller 174 clears the local flag indicating that a mailbox register request has occurred in step 252. Next, in step 254, the routine disables all interrupts except the interrupts for Timer-- 0 and MailBox-- 0. Timer-- 0, the output of the timer 177, is programmed to interrupt at some periodic level, typically one millisecond. Either one of these interrupts wakes up the controller 174 from the idle mode, if the microcontroller 174 was in idle mode, and allows the 8051 microcontroller 174 to operate.
Timer-- 0 is essentially used as a fail safe mechanism in the event that power is lost. Normally, the microcontroller 174 is woken from its idle mode when the CPU 100 writes to MailBox-- 0. In the event where primary power is lost such that a hard reset is generated, the CPU 100 releases control of the flash ROM 122 and microcontroller 174 starts running. In this case, Timer-- 0 simply runs out of time. When Timer-- 0 reaches 0, it generates an interrupt to reboot the microcontroller 174 and to reset the entire computer system. Thus, in step 256, the routine changes the setting of Timer-- 0 to the longest timeout, preventing an undesired deadman timeout. In the preferred embodiment which runs at 16 MHz, the longest delay period for Timer-- 0 is 48 milliseconds.
From step 256 of FIG. 6, the microcontroller 174 detects the type of flash operation to be performed in step 258. From step 258, if the requested operation is not flash access, the routine proceeds to step 260 where it calls a ROM dispatcher routine with the flash modify parameters to indicate that the flash ROM is to be updated. Next, the routine of FIG. 6 causes a reset, or a jump to 0000h, in step 261.
Alternatively, in step 258, if the flash operation flag indicates that the CPU 100 is requesting a flash access operation, the routine calls the ROM dispatcher routine with the parameters configured to perform a flash access operation in step 262. From step 262, the routine proceeds to step 264 where Timer-- 0 is restored to its proper timeout period, which is generally a one millisecond delay. Further, the interrupts are enabled in step 266 so that normal interrupt operations can occur before the routine of FIG. 6 exits.
FIG. 7 illustrates in more detail the routine stored in the ROM 176 and executed by the microcontroller 174 for processing a request from the CPU 100 to access the flash ROM 122. In step 280, the routine clears MailBox-- 0. Concurrently with step 280, the CPU 100 should also disable its interrupts because, as soon as MailBox-- 0 has been cleared, the CPU 100 must delay for about 100 microseconds before writing to a register to stop the microcontroller 174 clock and take control of the flash ROM 122 (see step 260 in FIG. 6).
When the CPU 100 detects that MailBox-- 0 has been cleared at step 280, the CPU 100 starts its 100 microsecond countdown. Next, in step 282, the routine clears a sleep flag in the control register of the microcontroller 174. The sleep flag is cleared to allow the microcontroller 174 to enter the idle mode via the IDLE instruction of the 8051 microcontroller 174. The microcontroller 174 stops executing instructions until it receives an interrupt which may be either a timer interrupt or an external interrupt. In step 284, the idle mode is entered by executing the IDLE instruction of the 8051 microcontroller 174. Upon the execution of the IDLE instruction, the microcontroller 174 releases, or tristates, the control, address and clock signals driving the flash ROM 122 inputs, allowing the CPU 100 to drive those lines instead.
After the 100 microsecond delay period, the CPU 100 stops the microcontroller's 174 clock by writing to a control register. The write operation stops the Timer-- 0. The microcontroller 174 will remain in idle mode until its clock has been started and one or more interrupts occur. In step 285, the routine halts and waits for the BIOS to stop and restart the clock to the microcontroller 174. When the CPU 100 is ready to return the ownership of the flash ROM 122 back to the microcontroller 174, the CPU 100 starts the clock of the microcontroller 174 again by writing to a control register. Next, the BIOS code writes a dummy instruction such as the FFh instruction to MailBox-- 0 to generate an interrupt to the microcontroller 174 to bring the microcontroller 174 out of the idle mode.
Upon being woken, the microcontroller 174 examines MailBox-- 0. If cleared, the microcontroller 174 assumes that an error has occurred or something has failed since the BIOS code of the CPU 100 is expected to write a non-zero value to MailBox-- 0. As a fall safe mechanism, the microcontroller 174 reinitializes the entire system in step 290 by executing the routine of FIG. 3. As such, the microcontroller 174 performs a soft reset by jumping to address location zero to once more perform the checksum in the flash ROM 122 just as if it had started from a cold reset. Alternatively, if Maibox-- 0 contains a non-zero value, the microcontroller 174 assumes that the BIOS of the CPU 100 had requested the flash ROM 122 and had properly returned the flash ROM 122 to the microcontroller 174. At this point, if the flash ROM 122 ownership arbitration had been successfully completed, the microcontroller 174 continues to execute from the location just before it was interrupted by the CPU 100's request for access to the flash ROM 122. From step 288, if the requested flash ROM 122 operation does not modify the flash ROM 122, the routine clears the MailBox-- 0 before exiting the routine of FIG. 7. The process thus safely allows the microcontroller 174 to reenter the code if the component of flash ROM 122 containing the microcontroller 174 code has not changed or power has not been interrupted.
Thus, according to the invention, the flash ROM 122 is initially owned by the microcontroller 174. After checking the integrity of the flash ROM 122, the microcontroller 174 turns over the ownership of the flash ROM 122 to the CPU 100. This is achieved by placing the microcontroller 174 in an idle mode to tri-state the lines driving the flash ROM 122 via mailbox instructions and further by turning off the clock generator to the microcontroller 174 while releasing the system reset to start the CPU 100.
Once the CPU 100 owns the flash ROM 122, the microprocessor 100 shadows necessary portions of the flash ROM 122 BIOS into the main memory array. Once the necessary portion of the flash ROM 122 has been shadowed, the microprocessor 100 returns ownership of the flash ROM 122 to the microcontroller 174. This is accomplished by starting the microcontroller's 174 clock and writing a dummy instruction such as FFh to wake the microcontroller 174 from its idle mode.
In the event that the CPU 100 needs to regain access to the flash ROM 122 contents, the CPU 100 writes a predetermined value to the mailbox register to cause the microcontroller 174 to execute the IDLE instruction. Further, the clock provided to the microcontroller 174 is halted. The execution of the IDLE instruction causes the microcontroller 174 to tristate the I/O lines driving the address, data, and control lines of the flash ROM 122 such that the CPU 100 can access the flash ROM 122. Upon completion of the access to the flash ROM 122, the CPU 100 starts the microcontroller's 174 clock and writes a non-zero value to MailBox-- 0 to generate an interrupt to the microcontroller 174 and to waking-up the microcontroller 174. Upon waking up, the microcontroller 174 owns the flash ROM 122 and can continue execution until the next request for access to the flash ROM 122 from the CPU 100.
In this manner, the CPU 100 can still access the shared flash ROM 122 after it has booted-up. Thus, the system cost is reduced, the system reliability is enhanced, while the system accessibility to the flash ROM after the boot-up period is still preserved.
Although the present invention discloses the use of a mailbox for interprocessor communication and/or coordination, one skilled in the art would realize that other methods of coordinating and scheduling accesses to a shared resource may be used. Specifically, the present invention contemplates that alternative methods of communication such as any IBM PC compatible I/O ports, including I/O ports located at 60h and 64h, can be used in place of mailbox registers. Further, although the preferred embodiment shows the sharing of the flash ROM between a microprocessor and a microcontroller, the present invention contemplates that other devices or resources can be shared as well, including RAM and peripherals, among others. Additionally, the present invention contemplates that other processing devices such as digital signal processors, coprocessors, and custom processors may be used in place of the microcontroller.
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.

Claims (34)

We claim:
1. A computer system, comprising:
a processor;
a system memory coupled to said processor;
a peripheral device coupled to said processor for storing boot data;
a resource coupled to said processor;
a microcontroller coupled to said resource and said processor, said microcontroller allowing said processor to boot from said stored boot data after said microcontroller boots, said microcontroller having an active mode for engaging said resource and an idle mode for disengaging said resource;
an arbiter coupled to said processor, said microcontroller and said resource, said arbiter adapted to receive a request from said processor to access said resource, said arbiter placing said microcontroller in the idle mode before granting said processor access to said resource, said arbiter further placing said microcontroller into the active mode to engage said resource after said processor releases said resource.
2. The computer system of claim 1, wherein said microcontroller is clocked by a clock input and wherein said arbiter further comprises:
a mailbox register adapted to receive said access request from said processor;
a variable clock generator coupled to said microcontroller clock input, said variable clock generator deasserting said clock input upon the expiration of a predetermined period.
3. The computer system of claim 2, wherein said variable clock generator modulates said clock input to place said microcontroller into the active mode after said processor releases said resource.
4. The computer system of claim 1, wherein said resource is a non-volatile memory.
5. The computer system of claim 4, wherein said non-volatile memory is a flash read-only-memory (ROM).
6. The computer system of claim 4, wherein said non-volatile memory is a non-volatile random-access-memory (NV-RAM).
7. The computer system of claim 4, wherein said non-volatile memory stores a primary code for execution by said processor.
8. The computer system of claim 7, wherein said primary code is a code for booting said processor such that it can further boot from said stored boot data.
9. The computer system of claim 7, wherein said primary code comprises a power on self test code and a basic input output system code.
10. The computer system of claim 7, wherein said system memory has a shadow region and wherein said processor copies a portion of said primary code into said shadow region after said processor boots up.
11. The computer system of claim 10, wherein said processor releases said non-volatile memory to said microcontroller after shadowing said primary code.
12. The computer system of claim 4, wherein said non-volatile memory stores a secondary code for execution by said microcontroller.
13. The computer system of claim 1, further comprising a code update system having updated data and a code update data port, said computer system comprising:
a data port coupled to said microcontroller and said code update data port, said data port receiving said updated data; and
an integrity checker coupled to said microcontroller for checking the integrity of said code in said resource; and
a programmer coupled to said microcontroller for receiving said updated data from said data port and updating said resource if the integrity of said resource has been compromised.
14. A method for sharing a non-volatile memory in a computer system, said computer system having a processor, a system memory coupled to said processor, a display coupled to said processor for communicating with the user, a disk drive coupled to said processor for storing data, a resource coupled to said processor, and a microcontroller coupled to said resource and said processor, said method comprising the steps of
detecting a resource access request from said processor;
idling said microcontroller in response to said resource access request;
granting said processor access to said resource after said microcontroller has been idled;
releasing said resource from said processor; and
activating said microcontroller to engage said resource after said processor releases said resource.
15. The method of claim 14, wherein said microcontroller is clocked by a clock input and wherein said idling step further comprises the steps of:
writing to a mailbox register to request said resource;
delaying a predetermined period from said writing step; and
deasserting said clock input upon the expiration of said predetermined period.
16. The method of claim 15, further comprising the step of releasing said resource to said microcontroller after completing access to said resource.
17. The method of claim 16, further comprising the step of modulating said clock input to restart said microcontroller after said releasing step.
18. The method of claim 14, wherein said system memory has a shadow region and wherein said resource has a code, further comprising the step of shadowing a portion of said code into said shadow region after booting up said processor.
19. The method of claim 18, further comprising the step of releasing said resource to said microcontroller after said shadowing step.
20. The method of claim 14, further comprising the step of updating said resource with a new code.
21. The method of claim 20, wherein said updated data is an updated microcontroller code, further comprising the step of rebooting said microcontroller after said microcontroller code updating step.
22. An apparatus for arbitrating accesses in a computer, said computer having a processor and a system memory coupled to said processor, said apparatus comprising:
a resource coupled to said processor;
a microcontroller coupled to said resource and said processor, said microcontroller allowing said processor to boot from said stored boot data after said microcontroller boots, said microcontroller having an active mode for engaging said resource and an idle mode for disengaging said resource;
an arbiter coupled to said processor, said microcontroller and said resource, said arbiter adapted to receive a request from said processor to access said resource, said arbiter placing said microcontroller in the idle mode before granting said processor access to said resource, said arbiter further placing said microcontroller into the active mode to engage said resource after said processor releases said resource.
23. The apparatus of claim 22, wherein said microcontroller is clocked by a clock input, said apparatus further comprises:
a mailbox register adapted to receive said access request from said processor;
a variable clock generator coupled to said microcontroller clock input, said variable clock generator deasserting said clock input upon the expiration of a predetermined period.
24. The apparatus of claim 23, wherein said variable clock generator modulates said clock input to place said microcontroller into the active mode after said processor releases said resource.
25. The apparatus of claim 22, wherein said resource is a non-volatile memory.
26. The apparatus of claim 25, wherein said non-volatile memory is a flash read-only-memory (ROM).
27. The apparatus of claim 25, wherein said non-volatile memory is a non-volatile random-access-memory (NV-RAM).
28. The apparatus of claim 25, wherein said non-volatile memory stores a primary code for execution by said processor.
29. The apparatus of claim 28, wherein said primary code is a code for booting said processor such that it can further boot from said stored boot data.
30. The apparatus of claim 28, wherein said primary code comprises a power on self test code and a basic input output system code.
31. The apparatus of claim 28, wherein said system memory has a shadow region and wherein said processor copies a portion of said primary code into said shadow region after said processor boots up.
32. The apparatus of claim 31, wherein said processor releases said non-volatile memory to said microcontroller after shadowing said primary code.
33. The apparatus of claim 26, wherein said non-volatile memory stores a secondary code for execution by said microcontroller.
34. The apparatus of claim 22, further comprising a code update system having updated data and a code update data port, said apparatus further comprising:
a data port coupled to said microcontroller and said code update data port, said data port receiving said updated data; and
an integrity checker coupled to said microcontroller for checking the integrity of said code in said resource; and
a programmer coupled to said microcontroller for receiving said updated data from said data port and updating said resource if the integrity of said resource has been compromised.
US08/684,414 1996-07-19 1996-07-19 Flash ROM sharing between a processor and a controller Expired - Lifetime US5794054A (en)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US08/684,414 US5794054A (en) 1996-07-19 1996-07-19 Flash ROM sharing between a processor and a controller
US08/775,281 US5819087A (en) 1996-07-19 1996-12-31 Flash ROM sharing between processor and microcontroller during booting and handling warm-booting events
US09/166,616 US6154838A (en) 1996-07-19 1998-10-05 Flash ROM sharing between processor and microcontroller during booting and handling warm-booting events

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US08/684,414 US5794054A (en) 1996-07-19 1996-07-19 Flash ROM sharing between a processor and a controller

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US08/775,281 Continuation-In-Part US5819087A (en) 1996-07-19 1996-12-31 Flash ROM sharing between processor and microcontroller during booting and handling warm-booting events

Publications (1)

Publication Number Publication Date
US5794054A true US5794054A (en) 1998-08-11

Family

ID=24747954

Family Applications (1)

Application Number Title Priority Date Filing Date
US08/684,414 Expired - Lifetime US5794054A (en) 1996-07-19 1996-07-19 Flash ROM sharing between a processor and a controller

Country Status (1)

Country Link
US (1) US5794054A (en)

Cited By (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5923838A (en) * 1996-12-17 1999-07-13 Mitsubishi Denki Kabushiki Kaisha Microcomputer with built-in flash memory
US5938774A (en) * 1997-07-08 1999-08-17 Winbond Electronics Corp. Apparatus for repairing faulty program segments in embedded microprocessor systems
US5960445A (en) * 1996-04-24 1999-09-28 Sony Corporation Information processor, method of updating a program and information processing system
US5961643A (en) * 1997-09-30 1999-10-05 Micron Electronics, Inc. Method for attachment or integration of a BIOS device into a computer system using the system memory address and data bus
US5987551A (en) * 1997-09-30 1999-11-16 Micron Electronics, Inc. Attachment or integration of a BIOS device into a computer system using local bus
US6003103A (en) * 1997-09-30 1999-12-14 Micron Electronics, Inc. Method for attachment or integration of a bios device into a computer system using a local bus
US6009522A (en) * 1997-09-30 1999-12-28 Micron Electronics, Inc. Attachment or integration of a BIOS device into a computer system using the system memory data bus
US6076118A (en) * 1997-09-30 2000-06-13 Micron Electronics, Inc. Attachment or integration of a BIOS device into a computer system using the system memory address and data bus
US6154838A (en) * 1996-07-19 2000-11-28 Le; Hung Q. Flash ROM sharing between processor and microcontroller during booting and handling warm-booting events
US6182213B1 (en) 1997-09-30 2001-01-30 Micron Electronics, Inc. Method for attachment of a bios device into a computer system using the system memory data bus
US6205513B1 (en) * 1996-08-22 2001-03-20 Schneider Automation System and process for load an operating system of an information processing device
US20020023032A1 (en) * 2000-08-18 2002-02-21 Hewlett-Packard Company Trusted system
US6393586B1 (en) * 1999-02-04 2002-05-21 Dell Usa, L.P. Method and apparatus for diagnosing and conveying an identification code in post on a non-booting personal computer
US20020133655A1 (en) * 2001-03-16 2002-09-19 Ohad Falik Sharing of functions between an embedded controller and a host processor
US20020138156A1 (en) * 2001-01-25 2002-09-26 Wong Isaac H. System of connecting multiple processors in cascade
US6532587B1 (en) * 1998-02-27 2003-03-11 Matsushita Electric Industrial Co., Ltd. Electronic equipment
GB2385167A (en) * 2001-09-28 2003-08-13 Lexar Media Inc Non-volatile memory initialisation by a controller loading firmware from the non-volatile memory to volatile memory attached to a processor.
US20030172261A1 (en) * 2002-03-08 2003-09-11 Seok-Heon Lee System boot using NAND flash memory and method thereof
US20030225963A1 (en) * 2002-06-04 2003-12-04 Nec Electronics Corporation Data processing apparatus and data processing method
KR100421953B1 (en) * 2001-07-25 2004-03-12 엘지전자 주식회사 Apparatus and method for sharing bootup program among control units in distributed transmission system
US6728812B1 (en) * 1997-06-16 2004-04-27 Citizen Watch Co., Ltd. Portable information terminal
US6763437B1 (en) 2000-09-07 2004-07-13 Maxtor Corporation Control system, storage device and method for controlling access to a shared memory using a bus control or handshaking protocol
US20050108500A1 (en) * 2003-11-18 2005-05-19 Junichi Kishida Bootable NAND flash memory architecture
US6948099B1 (en) 1999-07-30 2005-09-20 Intel Corporation Re-loading operating systems
US6987961B1 (en) 2004-06-28 2006-01-17 Neomagic Corp. Ethernet emulation using a shared mailbox between two processors in a feature phone
CN1293460C (en) * 2003-06-26 2007-01-03 三洋电机株式会社 Controller and method for writing data
US7213152B1 (en) * 2000-02-14 2007-05-01 Intel Corporation Modular bios update mechanism
US20090043916A1 (en) * 2007-08-06 2009-02-12 Winbond Electronics Corporation Handshake Free Sharing in a Computer Architecture
US20090089545A1 (en) * 2007-09-28 2009-04-02 Samsung Electronics Co., Ltd. Multi processor system having multiport semiconductor memory with processor wake-up function
US20100011130A1 (en) * 2008-07-08 2010-01-14 Nuvoton Technology Corporation Non-intrusive debug port interface
US20120047358A1 (en) * 2010-08-17 2012-02-23 Wistron Corporation Method and system for accelerating booting process
CN102375747A (en) * 2010-08-23 2012-03-14 纬创资通股份有限公司 Start-up accelerating method and system
US8214821B1 (en) * 2001-04-26 2012-07-03 Access Co., Ltd. Method and system for automatic firmware updates in a portable hand-held device
TWI397009B (en) * 2009-04-30 2013-05-21 Inventec Corp Data processing apparatus of basic input/output system
US20170154186A1 (en) * 2014-05-16 2017-06-01 Sony Corporation Information processing device, information processing method, and electronic apparatus
US10331586B2 (en) 2015-10-30 2019-06-25 Samsung Electronics Co., Ltd. Nonvolatile memory device for providing fast booting and system including the same
CN110209608A (en) * 2018-02-28 2019-09-06 爱思开海力士有限公司 Storage system and data processing system including storage system
US11016755B2 (en) * 2019-07-31 2021-05-25 Dell Products L.P. System and method to secure embedded controller flashing process

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5327531A (en) * 1992-09-21 1994-07-05 International Business Machines Corp. Data processing system including corrupt flash ROM recovery
US5603055A (en) * 1994-01-27 1997-02-11 Vlsi Technology, Inc. Single shared ROM for storing keyboard microcontroller code portion and CPU code portion and disabling access to a portion while accessing to the other
US5619726A (en) * 1994-10-11 1997-04-08 Intel Corporation Apparatus and method for performing arbitration and data transfer over multiple buses

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5327531A (en) * 1992-09-21 1994-07-05 International Business Machines Corp. Data processing system including corrupt flash ROM recovery
US5603055A (en) * 1994-01-27 1997-02-11 Vlsi Technology, Inc. Single shared ROM for storing keyboard microcontroller code portion and CPU code portion and disabling access to a portion while accessing to the other
US5619726A (en) * 1994-10-11 1997-04-08 Intel Corporation Apparatus and method for performing arbitration and data transfer over multiple buses

Non-Patent Citations (13)

* Cited by examiner, † Cited by third party
Title
Cates, Ron, et al., "Charge NiCd and NiMH Batteries Properly," Electronic Design, Jun. 10, 1996, pp. 118, 120, 122.
Cates, Ron, et al., Charge NiCd and NiMH Batteries Properly, Electronic Design, Jun. 10, 1996, pp. 118, 120, 122. *
EET Special Edition, Part 2: Batteries Power Technologies, Elec. Eng. Times, Apr. 8, 1996, pp. 39 82. *
EET Special Edition, Part 2: Batteries--Power Technologies, Elec. Eng. Times, Apr. 8, 1996, pp. 39-82.
Intel Corp., Intel 486 SL Microprocessor SuperSet Programmer s Reference Manual, Nov., 1992, pp. 6 28 6 53. *
Intel Corp., Intel 486 SL Microprocessor SuperSet Programmer's Reference Manual, Nov., 1992, pp. 6-28-6-53.
Intel Corp., System Management Bus Specification, Apr. 21, 1994 (Rev. 0.95). *
Microchip Data Sheet Manual, PIC16C5X EPROM/ROM Based 8 Bit CMOS Microcontroller Series (1995 1996). *
Microchip Data Sheet Manual, PIC16C5X EPROM/ROM-Based 8-Bit CMOS Microcontroller Series (1995-1996).
Philips Semiconductors, I 2 C Spec. information The I 2 C Bus and how to use it (including specifications), 1993. *
Philips Semiconductors, I2 C Spec. information--The I2 C Bus and how to use it (including specifications), 1993.
Siemens Components, Inc., Advertisement for a SAB88C166 with on board flash EPROM (Sep. 1996). *
Siemens Components, Inc., Advertisement for a SAB88C166 with on-board flash EPROM (Sep. 1996).

Cited By (53)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5960445A (en) * 1996-04-24 1999-09-28 Sony Corporation Information processor, method of updating a program and information processing system
US6154838A (en) * 1996-07-19 2000-11-28 Le; Hung Q. Flash ROM sharing between processor and microcontroller during booting and handling warm-booting events
US6205513B1 (en) * 1996-08-22 2001-03-20 Schneider Automation System and process for load an operating system of an information processing device
US5923838A (en) * 1996-12-17 1999-07-13 Mitsubishi Denki Kabushiki Kaisha Microcomputer with built-in flash memory
US6728812B1 (en) * 1997-06-16 2004-04-27 Citizen Watch Co., Ltd. Portable information terminal
US5938774A (en) * 1997-07-08 1999-08-17 Winbond Electronics Corp. Apparatus for repairing faulty program segments in embedded microprocessor systems
US6003103A (en) * 1997-09-30 1999-12-14 Micron Electronics, Inc. Method for attachment or integration of a bios device into a computer system using a local bus
US6009522A (en) * 1997-09-30 1999-12-28 Micron Electronics, Inc. Attachment or integration of a BIOS device into a computer system using the system memory data bus
US6182213B1 (en) 1997-09-30 2001-01-30 Micron Electronics, Inc. Method for attachment of a bios device into a computer system using the system memory data bus
US6076118A (en) * 1997-09-30 2000-06-13 Micron Electronics, Inc. Attachment or integration of a BIOS device into a computer system using the system memory address and data bus
US5961643A (en) * 1997-09-30 1999-10-05 Micron Electronics, Inc. Method for attachment or integration of a BIOS device into a computer system using the system memory address and data bus
US5987551A (en) * 1997-09-30 1999-11-16 Micron Electronics, Inc. Attachment or integration of a BIOS device into a computer system using local bus
US6532587B1 (en) * 1998-02-27 2003-03-11 Matsushita Electric Industrial Co., Ltd. Electronic equipment
US6393586B1 (en) * 1999-02-04 2002-05-21 Dell Usa, L.P. Method and apparatus for diagnosing and conveying an identification code in post on a non-booting personal computer
US6948099B1 (en) 1999-07-30 2005-09-20 Intel Corporation Re-loading operating systems
US7765409B2 (en) 2000-02-14 2010-07-27 Intel Corporation Modular BIOS update mechanism
US20070204144A1 (en) * 2000-02-14 2007-08-30 Gafken Andrew H Modular BIOS update mechanism
US7213152B1 (en) * 2000-02-14 2007-05-01 Intel Corporation Modular bios update mechanism
US7275160B2 (en) * 2000-08-18 2007-09-25 Hewlett-Packard Development Company, L.P. Trusted system
US20020023032A1 (en) * 2000-08-18 2002-02-21 Hewlett-Packard Company Trusted system
US6763437B1 (en) 2000-09-07 2004-07-13 Maxtor Corporation Control system, storage device and method for controlling access to a shared memory using a bus control or handshaking protocol
US20020138156A1 (en) * 2001-01-25 2002-09-26 Wong Isaac H. System of connecting multiple processors in cascade
US7865646B1 (en) 2001-03-16 2011-01-04 National Semiconductor Corporation Sharing of functions between an embedded controller and a host processor
US20020133655A1 (en) * 2001-03-16 2002-09-19 Ohad Falik Sharing of functions between an embedded controller and a host processor
US7089339B2 (en) * 2001-03-16 2006-08-08 National Semiconductor Corporation Sharing of functions between an embedded controller and a host processor
US8214821B1 (en) * 2001-04-26 2012-07-03 Access Co., Ltd. Method and system for automatic firmware updates in a portable hand-held device
KR100421953B1 (en) * 2001-07-25 2004-03-12 엘지전자 주식회사 Apparatus and method for sharing bootup program among control units in distributed transmission system
GB2385167B (en) * 2001-09-28 2006-05-10 Lexar Media Inc Improved memory controller
GB2385167A (en) * 2001-09-28 2003-08-13 Lexar Media Inc Non-volatile memory initialisation by a controller loading firmware from the non-volatile memory to volatile memory attached to a processor.
US7234052B2 (en) 2002-03-08 2007-06-19 Samsung Electronics Co., Ltd System boot using NAND flash memory and method thereof
US20030172261A1 (en) * 2002-03-08 2003-09-11 Seok-Heon Lee System boot using NAND flash memory and method thereof
US7181564B2 (en) * 2002-06-04 2007-02-20 Nec Electronics Corporation Data processing apparatus and data processing method
US20030225963A1 (en) * 2002-06-04 2003-12-04 Nec Electronics Corporation Data processing apparatus and data processing method
CN1293460C (en) * 2003-06-26 2007-01-03 三洋电机株式会社 Controller and method for writing data
US7257703B2 (en) * 2003-11-18 2007-08-14 Toshiba America Electronic Components, Inc. Bootable NAND flash memory architecture
US20050108500A1 (en) * 2003-11-18 2005-05-19 Junichi Kishida Bootable NAND flash memory architecture
US7107044B1 (en) 2004-06-28 2006-09-12 Neomagic Corp. Virtualization of hardware user-interface using a shared mailbox between two processors in a feature phone
US7289823B1 (en) 2004-06-28 2007-10-30 Neomagic Corp. Video overlay buffer mirrored through a shared mailbox between two processors in a feature phone
US6987961B1 (en) 2004-06-28 2006-01-17 Neomagic Corp. Ethernet emulation using a shared mailbox between two processors in a feature phone
US20090043916A1 (en) * 2007-08-06 2009-02-12 Winbond Electronics Corporation Handshake Free Sharing in a Computer Architecture
US8285895B2 (en) 2007-08-06 2012-10-09 Winbond Electronics Corporation Handshake free sharing in a computer architecture
US20090089545A1 (en) * 2007-09-28 2009-04-02 Samsung Electronics Co., Ltd. Multi processor system having multiport semiconductor memory with processor wake-up function
US8078838B2 (en) * 2007-09-28 2011-12-13 Samsung Electronics Co., Ltd. Multiprocessor system having multiport semiconductor memory with processor wake-up function responsive to stored messages in an internal register
US8006004B2 (en) 2008-07-08 2011-08-23 Nuvoton Technology Corp. Non-intrusive debug port interface
US20100011130A1 (en) * 2008-07-08 2010-01-14 Nuvoton Technology Corporation Non-intrusive debug port interface
TWI397009B (en) * 2009-04-30 2013-05-21 Inventec Corp Data processing apparatus of basic input/output system
US20120047358A1 (en) * 2010-08-17 2012-02-23 Wistron Corporation Method and system for accelerating booting process
CN102375747A (en) * 2010-08-23 2012-03-14 纬创资通股份有限公司 Start-up accelerating method and system
US20170154186A1 (en) * 2014-05-16 2017-06-01 Sony Corporation Information processing device, information processing method, and electronic apparatus
US10817612B2 (en) * 2014-05-16 2020-10-27 Sony Semiconductor Solutions Corporation Information processing device, information processing method, and electronic apparatus
US10331586B2 (en) 2015-10-30 2019-06-25 Samsung Electronics Co., Ltd. Nonvolatile memory device for providing fast booting and system including the same
CN110209608A (en) * 2018-02-28 2019-09-06 爱思开海力士有限公司 Storage system and data processing system including storage system
US11016755B2 (en) * 2019-07-31 2021-05-25 Dell Products L.P. System and method to secure embedded controller flashing process

Similar Documents

Publication Publication Date Title
US5794054A (en) Flash ROM sharing between a processor and a controller
US5819087A (en) Flash ROM sharing between processor and microcontroller during booting and handling warm-booting events
US5805882A (en) Computer system and method for replacing obsolete or corrupt boot code contained within reprogrammable memory with new boot code supplied from an external source through a data port
US6158000A (en) Shared memory initialization method for system having multiple processor capability
US10108431B2 (en) Method and apparatus for waking a single core of a multi-core microprocessor, while maintaining most cores in a sleep state
US9952654B2 (en) Centralized synchronization mechanism for a multi-core processor
US5339437A (en) Method and apparatus for saving a system image onto permanent storage that is operating system independently
TWI390410B (en) Operating system transfer and launch without performing post
US5724527A (en) Fault-tolerant boot strap mechanism for a multiprocessor system
US5317752A (en) Fault-tolerant computer system with auto-restart after power-fall
US6732280B1 (en) Computer system performing machine specific tasks before going to a low power state
US5497497A (en) Method and apparatus for resetting multiple processors using a common ROM
US9792112B2 (en) Propagation of microcode patches to multiple cores in multicore microprocessor
TW445416B (en) Upgrade card for a computer system and method of operating the same
WO2018022268A1 (en) Optimized uefi reboot process
US6405320B1 (en) Computer system performing machine specific tasks before going to a low power state
CN113672250A (en) Interface and warm reset path for memory device firmware upgrade
CN107729055B (en) Microprocessor and execution method thereof
CN108984464B (en) Microprocessor and method for synchronizing processing cores of microprocessor
JP2000010666A (en) Computer system and flash rom rewriting method
CN110046126B (en) Multi-core microprocessor, reconfiguration method thereof, and computer-readable storage medium
CN109240481B (en) Multi-core microprocessor and power saving method using same
CN109165189B (en) Microprocessor, method of configuring the same, and computer-readable storage medium
EP3324288B1 (en) Multi-core microprocessor that dynamically designates one of its processing cores as the bootstrap processor
Zlatanov Booting an Intel System Architecture

Legal Events

Date Code Title Description
AS Assignment

Owner name: COMPAQ COMPUTER CORPORATION, TEXAS

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:LE, HUNG Q.;DELISLE, DAVID J.;REEL/FRAME:008125/0325

Effective date: 19960717

FEPP Fee payment procedure

Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

STCF Information on status: patent grant

Free format text: PATENTED CASE

AS Assignment

Owner name: COMPAQ INFORMATION TECHNOLOGIES GROUP, L.P., TEXAS

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:COMPAQ COMPUTER CORPORATION;REEL/FRAME:012418/0222

Effective date: 20010620

FPAY Fee payment

Year of fee payment: 4

AS Assignment

Owner name: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P., TEXAS

Free format text: CHANGE OF NAME;ASSIGNOR:COMPAQ INFORMATION TECHNOLOGIES GROUP, LP;REEL/FRAME:015000/0305

Effective date: 20021001

FPAY Fee payment

Year of fee payment: 8

FPAY Fee payment

Year of fee payment: 12