Copying of power-on reset sequencer descriptor from nonvolatile memory to random access memory

Information

  • Patent Grant
  • 9858084
  • Patent Number
    9,858,084
  • Date Filed
    Monday, March 17, 2014
    10 years ago
  • Date Issued
    Tuesday, January 2, 2018
    7 years ago
Abstract
A mechanism of booting up a system directly from a storage device and a means of initializing an embedded system prior to activating a CPU is presented. The said system is comprised of one or more CPUs, a reset controller, a storage device controller, one or more direct memory access controllers, a RAM and its controller, a ROM and its controller, a debug interface and a power-on reset (POR) sequencer. The POR sequencer controls the overall boot process of the embedded system. Said sequencer uses descriptors (POR Sequencer descriptors) which are used to update the configuration registers of the system and to enable CPU-independent data transfers with the use of DMA controllers.
Description
BACKGROUND

Field


The present invention relates generally to computers having a single or multiple Central Processing Units (CPU), and more particularly, to a method and device for booting such a system directly from a storage device.


Description of Related Art


An embedded system refers to an apparatus that is made up of a single or multiple controller chips interconnected to each other on a printed circuit board. A controller chip can have one or more central processing unit (CPU) that enables it to interpret and execute code. When an embedded system has more than one processor it is already called a multiprocessor system. The term embedded system will be used to refer to a single CPU or a multiprocessor system in this paper.


A conventional embedded system contains a nonvolatile memory which is used to store firmware that is read and executed by a CPU to initialize the system. The nonvolatile memory can be a read-only memory (ROM), one-time programmable memory (OTP), programmable read only memory (PROM), electrically erasable PROM (EEPROM), or a flash PROM (FPROM). The nonvolatile memory can be internal (on-chip) or external (off-chip) to the controller chip. The firmware stored in the nonvolatile memory can be a boot code loader, a basic input/output system (BIOS), an operating system (OS), or an application firmware. The boot code loader is a small code executed by a CPU to do minimum initialization of the system. After initialization, the boot code loader copies the BIOS or OS or application firmware from a mass storage device external to the embedded system to the random access memory (RAM) of the system. When the BIOS or OS or application firmware is already loaded in the RAM, the CPU reads and executes it to do exhaustive initialization and diagnostics before proceeding to normal system operation. A mass storage device can be a rotating disk drive or a solid-state drive which is made up of FPROM devices. Though nonvolatile memory size can be reduced due to a small boot code loader, the boot code loader doesn't have the ability to self check its integrity.


In an invention described in US Patent Application Publication number US 2005/0120146 A1, Jun. 2 2005, an embedded system in FIG. 1 that does not have an on-chip nonvolatile memory such as a read only memory directly boots from flash block mass storage 106. The flash block mass storage 106 is a collection of flash chips interfaced to the flash memory controller 105. The apparatus makes use of a Flash Programming Engine, embedded within a Flash memory controller 105, the first device that is taken out of reset, to program a Direct Memory Access controller 104 to transfer a boot code loader from flash block mass storage 106 to an internal Random Access Memory (RAM) 103. When the transfer of the boot code loader to the RAM 103 is completed the internal Central Processing Unit 101 of the controller chip is taken out of reset to read and execute the boot code loader in the RAM 103. The boot code loader performs initialization of the system, power-on self tests, and copies a much larger control program or application firmware from flash block mass storage 106 to the RAM 103.


SUMMARY

The invention that is described in this document makes use of a minimum amount of non-volatile memory in order to boot an embedded system. Reduction in size of the nonvolatile memory brings about an advantage in terms of cost and complexity. The invention also allows the system to verify the integrity of data and code used in the boot process.


In some cases, the configuration registers of an embedded system may need to be initialized even before any of the CPU of the system is brought out of reset to begin execution of the system firmware. The invention presented in this paper will also address this issue of pre-initialization.


The present invention provides a mechanism for booting up a system using a minimum amount of nonvolatile memory. This method also enables the embedded system to initialize all configuration registers even before any of the CPUs of the system is brought out of reset. The embedded system consists of multiple controller chips or a single controller chip. The embedded system can have a single or multiple central processing units.


The present invention comprises of at least one Central Processing Unit (CPU) which reads and executes firmware; a random access memory (RAM) which is used to temporarily store firmware; a memory controller which provides interface to the RAM; a Reset Controller which maintains the reset states of all the devices of the embedded system; a Power-On Reset Sequencer which controls the overall boot process of the embedded system; nonvolatile memory and controller used to store data used by the Power-On Reset Sequencer in the boot process; at least one direct memory access (DMA) controller which initiates and tracks data transfers; a storage device controller which provides interface to the storage device; a CPU bus which interconnects the devices of the system; and a storage device which is used to store system firmware; a debug interface used to pre-program the nonvolatile memory and storage device with data and code.


The present invention describes the structure of the Power-On Reset (POR) Sequencer and its operation. The POR Sequencer makes use of a POR Sequencer Descriptor which is a preassembled descriptor that is stored in a nonvolatile memory of the system. The POR Sequencer descriptor contains register information and direct memory access (DMA) controller descriptors. The register information are read and used by the POR Sequencer to update the configuration registers of the system. The DMA descriptors are loaded by the POR Sequencer to the DMA controllers of the system. The POR Sequencer facilitates the boot process and takes care of verifying the integrity of loaded data and code in the RAM.


The POR Sequencer Descriptor of the current invention is not limited to a single data structure. A linked-list of data structures is presented to increase the amount of register information and DMA descriptors available for processing by the POR Sequencer.


The present invention also provides a method of copying POR Sequencer Descriptor from nonvolatile memory to the RAM and verifying its integrity; a method of initializing the configuration registers by the POR Sequencer; a method of copying the system firmware from the storage device to the RAM; and a method of releasing the CPUs of the system from reset.


Initially, the system's nonvolatile memory and storage device contain nothing. When the system is powered up, no boot process occurs but the debug interface and a CPU are released from reset. The system integrator loads a program to the RAM via the debug interface. The program contains code to burn the POR Sequencer Descriptor in nonvolatile memory and to save a copy of the System Firmware in the storage device.


The method of copying POR Sequencer Descriptor from nonvolatile memory to RAM starts when the supply voltage of the system becomes stable after power-up. Then the Reset Controller, the POR Sequencer, the CPU Bus, the memory controllers, the DMA controllers, and the storage device controllers are released from reset. Then the POR Sequencer detects the presence of the POR Sequencer Descriptor in the nonvolatile memory. If the POR Sequencer Descriptor is not detected, then the debug interface and a CPU of the system are released from reset. If the POR Sequencer Descriptor is detected, then the POR Sequencer copies the POR Sequencer Descriptor from nonvolatile memory to RAM. This step ends after the verification of the copied POR Sequencer Descriptor to the RAM completed without error.


