This invention relates generally to flash memory.
Flash memory may be used for a variety of applications. Depending on the application, it may be desirable to use memory specifically configured for a particular application. Then, different memories may be used for different applications.
Generally, flash memories are arranged in sectors of given sizes. Certain sectors may be provided in particular sizes for storing particular code, such as a kernel, an operating system, or a boot loader, as examples.
One example is a flash memory that is adapted for a RedBoot (Red Hat's Embedded Debug and Bootstrap Program) boot loader. Such a boot loader has a number of components which must be fit within sectors arranged to match the sizes needed for those components. For example, there may be three eight-kilobyte regions reserved for the RedBoot boot loader and another three eight-kilobyte region for a copy of the RedBoot boot loader. Then, space is needed for a kernel, other operating system components, and a directory.
A standard flash memory may not be organized in the fashion used for a RedBoot loader. Thus, a dedicated flash memory is used that has a memory space organized appropriately for the RedBoot boot loader.
Certainly, there are other examples in which flash memory, as conventionally obtained, may not have the ideal memory space organization, resulting in specially adapted flash memories for particular applications.
Referring to
The controller 12 receives inputs and outputs as indicated by the label “I/O” in
The controller 12 may also have its own separate storage 14. The storage 14 may be implemented as a part of the flash array 16 in one embodiment. In other embodiments, the storage 14 may be separate from the flash array 16 and, in still other embodiments, the storage 14 may be incorporated within the controller 12. In some cases, the memory used for the storage 14 may not be a flash memory, but, instead, may be another type of memory such as a dynamic random access memory, a static random access memory, or other randomly accessible memory.
To implement a write to the flash array 16, conventionally, the controller 12 receives a command or a comment which places the controller 12 in a write mode. Once the controller 12 has received that command, which may be defined by a unique code, and the controller 12 has transitioned to the write mode, ensuing received data may be written by the controller 12 to the flash array 16. Thereafter, a command or comment may terminate the write mode.
Similarly, in order to read, in some embodiments, the controller 12 may receive an appropriate command or comment to transition the controller 12 to a read mode. Thereafter, read commands can be forwarded by the controller 12 to the flash array 16 to read the requested data.
Other commands or comments may also be received by the controller 12 in the form of input/output signals. For example, a comment may be used to lock certain sectors of the flash array 16.
Conventionally, many flash memories follow a so-called common flash memory interface (CFI) specification which is published by various flash memory manufacturers. Pursuant to this specification, any given flash memory is addressable by certain pre-defined comments. These comments may be provided as commands to a controller 12 which may be placed into an appropriate mode in response to receipt comments that correspond to a certain format.
Then, the controller 12 may implement the comment by locking a memory array, reading from the flash array, or writing to the flash array. For example, “A Common Flash interface (CFI) and Command Sets” is available from Intel corporation, application note 646, dated April 2000.
Referring to
However, some flash memories may not be configured in a fashion suitable for RedBoot boot loaders. Conventionally, special memories must be obtained which are reconfigured for RedBoot boot loaders.
In some embodiments of the present invention, it is desirable to provide a flash memory which may be reconfigured for various applications such as storing a RedBoot loader, as indicated in
In some embodiments of the present invention, the configuration or reconfiguration may be implemented through comments according to the common flash interface. The common flash interface specifies comments or commands used in all flash memories to appropriately operate those flash memories. For example, comments or commands may implement a write or read sequence or a locking of sectors in any commercially distributed flash memory that complies with the common flash interface.
In accordance with some embodiments of the present invention, an additional comment or command may be provided which enables the controller 12 to reconfigure the flash array sector arrangement or memory space arrangement in accordance with some specification provided by the command. In other embodiments, a command may select one of at least two prerecorded configurations.
Referring to
In such case, the memory space may be configured in accordance with that command, as indicated in block 26. For example, the command may specify the arrangement of sectors set forth in
The configuration data may accompany the command in one embodiment. The configuration data may be stored in a configuration register for either immediate or subsequent execution.
Referring to
A write command of an appropriate format may be received as indicated in block 32. In some embodiments, the write command may be a command or comment compliant with the common flash interface specification. Once the command is recognized as a write to a memory array, as determined in diamond 34, a memory space configuration register, set by the process 20, may be read as indicated in block 36. The memory space may then be configured, as indicated in block 38, and a write may occur to the memory array 40 in one embodiment.
In another embodiment, the configuration of the memory space may occur before the write command 30 is received. Thus, the configuration of the memory space, only after receiving a write command and in accordance with a previously received command to store a memory space configuration, is merely one embodiment of the present invention.
Referring to
A memory organizer 42 receives information from the flash interface 40. The memory organizer 42 may then appropriately store a configuration setting or immediately configure the flash array 16 in accordance with a command or a comment that has been received. Then, the memory array 44 may be configured by that memory organizer 42, either logically or physically.
Turning to
System 500 may include a controller 510, an input/output (I/O) device 520 (e.g. a keypad, display), static random access memory (SRAM) 560, a memory 10, and a wireless interface 540 coupled to each other via a bus 550. A battery 580 may be used in some embodiments. It should be noted that the scope of the present invention is not limited to embodiments having any or all of these components.
Controller 510 may comprise, for example, one or more microprocessors, digital signal processors, microcontrollers, or the like. Memory 530 may be used to store messages transmitted to or by system 500. Memory 530 may also optionally be used to store instructions that are executed by controller 510 during the operation of system 500, and may be used to store user data. Memory 530 may be provided by one or more different types of memory. For example, memory 530 may comprise any type of random access memory, a volatile memory, a non-volatile memory such as a flash memory and/or a configurable memory such as a memory 10 discussed herein.
I/O device 520 may be used by a user to generate a message. System 500 may use wireless interface 540 to transmit and receive messages to and from a wireless communication network with a radio frequency (RF) signal. Examples of wireless interface 540 may include an antenna or a wireless transceiver, although the scope of the present invention is not limited in this respect.
References throughout this specification to “one embodiment” or “an embodiment” mean that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one implementation encompassed within the present invention. Thus, appearances of the phrase “one embodiment” or “in an embodiment” are not necessarily referring to the same embodiment. Furthermore, the particular features, structures, or characteristics may be instituted in other suitable forms other than the particular embodiment illustrated and all such forms may be encompassed within the claims of the present application.
References throughout this specification to “one embodiment” or “an embodiment” mean that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one implementation encompassed within the present invention. Thus, appearances of the phrase “one embodiment” or “in an embodiment” are not necessarily referring to the same embodiment. Furthermore, the particular features, structures, or characteristics may be instituted in other suitable forms other than the particular embodiment illustrated and all such forms may be encompassed within the claims of the present application.
While the present invention has been described with respect to a limited number of embodiments, those skilled in the art will appreciate numerous modifications and variations therefrom. It is intended that the appended claims cover all such modifications and variations as fall within the true spirit and scope of this present invention.