IP Library › Granted Patent US 8,799,555
Granted Patent B2
US 8,799,555 · App. 13/086,590 · Granted Aug 5, 2014

Boot data storage schemes for electronic devices

Inventors: Daniel J. Post (Cupertino, CA); Matthew Byom (Campbell, CA)
Assignee: Apple Inc.
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,799,555
App. No.
13/086,590
Granted
Aug 5, 2014
Kind
B2
Abstract

Systems and methods are provided for storing and retrieving boot data (e.g., a first stage bootloader) in and from a non-volatile memory (“NVM”), such as a NAND flash memory. To increase storage reliability, the boot data may be stored in a subset of the pages in a boot data storage area, such as in only lower pages. The subset may be selected based on the specific operating specifications and characteristics of the NVM. To prevent a boot ROM from having to maintain a NVM-specific map of which pages are used to store boot data, the map may be maintained in the NVM itself. For example, the map may be in the form of a linked list, where each page storing boot data can include a pointer that points to the next page that stores boot data.

Claims (49)

1. A system comprising:

a volatile memory;

a boot ROM for storing program code to begin loading boot data from non-volatile memory to the volatile memory:

a non-volatile memory comprising:

a plurality of pages that store boot data for booting up the system; and

a map indicating nonconsecutive pages of the non-volatile memory in which the boot data is stored, wherein the map enables execution of the same program code regardless of a manufacturer of the non-volatile memory;

control circuitry that:

reads an initial page of boot data based on the boot ROM;

reads, from the non-volatile memory, the map to ascertain the location of the boot data stored in the nonconsecutive pages other than the initial page; and

loads the boot data from the nonconsecutive pages into the volatile memory using the map.

2. The system of claim 1 , wherein the map comprises a linked list, wherein each of the nonconsecutive pages includes metadata comprising at least one pointer pointing to another of the nonconsecutive pages.

3. The system of claim 2 , wherein the at least one pointer comprises a next page pointer that references a subsequent page of the nonconsecutive pages.

4. The system of claim 2 , wherein the at least one pointer comprises a prior page pointer that references a previous page of the nonconsecutive pages.

5. The system of claim 1 , wherein the map comprises a bitmap that describes the contents of the boot data storage area.

6. The system of claim 1 , wherein the boot data comprises a first stage bootloader.

7. The system of claim 1 , wherein the control circuitry verifies the presence of boot data in the nonconsecutive pages.

8. The system of claim 7 , wherein the control circuitry verifies the presence of boot data in each page by identifying a boot data indicator in each page.

9. The system of claim 7 , wherein the control circuitry verifies the presence of boot data in each page by employing an error correcting code on each page.

10. The system of claim 1 , the system further comprising:

a non-volatile memory interface operable to access the non-volatile memory responsive to requests by the control circuitry.

11. The system of claim 1 , wherein the non-volatile memory comprises NAND flash memory.

12. The system of claim 1 , wherein the control circuitry skips over bad blocks using the map.

13. An electronic device comprising:

a volatile memory;

a non-volatile memory comprising a plurality of pages;

a boot ROM for storing program code that configures the electronic device at bootup to:

read a first page of the non-volatile memory, the first page having boot data and a next page pointer that references a second page of the non-volatile memory, wherein the next page pointer is part of a map indicating nonconsecutive pages of the non-volatile memory in which the boot data is stored, wherein the map enables execution of the same program code regardless of a manufacturer of the non-volatile memory; and

control circuitry operative to:

receive the next page pointer from the first page;

read the second page of the non-volatile memory;

verify that the second page contains boot data; and

load the boot data from the first and second pages into the volatile memory.

14. The electronic device of claim 13 , wherein the electronic device signals a boot failure responsive to a failed verification of the second page.

15. The electronic device of claim 13 , wherein the electronic device:

reads an intervening page between the first page and the second page;

determines, from the next page pointer of the first page, that the intervening page is not the second page; and

discards the intervening page.

16. The electronic device of claim 13 , wherein the electronic device:

reads all of the pages in a boot data storage area of the non-volatile memory, including the first and second pages;

subsequent to reading all of the pages in the boot data storage area, examines the next page pointer of the first page; and

responsive to the examining, discards information obtained from any intervening pages between the first and second pages.

17. The electronic device of claim 13 , wherein the first page further includes a prior page pointer, and wherein the electronic device:

confirms that the prior page pointer indicates that boot data storage begins at the first page.

18. The electronic device of claim 13 , wherein the electronic device:

examines a prior page pointer included in the second page of the non-volatile memory;

verifies that the prior page pointer references back to the first page.

19. The electronic device of claim 13 , wherein the second page contains a second next page pointer that references a third page, and wherein the electronic device:

reads the third page of the non-volatile memory; and

verifies that the third page contains boot data.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 14, 2011
From: POST, DANIEL J.; BYOM, MATTHEW
To: APPLE INC.
Reel/Frame 026125/0830 →
Continuity (1)
Related Publication 20120265921A1 · Oct 18, 2012