The method of initializing the configuration registers of the system starts when the first register information of the POR Sequencer Descriptor is read. Then the register indicated by the register information is updated with a new set of configuration. This sequence is repeated until the last register information of the POR Sequencer Descriptor is read and processed. Then the step proceeds to the processing of the DMA descriptor. The type of the DMA descriptor is identified by the POR Sequencer. If the DMA descriptor points to another set of register information then the DMA transfer will update the register information and DMA descriptor spaces of the current POR Sequence Descriptor in the RAM. If the DMA descriptor points to a system firmware fragment then this step is ended and the sequence proceeds to the next method.


The next method is the step where the system firmware stored in the external storage device is copied to the RAM of the embedded system. The system firmware can be a boot code loader, a BIOS, an operating system, or a plain application firmware. This step starts when the POR Sequencer identifies that the DMA descriptor points to a system firmware fragment. The POR Sequencer loads the DMA or DMAs with the DMA Descriptors that will copy the system firmware fragments to the RAM. The POR Sequencer waits for completion signals from all DMA controllers that have been loaded with DMA descriptors before proceeding in the process flow. If the last DMA descriptor of the current POR Sequencer Descriptor points to another set of DMA Descriptors then another set of system firmware fragments must be copied from the storage devices to the RAM. If the last DMA descriptor of the current POR Sequencer Descriptor points to the last system firmware fragment then this step ends. The storage device refers to a single storage device or a plurality of storage devices of the same type.


The last step is the release of the CPUs of the embedded system from reset. When the system has a single CPU, after the system firmware is loaded in the RAM, the POR Sequencer configures the reset controller to release the CPU from reset. Then the CPU starts reading and executing the system firmware. In a multi-CPU system, a CPU is released from reset. Then, the CPU reads and executes the system firmware in the RAM. The system firmware will have instructions to sequence the release of the other CPUs from reset either one at a time or simultaneously.





BRIEF DESCRIPTION OF DRAWINGS

So that the manner in which the above recited features, advantages and objects of the present invention are attained and can be understood in detail, a more particular description of the invention, briefly summarized above, may be had by reference to the embodiments thereof which are illustrated in the appended drawings.


It is to be noted, however, that the appended drawings illustrate only typical embodiments of this invention and are therefore not to be considered limiting of its scope, for the present invention may admit to other equally effective embodiments.



FIG. 1 shows a prior art embedded system that implements a mechanism to directly boot from flash block mass storage.



FIG. 2 is a block diagram of an embedded system with a power-on reset sequencer that manages the initialization and boot up of the system.



FIG. 3 is a block diagram which presents the internal organization of the power-on reset sequencer and its interconnection to the RAM via a memory controller.



FIG. 4 shows the structure of the power-on reset sequencer descriptor.



FIG. 5 illustrates a linked-list data structure of the power-on reset sequencer descriptor.



FIG. 6 is a flow chart of the sequence used in copying the power-on reset sequencer descriptor from nonvolatile memory to the RAM.



FIG. 7 is a flow chart of the sequence used in the register initialization phase of the power-on reset sequencer.



FIG. 8 is a flow chart of the sequence used in copying the system firmware from the storage device to the RAM.



FIG. 9 is a flow chart of the sequence used in releasing the CPUs of the embedded system from their reset states.





DETAILED DESCRIPTION

The present invention relates a method and device for booting up a system from a storage device and further relates a method for enabling a system to initialize all configuration registers even before any of the CPUs of the system is brought out of reset.



FIG. 2 is a block diagram showing a typical embodiment of the present invention. The figure shows an embedded system 200 comprising a CPU bus 202 interconnecting a single CPU 201 or a plurality of CPUs 201, a single DMA controller 203 or a plurality of DMA controllers 203, a reset controller 206, a power-on reset (POR) sequencer 207, a RAM controller 205, a nonvolatile memory controller 214, a storage device controller 204, and a debug interface 216. Also comprising the system is an internal RAM 208, a small nonvolatile memory 215 and a storage device 209. A storage device type may be a mechanical disk drive, a mobile flash drive, or a solid-state drive.


The storage device controller 204 controls the storage device or devices 209 connected to it. A storage device or a plurality of storage devices 209 are connected to the storage device controller 204 via an IO bus 210 for the case of interface standards such as IDE/ATA, Serial ATA, SCSI/SAS, PCI/PCI-X, USB, Firewire, Bluetooth, Fibre Channel and PCI Express. For a solid-state drive, a flash bus is used to connect to the storage device controller 204 which also called a flash controller. The reset controller 206 handles the reset states of all the devices in the system. One or a plurality of DMA controllers 203 initiates and tracks data transfers. The storage device controller 204 provides interface to the storage device 209. The storage device 209 is used to store system firmware 211 or a fragment of the system firmware 211. When the POR sequencer descriptor exceeds the space of the nonvolatile memory, the descriptor is divided into fragments 212, 213 and distributed across the nonvolatile memory 215 and storage devices 209.


The multi-port memory controller 205 interfaces the RAM 208 to the CPU bus 202 and to the POR sequencer 207. The POR sequencer 207 processes the POR sequencer descriptor which contains information to initialize configuration registers of the system and DMA descriptors used to fetch other POR sequencer descriptor fragments 213 and the system firmware 211. The POR sequencer 207 takes care of loading the system firmware to the RAM and verifying its integrity. After the system firmware has been loaded in the RAM and the system's configuration registers pre-initialized, the POR sequencer sequences the release of the CPUs from their reset states.


The nonvolatile memory 215 with its controller 214 is used to store the head of the POR sequencer descriptor 212 used by the POR sequencer 207 in the boot process. Initially, the system's nonvolatile memory and storage devices attached to the system are empty. When the system is powered up the boot process exits to emulation mode since there are no POR sequencer descriptor to process and no system firmware to load and execute in memory. The system integrator which writes program for the system loads a firmware to the RAM of the system via the debug interface 216. The firmware loaded in the RAM has a routine that writes the POR sequencer descriptor and system firmware to the nonvolatile memory 215 and storage devices 209 attached to the system. After the POR sequencer descriptor and system firmware has been written to the nonvolatile memory and storage devices, the next time the system is powered up, the system doesn't exit to emulation mode instead it continues with the boot process until all CPUs 201 of the system are released from their reset states.



FIG. 3 is a schematic diagram that illustrates the structure and interconnection between the POR sequencer 300 and the multi-port memory controller 308. For the POR sequencer 300, data and control signals to and from the CPU bus 304 is managed by the bus master interface 303 while control signals to and from the RAM 311 is managed by the memory controller port interface 302. The POR sequencer state machine 301 utilizes the bus master interface 303 to perform data transfer to and from the CPU bus and the memory controller port interface 302 to do data transfer to and from the RAM 311. The POR sequencer 300 combines the use of the bus master interface 303 and the memory controller port interface 302 in order to control transfers to and from the RAM 311.


