Flash micro-controller with shadow boot-loader SRAM for dual-device booting of micro-controller and host
First Claim
1. A dual-booting flash microcontroller comprising:
- a flash bus for connecting to a flash-memory chip, the flash bus carrying address, data, and commands to the flash-memory chip;
microcontroller boot code stored in the flash-memory chip in a first block;
host boot code stored in the flash-memory chip in a host-boot block;
a static random-access memory (SRAM) buffer;
a central processing unit (CPU) for executing instructions read from the SRAM buffer;
a host interface for connecting to an external host over a host bus;
a flash-memory interface for generating flash-control signals and for buffering commands, addresses, and data to the flash bus, and for reading and writing the SRAM buffer;
a boot-loader state machine, activated by a reset signal, for activating the flash-memory interface to read the microcontroller boot code from the flash-memory chip, the boot-loader state machine writing the microcontroller boot code to the first block in the SRAM buffer;
a mapping table storing mapping entries each having a logical address from the external host and a physical address of corresponding data stored in the flash-memory chip; and
an initial mapping entry storing a first-reset-read address generated by the external host while the microcontroller boot code is being executed by the CPU;
wherein the microcontroller boot code executed by the CPU activates the host interface to send the host boot code to the external host,whereby the initial mapping entry is generated from the first-reset-read address during booting of the dual-booting flash microcontroller.
1 Assignment
0 Petitions
Accused Products
Abstract
A flash microcontroller has a Static Random-Access-Memory (SRAM) buffer that stores several blocks of boot code read from a flash memory. The boot code includes an initial boot loader, boot code and a control program that are executed by the flash microcontroller, and an operating system OS image and an external-host control program that are executed by an external host. Both the external host and the microcontroller are booted from boot code buffered in the SRAM buffer. A first-reset-read address from the external host is captured by the microcontroller during its boot sequence and stored in a mapping table along with a physical address of the block in the SRAM buffer with the operating system OS image and the external-host control program. A boot-loader state machine reads the flash ID and programs flash parameter registers with timing parameters for the flash memory.
8 Citations
20 Claims
-
1. A dual-booting flash microcontroller comprising:
-
a flash bus for connecting to a flash-memory chip, the flash bus carrying address, data, and commands to the flash-memory chip; microcontroller boot code stored in the flash-memory chip in a first block; host boot code stored in the flash-memory chip in a host-boot block; a static random-access memory (SRAM) buffer; a central processing unit (CPU) for executing instructions read from the SRAM buffer; a host interface for connecting to an external host over a host bus; a flash-memory interface for generating flash-control signals and for buffering commands, addresses, and data to the flash bus, and for reading and writing the SRAM buffer; a boot-loader state machine, activated by a reset signal, for activating the flash-memory interface to read the microcontroller boot code from the flash-memory chip, the boot-loader state machine writing the microcontroller boot code to the first block in the SRAM buffer; a mapping table storing mapping entries each having a logical address from the external host and a physical address of corresponding data stored in the flash-memory chip; and an initial mapping entry storing a first-reset-read address generated by the external host while the microcontroller boot code is being executed by the CPU; wherein the microcontroller boot code executed by the CPU activates the host interface to send the host boot code to the external host, whereby the initial mapping entry is generated from the first-reset-read address during booting of the dual-booting flash microcontroller. - View Dependent Claims (2, 3, 4, 5, 6)
-
-
7. A method for dual-booting a flash microcontroller and an external host comprising:
-
applying power to the flash microcontroller that has a static random-access memory (SRAM) buffer and a central processing unit (CPU); activating a state machine on the flash microcontroller to read an initial boot loader from a first page in a first block of a flash memory coupled to the flash microcontroller by a flash bus; using the state machine to write the initial boot loader to the SRAM buffer in the flash microcontroller; resetting the CPU, causing the CPU to fetch instructions of the initial boot loader stored in the SRAM buffer; executing on the CPU the initial boot loader by fetching instructions in the initial boot loader from the SRAM buffer; reading a next page from the flash memory after the first page and writing the next page to a buffer area of the SRAM buffer as the initial boot loader is executed; continuing to read next pages from the flash memory and copy the next pages to the SRAM buffer as the initial boot loader is executed until all pages of an extended boot code have been copied to the SRAM; transferring execution from the initial boot loader to the extended boot code in the SRAM buffer; executing on the CPU the extended boot code and a control program in the extended boot code by fetching instructions in the extended boot code from the SRAM buffer; reading a host-boot block from the flash memory after the extended boot code and writing the host-boot block to the SRAM buffer as the extended boot code is executed until an external-host control program has been copied to the host-boot block in the SRAM buffer; transferring execution from the control program in the extended boot code to the external-host control program by executing a last instruction in the extended boot code that causes the flash microcontroller to send a ready signal to the external host; and sending the external-host control program read from the host-boot block in the SRAM buffer to the external host and executing the external-host control program on the external host to reboot the external host, whereby the flash microcontroller is booted by fetching and executing instructions from the SRAM buffer and the external host is booted by fetching and executing instructions from host-boot block in the SRAM buffer. - View Dependent Claims (8, 9, 10, 11, 12, 13)
-
-
14. A dual-device booting flash microcontroller comprising:
-
external host interface means for connecting to an external host; flash bus means for connecting to a flash memory, the flash bus means carrying address, data, and commands to the flash memory; flash-memory controller means for generating flash-control signals and for buffering commands, addresses, and data to the flash bus means; volatile buffer means for storing instructions in a volatile memory; external-host boot sequence means, stored in the flash memory, for transfer to the external host over the external host interface means, wherein the external-host boot sequence means contains instructions for execution by the external host after the external host is re-booted; processor means for fetching and executing instructions from the volatile buffer means; extended-local boot sequence means, stored in the flash memory, for instructing the processor means to read the external-host boot sequence means from the flash memory and to write the external-host boot sequence means into the volatile buffer means; initial boot loader means, stored in the flash memory, for instructing the processor means to read the extended-local boot sequence means from the flash memory and to write the extended-local boot sequence means into the volatile buffer means; and hardwired initializer means, activated by a reset signal, for activating the flash-memory controller means to read the initial boot loader means from the flash memory, and for writing the initial boot loader means as first instructions to the volatile buffer means. - View Dependent Claims (15, 16, 17, 18, 19, 20)
-
Specification