IP Library Granted Patent US 8,555,050
Granted Patent B2
US 8,555,050 · App. 12/836,962 · Granted Oct 8, 2013

Apparatus and method thereof for reliable booting from NAND flash memory

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,555,050
App. No.
12/836,962
Granted
Oct 8, 2013
Kind
B2
Abstract

An apparatus for enabling booting from a NAND flash memory comprises a NAND flash controller connected to the NAND flash memory, wherein the NAND flash memory is configured to include at least a starter section for storing boot code, the starter section includes a predefined number of blocks to store copies of the boot code duplicated in a configurable number of blocks; and a fetch emulator for fetching a valid and complete starter block that includes the boot code.

Claims (37)

1. An apparatus configured to enable booting from a NAND flash memory, the apparatus comprising:

a NAND flash controller configured to be connected to the NAND flash memory, wherein the NAND flash memory is configured to include at least a starter section including a predefined number of blocks to store copies of a boot code; and

a fetch emulator configured to identify a valid block, from among the predefined number of blocks, based on values of spare bytes on pages of the predefined number of blocks.

2. The apparatus of claim 1 , wherein the fetch emulator is configured to be connected to the NAND flash controller and to a central processing unit (CPU), wherein the CPU is configured to boot from the boot code contained in the valid block.

3. The apparatus of claim 1 , wherein the CPU is configured to be connected to an internal memory through a memory controller, and the NAND flash controller is configured to load a system initialization code, an, operating system image, and user data to the internal memory from the NAND flash memory.

4. The apparatus of claim 3 , wherein the NAND flash memory is further configured to include a system initialization code section, an operating system image section, and a user data section to respectively store the system initialization code, the operating system image, and the user data.

5. The apparatus of claim 1 , wherein the fetch emulator is further configured to identify a complete starter block which includes at least one other valid block from among the predefined number of blocks.

6. The apparatus of claim 1 , wherein the fetch emulator is further configured to:

map the identified valid block in the starter section;

read each page from the mapped valid block;

check whether the read page includes error bits; and

correct the error bits in the read page when it is determined that the read page includes error bits.

7. The apparatus of claim 6 , wherein the fetch emulator is configured to correct the error bits using an error correction codes (ECC) mechanism.

8. The apparatus of claim 6 , wherein the fetch emulator is further configured to sequentially access a next identified valid block in the starter section to read a page corresponding to a previously read page when it is determined that the error bits in the previously read page cannot be corrected using the ECC mechanism.

9. The apparatus of claim 8 , wherein the fetch emulator is configured to sequentially access additional identified valid blocks until a valid page including no error bits is read and the complete starter block includes only valid pages.

10. The apparatus of claim 8 , wherein all the predefined number of blocks substantially include the same content.

11. The apparatus of claim 6 , wherein the fetch emulator is further configured to save mapping information of identified valid blocks in a register.

12. The apparatus of claim 1 , wherein the predefined number of blocks is greater than two.

13. A method for ensuring booting from a NAND flash memory, the method comprising:

receiving a fetch instruction from a central processing unit (CPU) to retrieve a boot code;

identifying a valid block, from among a predefined number of blocks, based on values of spare bytes on pages of the predefined number of blocks, the predefined number of blocks being configured to store copies of the boot code, and to be included in a starter section that is part of the NAND flash memory; and

instructing the CPU to boot from the boot code that resides in the valid block.

14. The method of claim 13 , further comprising:

reading each page from the valid block in the starter section;

checking whether the read block includes error bits; and

correcting the error bits in the read page when it is determined that the read page includes error bits.

15. The method of claim 14 , wherein the correcting the error bits comprises correcting the error bits using an error correction codes (ECC) mechanism.

16. The method of claim 15 , further comprising:

accessing a next identified valid block in the starter section to read a page corresponding to a previously read page when it is determined that the error bits in the previously read page cannot be corrected using the ECC mechanism.

17. The method of claim 16 , wherein the accessing comprises sequentially accessing additional identified valid blocks until a valid page including no error bits is read and the complete starter block includes only valid pages.

18. The method of claim 16 , wherein all the predefined number of blocks substantially include the same content.

19. The method of claim 14 , further comprising:

mapping the identified valid block; and

saving information about the mapped valid block in a register.

20. The method of claim 13 , wherein the predefined number of blocks is greater than two.

21. The apparatus of claim 1 , wherein the fetch emulator, is configured to identify the valid block based on values of two spare bytes on a first two pages of the predetermined number of blocks.

22. The apparatus of claim 21 , wherein the fetch emulator is configured to identify the valid block when any of the values of the two spare bytes on the first two pages is not a zero.

Assignments (6)
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Feb 3, 2017
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: BROADCOM CORPORATION
Reel/Frame 041712/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 1, 2017
From: BROADCOM CORPORATION
To: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
Reel/Frame 041706/0001 →
PATENT SECURITY AGREEMENT Recorded Feb 11, 2016
From: BROADCOM CORPORATION
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 037806/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 7, 2012
From: BROADCOM BROADBAND ACESS LTD.
To: BROADCOM INTERNATIONAL LIMITED
Reel/Frame 029256/0895 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 7, 2012
From: BROADCOM INTERNATIONAL LIMITED
To: BROADCOM CORPORATION
Reel/Frame 029256/0939 →
CHANGE OF NAME Recorded Nov 7, 2012
From: BROADLIGHT LTD.
To: BROADCOM BROADBAND ACCESS LTD.
Reel/Frame 029259/0975 →