The POR sequencer 300 transfers the POR sequencer descriptor from the nonvolatile memory or from the storage device to the RAM 311 before it is processed. When the POR sequencer descriptor is already loaded in the RAM 311, the POR sequencer state machine reads a part of the descriptor from RAM to parse and interpret. Depending on the content of the part of the POR sequencer descriptor, the POR sequencer state machine decides whether to get another part of the descriptor from RAM, transfer data from RAM to a device mapped on the CPU bus 304, or to write data that it generated to the RAM or to a device mapped on the CPU bus 304. Through the use of POR sequencer state machine 301, memory controller port interface 302, and bus master interface 303 the POR sequencer 300 is able to do the following tasks: transfer of DMA controller descriptor to the DMA controller's configuration register space, activation of the DMA controller, initialization of configuration registers, and copy of data from storage device or nonvolatile memory to the RAM.


The multi-port memory controller 308 has several port interfaces. Port 1 interface 305 provides devices on the CPU bus 304 access to the RAM 311. Port 2 interface 307 provides the POR sequencer 300 access to the RAM 311. The data path multiplexers 309 route the read and write requests from the POR sequencer 300 and the CPU bus 304 to the RAM 311. The controller 310 manages how the data path multiplexers 309 behave in response to the read and write requests received from the POR sequencer 300 and CPU bus 304.



FIG. 4 shows the POR sequencer descriptor format. The POR sequencer descriptor is comprised of the register information space 401, the DMA descriptor space 403, and an optional POR sequencer descriptor checksum 407. The register information space consists of controller core register information 402 used by the POR sequencer to update the configuration registers of the system. The DMA descriptor space 403 on the other hand consists of the POR sequencer DMA descriptors' control information 404 and one or more DMA controller descriptors 406. The DMA controller descriptors 406 are loaded by the POR Sequencer to the DMA controller's configuration register space. The POR sequencer DMA descriptors' control information 404 contains information about the DMA controller descriptors 406 of the current POR sequencer descriptor.


When the POR sequencer descriptor doesn't fit in the nonvolatile memory of the system, the descriptor is divided into fragments and distributed across the nonvolatile memory and storage devices attached to the system. FIG. 5 gives us an illustration of a fragmented POR sequencer descriptor. POR sequencer descriptor fragment 0 501 is stored in the nonvolatile memory. Fragment 0 comprises of register information space 505, DMA descriptor space 503, and POR sequencer descriptor checksum 504. The DMA descriptor space 503 is composed of DMA controller descriptors 0 to P. The last DMA controller descriptor 506 of the POR sequencer descriptor fragment 501, 502 points to the next POR sequencer descriptor fragment 502. POR sequencer fragment 1 to N 502 have only two parts, the register information space 505 and DMA descriptor space 503 in contrast to POR sequencer descriptor fragment 0 501 which is made up of three parts. The POR sequencer descriptor fragment 501 or 502 may or may not have a register information space 505. The last DMA controller descriptor 507 of the last POR sequencer descriptor fragment points to the last fragment of the system firmware in the storage device.



FIG. 6 is a flowchart showing the process of transferring the POR sequencer descriptors 212, 213 from nonvolatile memory 215 and storage device 209 to the RAM 208. After the system is powered-up and the input power supply stabilizes in block 601, the CPU bus 202, reset controller 206, DMA controller 203, storage device controller 204, RAM controller 205, nonvolatile memory controller 214 and POR sequencer 207 are brought out of reset in block 602. The POR sequencer 207 then detects the presence of POR sequencer descriptor 212 in the nonvolatile memory in block 603. If the first copy of the POR Sequencer descriptor 212 is detected, then POR sequencer 207 copies the POR sequencer descriptor 212 from the nonvolatile memory 215 to the RAM 208 in block 606. POR sequencer 207 then checks the integrity of POR sequencer descriptor 212 in block 606 by comparing the computed checksum to the POR sequencer descriptor checksum 507. If no error is found then copying of POR sequencer descriptor 212 from nonvolatile memory 215 to the RAM 208 is completed. If an error is found, a POR sequencer error handler is activated in block 612. If the first copy 212 is unsuccessfully detected in step 604, in block 609, the POR sequencer will try to detect a second copy of the POR sequencer descriptor which is not shown in FIG. 2. If successful, the POR sequencer 207 will copy the backup copy of the POR sequencer descriptor from the nonvolatile memory 215 to the RAM 208 in block 605. If not, the POR sequencer 207 releases the debug interface 216 and a CPU 201 from reset to allow a system integrator from updating the nonvolatile memory 215 with a new POR sequencer descriptor 212.



FIG. 7 illustrates the register initialization phase by the POR sequencer 207. Starting from block 701, the POR sequencer 207 reads the first register information in the register information space 401 of the POR sequencer descriptor 212 from the RAM 208. The POR sequencer 207 then processes the register information and then updates the corresponding configuration register based on the contents of the register information in block 702. Steps 701 and 702 are repeated for succeeding register information until the last register information of the current POR sequencer descriptor 212 is read and processed. After the last register information is read, the POR sequencer 207 writes the DMA controller descriptor 406 to the DMA controller's register space in block 704. The POR sequencer 207 then activates the DMA controller 203 in block 705. The DMA controller 203 then processes the DMA controller's descriptor 406 that it received and initiates transfer of data from the storage device 209 to the RAM 208 via the storage device controller 204 in block 706. When the data transfer is finished, in block 707, the DMA controller 203 informs the POR sequencer 207 that the data transfer has completed. The POR sequencer 207 then reads the POR sequencer DMA descriptor's control information 404 in block 608. It then checks if the DMA controller descriptor 406 points to a new set of register information of another POR sequencer descriptor fragment 502 in block 709. If the test is positive, the register initialization phase is repeated starting with block 701. If the test is negative, then the register initialization phase has ended.


DMA controller descriptors 406 are not only used to fetch POR sequencer descriptor fragments 501, 502. They are also used to transfer system firmware 211 from the storage device to the RAM 208. In FIG. 8, the copying of system firmware 211 from the storage device 209 to the RAM 208 is illustrated. The process starts with the POR sequencer 207 reading a DMA controller descriptor 406 from RAM 208 and then writing the DMA controller descriptor 406 to the configuration space of an available DMA controller 203 in block 801. The POR sequencer 207 then activates the DMA controller 203 in block 802, which would then cause the DMA controller 203 to start the transfer of a system firmware fragment 211 from the storage device 209 to the internal RAM 208 via the storage device controller 204 in block 803.


The POR sequencer 207 then reads the DMA descriptor control information 404 from RAM 208 in block 804. If the DMA descriptor 406 points to the last system firmware fragment, the POR sequencer 207 waits for all busy DMA controllers to complete their transfers in block 809. The POR sequencer 207 then verifies the integrity of the copied system firmware in block 811. If the system firmware is error free then the sequence completes. If an error is found, an error handling routine will be executed in block 813. In block 805, if the DMA controller descriptor 406 does not point to the last system firmware fragment, which means there are succeeding system firmware fragments, then the POR sequencer 207 proceeds to block 806 to check if the said DMA controller descriptor 406 was the last descriptor of the current POR sequencer descriptor. If it is the last DMA controller descriptor 406 of the current frame, then POR sequencer 207 waits for all the busy DMA controllers to complete their transfers in block 810. The process is repeated starting from block 801 for the next POR sequencer descriptor which will be used to fetch the next system firmware fragment 211.


In block 806, if the DMA controller descriptor 406 of the current POR sequencer descriptor is not the last one, then the availability of a DMA controller 203 is determined in block 807. If there is no available DMA controller, meaning, all the DMA controllers 203 are busy, then the POR sequencer 207 waits for a DMA controller 203 to complete its transfer in block 808 before proceeding to process the next DMA controller descriptor 406. When a DMA controller becomes available the process goes back to block 801.



FIG. 9 describes the process of releasing the CPUs 201 from their reset state. The POR sequencer 207 first configures the reset controller 206 to release a CPU 201 from reset in block 901. This CPU is usually referred to as the bootstrap CPU. After coming out of reset, the bootstrap CPU reads and executes the system firmware from RAM 208 in block 902. Then the bootstrap CPU performs full system initialization and diagnostics in block 903. If the diagnostic failed, a system firmware error handling routine is executed in block 905. If the system diagnostics is successful, the release of other CPUs, if present, proceeds. The system firmware instructs the reset controller 206 to release the next CPU from reset in block 908. The next CPU is released from reset which then reads and executes a copy of the system firmware in block 909. This process ends when all of the CPUs 203 have been brought out of reset. At this point, the system firmware exits system initialization phase and waits for service calls from the controller cores of the embedded system.


Foregoing described embodiments of the invention are provided as illustrations and descriptions. They are not intended to limit the invention to precise form described. In particular, it is contemplated that functional implementation of invention described herein may be implemented equivalently in hardware, software, firmware, and/or other available functional components or building blocks, and that networks may be wired, wireless, or a combination of wired and wireless.


It is also within the scope of the present invention to implement a program or code that can be stored in a machine-readable or computer-readable medium to permit a computer to perform any of the inventive techniques described above, or a program or code that can be stored in an article of manufacture that includes a computer readable medium on which computer-readable instructions for carrying out embodiments of the inventive techniques are stored. Other variations and modifications of the above-described embodiments and methods are possible in light of the teaching discussed herein.


The above description of illustrated embodiments of the invention, including what is described in the Abstract, is not intended to be exhaustive or to limit the invention to the precise forms disclosed. While specific embodiments of, and examples for, the invention are described herein for illustrative purposes, various equivalent modifications are possible within the scope of the invention, as those skilled in the relevant art will recognize.


These modifications can be made to the invention in light of the above detailed description. The terms used in the following claims should not be construed to limit the invention to the specific embodiments disclosed in the specification and the claims. Rather, the scope of the invention is to be determined entirely by the following claims, which are to be construed in accordance with established doctrines of claim interpretation.

Claims
  • 1. A computer-implemented method, comprising: releasing components of an embedded system from reset;detecting a power-on reset (POR) sequencer descriptor in a nonvolatile memory;wherein the POR sequencer descriptor comprises information to initialize configuration registers of the embedded system, Direct Memory Access (DMA) descriptors used to fetch other POR sequencer descriptor fragments, and a system firmware;copying the POR sequencer descriptor from the nonvolatile memory to a random access memory (RAM);verifying an integrity of the POR sequencer descriptor; anddetecting any error in the POR sequencer descriptor;wherein the computer-implemented method allows the embedded system to verify an integrity of user data and program code used in a boot process in order to provide a resilient boot up sequence and wherein the computer-implemented method reduces an amount of the nonvolatile memory used in the boot process.
  • 2. The method of claim 1, further comprising: if a copy of the POR sequencer descriptor is not detected in the nonvolatile memory, then detecting a second copy of the POR sequencer descriptor and copying the second copy from the nonvolatile memory to the RAM.
  • 3. The method of claim 1, further comprising: if a copy of the POR sequencer descriptor is not successfully detected, then updating the nonvolatile memory with a new POR sequencer descriptor.
  • 4. The method of claim 1, wherein verifying the integrity comprises comparing a computed checksum to a checksum of the POR sequencer descriptor.
  • 5. The method of claim 1, further comprising activating a POR sequencer error handler if an error is detected in the POR sequencer descriptor.
  • 6. The method of claim 1, wherein the components comprises a processor bus, a reset controller, a direct memory access (DMA) controller, a storage device controller, a RAM controller, nonvolatile memory controller, and a POR sequencer.
  • 7. The method of claim 1, further comprising: stabilizing an input power supply to the embedded system after power-up.
  • 8. The method of claim 1, further comprising: performing a register initialization phase in the embedded system.
  • 9. The method of claim 1, further comprising: copying system firmware from a storage device to the RAM.
  • 10. An apparatus, comprising: an embedded system configured to release components of the embedded system from reset;wherein the embedded system comprises a power-on reset (POR) sequencer configured to detect a (POR) sequencer descriptor in a nonvolatile memory, to copy the POR sequencer descriptor from the nonvolatile memory to a random access memory (RAM), to verify an integrity of the POR sequencer descriptor, and to detect any error in the POR sequencer descriptor;wherein the POR sequencer descriptor comprises information to initialize configuration registers of the embedded system, Direct Memory Access (DMA) descriptors used to fetch other POR sequencer descriptor fragments, and a system firmware;wherein the POR sequencer comprises a bus master interface that manages data and control signals to and from a Central Processor Unit (CPU) bus, a memory controller port interface that manages control signals to and from the RAM, and a POR sequencer state machine that utilizes the bus master interface to perform data transfer to and from the CPU bus and utilizes the memory controller port interface to perform data transfer to and from the RAM.
  • 11. The apparatus of claim 10, wherein if a copy of the POR sequencer descriptor is not detected in the nonvolatile memory, then the POR sequencer is configured to detect a second copy of the POR sequencer descriptor and to copy the second copy from the nonvolatile memory to the RAM.
  • 12. The apparatus of claim 10, wherein if a copy of the POR sequencer descriptor is not successfully detected, then a system integrator is configured to update the nonvolatile memory with a new POR sequencer descriptor.
  • 13. The apparatus of claim 10, wherein the POR sequencer is configured to verify the integrity by comparing a computed checksum to a checksum of the POR sequencer descriptor.
  • 14. The apparatus of claim 10, wherein a POR sequencer error handler is activated if an error is detected in the POR sequencer descriptor.
  • 15. The apparatus of claim 10, wherein the components comprises a processor bus, a reset controller, a direct memory access (DMA) controller, a storage device controller, a RAM controller, nonvolatile memory controller, and a POR sequencer.
  • 16. The apparatus of claim 10, wherein an input power supply to the embedded system is stabilized after power-up.
  • 17. The apparatus of claim 10, wherein the POR sequencer is configured to perform a register initialization phase in the embedded system.
  • 18. The apparatus of claim 10, wherein the embedded system is configured to copy system firmware from a storage device to the RAM.
  • 19. An article of manufacture, comprising: a non-transitory computer-readable medium having stored thereon instructions operable to permit an apparatus to perform a method comprising:releasing components of an embedded system from reset;detecting a power-on reset (POR) sequencer descriptor in a nonvolatile memory;wherein the POR sequencer descriptor comprises information to initialize configuration registers of the embedded system, Direct Memory Access (DMA) descriptors used to fetch other POR sequencer descriptor fragments, and a system firmware;copying the POR sequencer descriptor from the nonvolatile memory to a random access memory;verifying an integrity of the POR sequencer descriptor; anddetecting any error in the POR sequencer descriptor.
  • 20. The article of manufacture of claim 19, wherein the instructions are further operable to permit the apparatus to activate a POR sequencer error handler if an error is detected in the POR sequencer descriptor.
CROSS-REFERENCE(S) TO RELATED APPLICATIONS

This application claims the benefit of and priority to U.S. Provisional Application 61/801,952, filed 15 Mar. 2013. This U.S. Provisional Application 61/801,952 is hereby fully incorporated herein by reference.

US Referenced Citations (304)
Number Name Date Kind
4752871 Sparks Jun 1988 A
5111058 Martin May 1992 A
RE34100 Hartness Oct 1992 E
5222046 Kreifels et al. Jun 1993 A
5297148 Harari et al. Mar 1994 A
5341339 Wells Aug 1994 A
5371709 Fisher et al. Dec 1994 A
5379401 Robinson et al. Jan 1995 A
5388083 Assar et al. Feb 1995 A
5396468 Harari et al. Mar 1995 A
5406529 Asano Apr 1995 A
5432748 Hsu et al. Jul 1995 A
5448577 Wells et al. Sep 1995 A
5459850 Clay et al. Oct 1995 A
5479638 Assar et al. Dec 1995 A
5485595 Assar et al. Jan 1996 A
5488711 Hewitt et al. Jan 1996 A
5500826 Hsu et al. Mar 1996 A
5509134 Fandrich et al. Apr 1996 A
5513138 Manabe et al. Apr 1996 A
5524231 Brown Jun 1996 A
5530828 Kaki et al. Jun 1996 A
5535328 Harari et al. Jul 1996 A
5535356 Kim et al. Jul 1996 A
5542042 Manson Jul 1996 A
5542082 Solhjell Jul 1996 A
5548741 Watanabe Aug 1996 A
5559956 Sukegawa Sep 1996 A
5568423 Jou et al. Oct 1996 A
5568439 Harari Oct 1996 A
5572466 Sukegawa Nov 1996 A
5594883 Pricer Jan 1997 A
5602987 Harari et al. Feb 1997 A
5603001 Sukegawa et al. Feb 1997 A
5606529 Honma et al. Feb 1997 A
5606532 Lambrache et al. Feb 1997 A
5619470 Fukumoto Apr 1997 A
5627783 Miyauchi May 1997 A
5640349 Kakinuma et al. Jun 1997 A
5644784 Peek Jul 1997 A
5682509 Kabenjian Oct 1997 A
5737742 Achiwa et al. Apr 1998 A
5787466 Berliner Jul 1998 A
5796182 Martin Aug 1998 A
5799200 Brant et al. Aug 1998 A
5802554 Caceres et al. Sep 1998 A
5819307 Iwamoto et al. Oct 1998 A
5822251 Bruce et al. Oct 1998 A
5875351 Riley Feb 1999 A
5881264 Kurosawa Mar 1999 A
5913215 Rubinstein et al. Jun 1999 A
5918033 Heeb et al. Jun 1999 A
5930481 Benhase Jul 1999 A
5933849 Srbljic et al. Aug 1999 A
5943421 Grabon Aug 1999 A
5956743 Bruce et al. Sep 1999 A
6000006 Bruce et al. Dec 1999 A
6014709 Gulick et al. Jan 2000 A
6076137 Asnaashari Jun 2000 A
6098119 Surugucchi et al. Aug 2000 A
6128303 Bergantino et al. Oct 2000 A
6151641 Herbert Nov 2000 A
6215875 Nohda Apr 2001 B1
6230269 Spies et al. May 2001 B1
6298071 Taylor et al. Oct 2001 B1
6363441 Beniz et al. Mar 2002 B1
6363444 Platko et al. Mar 2002 B1
6397267 Chong, Jr. May 2002 B1
6404772 Beach et al. Jun 2002 B1
6496939 Portman et al. Dec 2002 B2
6526506 Lewis Feb 2003 B1
6529416 Bruce et al. Mar 2003 B2
6557095 Henstrom Apr 2003 B1
6601126 Zaidi et al. Jul 2003 B1
6678754 Soulier Jan 2004 B1
6744635 Portman et al. Jun 2004 B2
6757845 Bruce Jun 2004 B2
6857076 Klein Feb 2005 B1
6901499 Aasheim et al. May 2005 B2
6922391 King et al. Jul 2005 B1
6961805 Lakhani et al. Nov 2005 B2
6970446 Krischer et al. Nov 2005 B2
6970890 Bruce et al. Nov 2005 B1
6973546 Johnson Dec 2005 B2
6980795 Hermann et al. Dec 2005 B1
7103684 Chen Sep 2006 B2
7174438 Homma et al. Feb 2007 B2
7194766 Noehring et al. Mar 2007 B2
7263006 Aritome Aug 2007 B2
7283629 Kaler et al. Oct 2007 B2
7305548 Pierce et al. Dec 2007 B2
7330954 Nangle Feb 2008 B2
7372962 Fujimoto et al. May 2008 B2
7386662 Kekre et al. Jun 2008 B1
7412631 Uddenberg et al. Aug 2008 B2
7415549 Vemula et al. Aug 2008 B2
7424553 Borrelli et al. Sep 2008 B1
7430650 Ross Sep 2008 B1
7474926 Carr et al. Jan 2009 B1
7490177 Kao Feb 2009 B2
7500063 Zohar et al. Mar 2009 B2
7506098 Arcedera et al. Mar 2009 B2
7613876 Bruce et al. Nov 2009 B2
7620748 Bruce et al. Nov 2009 B1
7624239 Bennett et al. Nov 2009 B2
7636801 Kekre et al. Dec 2009 B1
7660941 Lee et al. Feb 2010 B2
7668925 Liao et al. Feb 2010 B1
7676640 Chow et al. Mar 2010 B2
7681188 Tirumalai et al. Mar 2010 B1
7716389 Bruce et al. May 2010 B1
7719287 Marks et al. May 2010 B2
7729370 Orcine et al. Jun 2010 B1
7743202 Tsai et al. Jun 2010 B2
7765359 Kang et al. Jul 2010 B2
7877639 Hoang Jan 2011 B2
7913073 Choi Mar 2011 B2
7921237 Holland Apr 2011 B1
7934052 Prins et al. Apr 2011 B2
7958295 Liao et al. Jun 2011 B1
7979614 Yang Jul 2011 B1
8010740 Arcedera et al. Aug 2011 B2
8032700 Bruce et al. Oct 2011 B2
8156279 Tanaka et al. Apr 2012 B2
8156320 Borras et al. Apr 2012 B2
8161223 Chamseddine et al. Apr 2012 B1
8165301 Bruce et al. Apr 2012 B1
8200879 Falik et al. Jun 2012 B1
8219719 Parry et al. Jul 2012 B1
8225022 Caulkins Jul 2012 B2
8341311 Szewerenko et al. Dec 2012 B1
8375257 Hong et al. Feb 2013 B2
8447908 Bruce et al. May 2013 B2
8510631 Wu et al. Aug 2013 B2
8560804 Bruce et al. Oct 2013 B2
8707134 Takahashi et al. Apr 2014 B2
8713417 Jo Apr 2014 B2
8762609 Lam et al. Jun 2014 B1
8788725 Bruce et al. Jul 2014 B2
8832371 Uehara et al. Sep 2014 B2
8856392 Myrah et al. Oct 2014 B2
8959307 Bruce et al. Feb 2015 B1
9043669 Bruce et al. May 2015 B1
9099187 Bruce et al. Aug 2015 B2
9135190 Bruce et al. Sep 2015 B1
9147500 Kim et al. Sep 2015 B2
20010010066 Chin et al. Jul 2001 A1
20020044486 Chan et al. Apr 2002 A1
20020073324 Hsu et al. Jun 2002 A1
20020083262 Fukuzumi Jun 2002 A1
20020083264 Coulson Jun 2002 A1
20020141244 Bruce et al. Oct 2002 A1
20030023817 Rowlands et al. Jan 2003 A1
20030065836 Pecone Apr 2003 A1
20030120864 Lee et al. Jun 2003 A1
20030126451 Gorobets Jul 2003 A1
20030131201 Khare et al. Jul 2003 A1
20030161355 Falcomato et al. Aug 2003 A1
20030163624 Matsui et al. Aug 2003 A1
20030163647 Cameron et al. Aug 2003 A1
20030163649 Kapur et al. Aug 2003 A1
20030182576 Morlang et al. Sep 2003 A1
20030188100 Solomon et al. Oct 2003 A1
20030204675 Dover et al. Oct 2003 A1
20030217202 Zilberman et al. Nov 2003 A1
20030223585 Tardo et al. Dec 2003 A1
20040073721 Goff et al. Apr 2004 A1
20040128553 Buer et al. Jul 2004 A1
20050050245 Miller et al. Mar 2005 A1
20050078016 Neff Apr 2005 A1
20050097368 Peinado et al. May 2005 A1
20050120146 Chen Jun 2005 A1
20050210149 Kimball Sep 2005 A1
20050210159 Voorhees et al. Sep 2005 A1
20050226407 Kasuya et al. Oct 2005 A1
20050243610 Guha et al. Nov 2005 A1
20050289361 Sutardja Dec 2005 A1
20060004957 Hand, III et al. Jan 2006 A1
20060031450 Unrau et al. Feb 2006 A1
20060039406 Day et al. Feb 2006 A1
20060095709 Achiwa May 2006 A1
20060112251 Karr et al. May 2006 A1
20060184723 Sinclair et al. Aug 2006 A1
20070019573 Nishimura Jan 2007 A1
20070028040 Sinclair Feb 2007 A1
20070058478 Murayama Mar 2007 A1
20070073922 Go et al. Mar 2007 A1
20070079017 Brink et al. Apr 2007 A1
20070083680 King et al. Apr 2007 A1
20070088864 Foster Apr 2007 A1
20070093124 Varney et al. Apr 2007 A1
20070094450 VanderWiel Apr 2007 A1
20070096785 Maeda May 2007 A1
20070121499 Pal et al. May 2007 A1
20070130439 Andersson et al. Jun 2007 A1
20070159885 Gorobets Jul 2007 A1
20070168754 Zohar et al. Jul 2007 A1
20070174493 Irish et al. Jul 2007 A1
20070174506 Tsuruta Jul 2007 A1
20070195957 Arulambalam et al. Aug 2007 A1
20070288686 Arcedera et al. Dec 2007 A1
20070288692 Bruce et al. Dec 2007 A1
20070294572 Kalwitz et al. Dec 2007 A1
20080052456 Ash et al. Feb 2008 A1
20080072031 Choi Mar 2008 A1
20080104264 Duerk et al. May 2008 A1
20080147963 Tsai et al. Jun 2008 A1
20080189466 Hemmi Aug 2008 A1
20080195800 Lee et al. Aug 2008 A1
20080218230 Shim Sep 2008 A1
20080228959 Wang Sep 2008 A1
20080276037 Chang et al. Nov 2008 A1
20090028229 Cagno et al. Jan 2009 A1
20090037565 Andresen et al. Feb 2009 A1
20090055573 Ito Feb 2009 A1
20090077306 Arcedera et al. Mar 2009 A1
20090083022 Nordin et al. Mar 2009 A1
20090094411 Que Apr 2009 A1
20090132620 Arakawa May 2009 A1
20090132752 Poo et al. May 2009 A1
20090150643 Jones et al. Jun 2009 A1
20090158085 Kern et al. Jun 2009 A1
20090172250 Allen et al. Jul 2009 A1
20090172466 Royer et al. Jul 2009 A1
20090240873 Yu et al. Sep 2009 A1
20100058045 Borras et al. Mar 2010 A1
20100095053 Bruce et al. Apr 2010 A1
20100125695 Wu et al. May 2010 A1
20100250806 Devilla et al. Sep 2010 A1
20100268904 Sheffield et al. Oct 2010 A1
20100299538 Miller Nov 2010 A1
20110022778 Schibilla et al. Jan 2011 A1
20110022783 Moshayedi Jan 2011 A1
20110022801 Flynn Jan 2011 A1
20110087833 Jones Apr 2011 A1
20110093648 Belluomini et al. Apr 2011 A1
20110113186 Bruce et al. May 2011 A1
20110145479 Talagala et al. Jun 2011 A1
20110161568 Bruce et al. Jun 2011 A1
20110167204 Estakhri et al. Jul 2011 A1
20110197011 Suzuki et al. Aug 2011 A1
20110202709 Rychlik Aug 2011 A1
20110208914 Winokur et al. Aug 2011 A1
20110219150 Piccirillo et al. Sep 2011 A1
20110258405 Asaki et al. Oct 2011 A1
20110264884 Kim Oct 2011 A1
20110264949 Ikeuchi et al. Oct 2011 A1
20110270979 Schlansker et al. Nov 2011 A1
20120005405 Wu et al. Jan 2012 A1
20120005410 Ikeuchi Jan 2012 A1
20120017037 Riddle et al. Jan 2012 A1
20120079352 Frost et al. Mar 2012 A1
20120102263 Aswadhati Apr 2012 A1
20120102268 Smith et al. Apr 2012 A1
20120137050 Wang et al. May 2012 A1
20120161568 Umemoto et al. Jun 2012 A1
20120260102 Zaks et al. Oct 2012 A1
20120271967 Hirschman Oct 2012 A1
20120303924 Ross Nov 2012 A1
20120311197 Larson et al. Dec 2012 A1
20120324277 Weston-Lewis et al. Dec 2012 A1
20130010058 Pomeroy Jan 2013 A1
20130019053 Somanache et al. Jan 2013 A1
20130073821 Flynn et al. Mar 2013 A1
20130094312 Jang et al. Apr 2013 A1
20130099838 Kim et al. Apr 2013 A1
20130111135 Bell, Jr. et al. May 2013 A1
20130208546 Kim et al. Aug 2013 A1
20130212337 Maruyama Aug 2013 A1
20130212349 Maruyama Aug 2013 A1
20130246694 Bruce et al. Sep 2013 A1
20130254435 Shapiro et al. Sep 2013 A1
20130262750 Yamasaki et al. Oct 2013 A1
20130282933 Jokinen et al. Oct 2013 A1
20130304775 Davis et al. Nov 2013 A1
20130339578 Ohya et al. Dec 2013 A1
20130339582 Olbrich et al. Dec 2013 A1
20130346672 Sengupta et al. Dec 2013 A1
20140068177 Raghavan Mar 2014 A1
20140095803 Kim et al. Apr 2014 A1
20140104949 Bruce et al. Apr 2014 A1
20140108869 Brewerton et al. Apr 2014 A1
20140189203 Suzuki et al. Jul 2014 A1
20140258788 Maruyama Sep 2014 A1
20140285211 Raffinan Sep 2014 A1
20140331034 Ponce et al. Nov 2014 A1
20150006766 Ponce et al. Jan 2015 A1
20150012690 Bruce et al. Jan 2015 A1
20150032937 Salessi Jan 2015 A1
20150032938 Salessi Jan 2015 A1
20150067243 Salessi et al. Mar 2015 A1
20150149697 Salessi et al. May 2015 A1
20150149706 Salessi et al. May 2015 A1
20150153962 Salessi et al. Jun 2015 A1
20150169021 Salessi et al. Jun 2015 A1
20150261456 Alcantara et al. Sep 2015 A1
20150261475 Alcantara et al. Sep 2015 A1
20150261797 Alcantara et al. Sep 2015 A1
20150370670 Lu Dec 2015 A1
20150371684 Mataya Dec 2015 A1
20150378932 Souri et al. Dec 2015 A1
20160026402 Alcantara et al. Jan 2016 A1
20160027521 Lu Jan 2016 A1
20160041596 Alcantara et al. Feb 2016 A1
Foreign Referenced Citations (8)
Number Date Country
2005142859 Jun 2005 JP
2005-309847 Nov 2005 JP
489308 Jun 2002 TW
200428219 Dec 2004 TW
436689 Dec 2005 TW
I420316 Dec 2013 TW
WO 9406210 Mar 1994 WO
WO 9838568 Sep 1998 WO
Non-Patent Literature Citations (109)
Entry
Notice of allowance/allowability for U.S. Appl. No. 14/217,041 dated Apr. 11, 2016.
Office Action for U.S. Appl. No. 13/475,878, mailed on Jun. 23, 2014.
Office Action for U.S. Appl. No. 13/253,912 mailed on Jul. 16, 2014.
Office Action for U.S. Appl. No. 12/876,113 mailed on Jul. 11, 2014.
Office Action for U.S. Appl. No. 12/270,626 mailed on Feb. 3, 2012.
Office Action for U.S. Appl. No. 12/270,626 mailed on Apr. 4, 2011.
Office Action for U.S. Appl. No. 12/270,626 mailed on Mar. 15, 2013.
Notice of Allowance/Allowability for U.S. Appl. No. 12/270,626 mailed on Oct. 3, 2014.
Advisory Action for U.S. Appl. No. 12/876,113 mailed on Oct. 16, 2014.
Office Action for U.S. Appl. No. 14/297,628 mailed on Jul. 17, 2015.
Office Action for U.S. Appl. No. 13/475,878 mailed on Dec. 4, 2014.
Office Action mailed Sep. 11, 2015 for U.S. Appl. No. 14/217,436.
Office Action mailed Sep. 24, 2015 for U.S. Appl. No. 14/217,334.
Office Action dated Sep. 18, 2015 for Taiwanese Patent Application No. 102144165.
Office Action mailed Sep. 29, 2015 for U.S. Appl. No. 14/217,316.
Office Action mailed Sep. 28, 2015 for U.S. Appl. No. 14/689,045.
Office Action for U.S. Appl. No. 14/217,365 dated Feb. 18, 2016.
Office Action for U.S. Appl. No. 14/217,365 dated Mar. 2, 2016.
Office Action for U.S. Appl. No. 14/690,305 dated Feb. 25, 2016.
Office Action for U.S. Appl. No. 14/217,436 dated Feb. 25, 2016.
Office Action for U.S. Appl. No. 14/217,316 dated Feb. 26, 2016.
Office Action for U.S. Appl. No. 14/215,414 dated Mar. 1, 2016.
Office Action for U.S. Appl. No. 14/616,700 dated Mar. 8, 2016.
Notice of allowance/allowability for U.S. Appl. No. 13/253,912 dated Mar. 21, 2016.
Notice of allowance/allowability for U.S. Appl. No. 14/803,107 dated Mar. 28, 2016.
Office Action for U.S. Appl. No. 14/217,334 dated Apr. 4, 2016.
Notice of allowance/allowability for U.S. Appl. No. 14/214,216 dated Apr. 27, 2016.
Notice of allowance/allowability for U.S. Appl. No. 14/217,436 dated May 6, 2016.
Advisory Action for U.S. Appl. No. 14/217,334 dated Jun. 13, 2016.
Office Action for U.S. Appl. No. 14/217,291 dated Jun. 15, 2016.
USPTO Notice of Allowability & attachment(s) mailed Jan. 7, 2013 for U.S. Appl. No. 12/876,247.
Office Action mailed Sep. 14, 2012 for U.S. Appl. No. 12/876,247.
Office Action mailed Feb. 1, 2012 for U.S. Appl. No. 12/876,247.
Notice of Allowance/Allowability mailed Mar. 31, 2015 for U.S. Appl. No. 13/475,878.
Office Action mailed May 22, 2015 for U.S. Appl. No. 13/253,912.
Office Action for U.S. Appl. No. 13/475,878 mailed on Jun. 23, 2014.
Office Action for U.S. Appl. No. 12/876,113 mailed on Oct. 16, 2014.
Notice of Allowance for U.S. Appl. No. 12/270,626 mailed Oct. 3, 2014.
Office Action for U.S. Appl. No. 12/270,626 mailed on May 23, 2014.
Office Action for U.S. Appl. No. 12/270,626 mailed on Dec. 18, 2013.
Office Action for U.S. Appl. No. 12/270,626 mailed on Aug. 23, 2012.
Office Action for U.S. Appl. No. 14/217,249 dated Apr. 21, 2016.
Notice of allowance/allowability for U.S. Appl. No. 14/217,467 dated Apr. 20, 2016.
Notice of allowance/allowability for U.S. Appl. No. 14/214,216 dated.
Office Action for U.S. Appl. No. 12/876,113 mailed on Mar. 13, 2014.
Advisory Action for U.S. Appl. No. 12/876,113 mailed on Sep. 6, 2013.
Office Action for U.S. Appl. No. 12/876,113 mailed on May 14, 2013.
Office Action for U.S. Appl. No. 12/876,113 mailed on Dec. 21, 2012.
William Stallings, Security Comes to SNMP: The New SNMPv3 Proposed Internet Standard, The Internet Protocol Journal, vol. 1, No. 3, Dec. 1998.
Notice of Allowability for U.S. Appl. No. 12/882,059 mailed on May 30, 2013.
Notice of Allowability for U.S. Appl. No. 12/882,059 mailed on Feb. 14, 2013.
Office Action for U.S. Appl. No. 12/882,059 mailed on May 11, 2012.
Notice of Allowability for U.S. Appl. No. 14/038,684 mailed on Aug. 1, 2014.
Office Action for U.S. Appl. No. 14/038,684 mailed on Mar. 17, 2014.
Office Action mailed Oct. 8, 2015 for U.S. Appl. No. 14/217,291.
Final Office Action mailed Nov. 19, 2015 for U.S. Appl. No. 14/217,249.
Final Office Action mailed Nov. 18, 2015 for U.S. Appl. No. 14/217,467.
Office Action mailed Nov. 25, 2015 for U.S. Appl. No. 14/217,041.
Office Action mailed Oct. 5, 2015 for Taiwanese Application No. 103105076.
Office Action mailed Nov. 19, 2015 for U.S. Appl. No. 14/217,249.
Office Action mailed Nov. 18, 2015 for U.S. Appl. No. 14/217,467.
Office Action mailed Dec. 4, 2015 for U.S. Appl. No. 14/616,700.
Office Action mailed Jun. 4, 2015 for U.S. Appl. No. 14/215,414.
Notice of Allowance/Allowability for U.S. Appl. No. 13/890,229 mailed on Feb. 20, 2014.
Office Action for U.S. Appl. No. 13/890,229 mailed on Oct. 8, 2013.
Office Action for U.S. Appl. No. 12/876,113 mailed on Dec. 5, 2014.
Notice of Allowance/Allowabilty for U.S. Appl. No. 12/876,113 mailed on Jun. 22, 2015.
Office Action for U.S. Appl. No. 14/217,249 mailed on Apr. 23, 2015.
Office Action for U.S. Appl. No. 14/217,467 mailed on Apr. 27, 2015.
Office Action for U.S. Appl. No. 14/616,700 mailed on Apr. 30, 2015.
Office Action for U.S. Appl. No. 14/217,436 mailed on Sep. 11, 2015.
Office Action mailed Dec. 15, 2015 for U.S. Appl. No. 13/253,912.
Office Action mailed Dec. 17, 2015 for U.S. Appl. No. 14/214,216.
Office Action mailed Dec. 17, 2015 for U.S. Appl. No. 14/215,414.
Office Action mailed Dec. 17, 2015 for U.S. Appl. No. 14/803,107.
Office Action mailed Jan. 15, 2016 for U.S. Appl. No. 14/866,946.
Office Action mailed Jan. 11, 2016 for U.S. Appl. No. 14/217,399.
Office Action mailed Jan. 15, 2016 for U.S. Appl. No. 14/216,937.
Notice of Allowance and Examiner-Initiated Interview Summary, mailed Jan. 29, 2016 for U.S. Appl. No. 14/297,628.
Office Action for U.S. Appl. No. 14/215,414 dated May 20, 2016.
Office Action for U.S. Appl. No. 14/616,700 dated May 20, 2016.
Office Action for U.S. Appl. No. 14/689,019 dated May 20, 2016.
Advisory Action for U.S. Appl. No. 14/217,316 dated May 19, 2016.
National Science Fountation,Award Abstract #1548968, SBIR Phase I: SSD In-Situ Processing, http://www.nsf.gov/awardsearch/showAward?AWD—ID=1548968 printed on Feb. 13, 2016.
Design-Reuse, NxGn Data Emerges from Stealth Mode to provide a paradigm shift in enterprise storage solution (author(s) not indicated).
http://www.design-reuse.com/news/35111/nxgn-data-intelligent-solutions.html, printed on Feb. 13, 2016 (author(s) not indicated).
Office Action mailed Dec. 5, 2014 for U.S. Appl. No. 14/038,684.
Office Action for U.S. Appl. No. 14/217,096 dated Jul. 12, 2016.
Notice of Allowance for U.S. Appl. No. 14/217,399 dated Jul. 20, 2016.
Office Action for U.S. Appl. No. 14/866,946 dated Jul. 29, 2016.
Notice of Allowance for U.S. Appl. No. 14/217,334 dated Jul. 29, 2016.
Office Action for U.S. Appl. No. 14/690,243 dated Aug. 11, 2016.
Office Action for U.S. Appl. No. 14/690,370 dated Aug. 12, 2016.
Office Action for U.S. Appl. No. 14/216,937 dated Aug. 15, 2016.
Working Draft American National Standard Project T10/1601-D Information Technology Serial Attached SCSI—1.1 (SAS—1.1), Mar. 13, 2004 Revision 4.
Office Action for U.S. Appl. No. 14/217,316 dated Aug. 25, 2016.
Office Action for U.S. Appl. No. 14/690,305 dated Aug. 26, 2016.
Advisory Action for U.S. Appl. No. 14/217,291 dated Sep. 9, 2016.
Advisory Action for U.S. Appl. No. 14/689,045 dated Sep. 16, 2016.
Notice of Allowance for U.S. Appl. No. 14/182,303 dated Sep. 12, 2016.
Advisory Action for U.S. Appl. No. 14/690,114 dated Sep. 12, 2016.
Notice of Allowance for U.S. Appl. No. 14/215,414 dated Sep. 23, 2016.
Advisory Action for U.S. Appl. No. 14/866,946 dated Oct. 13, 2016.
Office Action for U.S. Appl. No. 14/687,700 dated Sep. 26, 2016.
Office Action for U.S. Appl. No. 15/170,768 dated Oct. 6, 2016.
Notice of allowance/allowability for U.S. Appl. No. 14/217,365 dated Oct. 18, 2016.
Office Action for U.S. Appl. No. 14/684,399 dated May 12, 2017.
Notice of allowance/allowability for U.S. Appl. No. 14/217,399 dated May 12, 2017.
Notice of allowance/allowability for U.S. Appl. No. 14/217,365 dated Jul. 21, 2017.
Related Publications (1)
Number Date Country
20140331034 A1 Nov 2014 US
Provisional Applications (1)
Number Date Country
61801952 Mar 2013 US