# US 8,751,786 B1 · Method and integrated circuit for loading and executing firmware based on programing of one-time programmable memory

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 8,751,786 B1
- Document ID: US8751786B1
- Status: Granted
- Kind: B1
- Application number: 14/028,819
- Filed: 2013-09-17
- Granted: 2014-06-10
- Earliest claimed: 2006-12-18
- Assignees: Marvell International Ltd.
- Applicants: Marvell International Ltd.
- Inventors: Weishi Feng; Marcus Carlson; Pantas Sutardja; Bin Ni
- Web page: https://patentgrep.com/patent/US8751786B1

## CPC

- H04L 9/0897: {involving additional devices, e.g. trusted platform module [TPM], smartcard or USB}
- G06F 21/575: {Secure boot}
- H04L 9/3247: {involving digital signatures}
- H04L 2209/603: Digital right managament [DRM]
- H04L 2209/84: Vehicles
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

An integrated circuit includes a first memory, a second memory, a processor, and a descrambler. The first memory is configured to store a key. The first memory is a one-time-programmable memory. The processor is configured to: determine whether the first memory has been programmed; and in response to the first memory not having been programmed, (i) load firmware from a third memory into the second memory, and (ii) execute the firmware. The third memory is separate from the integrated circuit. The processor is also configured to, in response to the first memory having been programmed, load the firmware from the third memory into the second memory. The descrambler is configured to, in response to the first memory having been programmed, descramble the firmware based on the key.

## Claims

### Claim 1

An integrated circuit comprising:
a first memory configured to store a key, wherein the first memory is a one-time-programmable memory;
a second memory;
a processor configured to
determine whether the first memory has been programmed,
in response to the first memory not having been programmed, (i) load firmware from a third memory into the second memory, and (ii) execute the firmware, wherein the third memory is separate from the integrated circuit, and
in response to the first memory having been programmed, load the firmware from the third memory into the second memory; and
a descrambler configured to, in response to the first memory having been programmed, descramble the firmware based on the key.

### Claim 2 (depends on 1)

The integrated circuit of claim 1, wherein the processor is configured to, in response to the first memory having been programmed and prior to the loading of the firmware from the third memory into the second memory:
determine whether a digital signature of the firmware is verified;
if the signature of the firmware is verified, (i) load the firmware from the third memory into the second memory, and (ii) execute the firmware; and
if the signature of the firmware is not verified, cease operation of the integrated circuit.

### Claim 3 (depends on 1)

The integrated circuit of claim 1, wherein the second memory includes volatile memory.

### Claim 4 (depends on 1)

The integrated circuit of claim 1, wherein:
the second memory is configured to store a boot code; and
the processor is configured to, while booting up, (i) execute the boot code, and (ii) based on the boot code, determine whether the first memory has been programmed.

### Claim 5 (depends on 4)

The integrated circuit of claim 4, wherein the processor is configured to:
in response to the first memory not having been programmed based on the boot code, (i) load the firmware from the third memory into the second memory, and (ii) execute the firmware; and
in response to the first memory having been programmed based on the boot code, load the firmware from the third memory into the second memory for the descrambling of the firmware.

### Claim 6 (depends on 1)

The integrated circuit of claim 1, further comprising:
a fourth memory, wherein the fourth memory is one-time-programmable;
a fifth memory, wherein the fifth memory is one-time-programmable; and
a test interface (i) configured for testing the integrated circuit, and (ii) configured to permit signals to be transferred between the test interface and the processor when the test interface is enabled,
wherein the processor is configured to
prior to the loading of the firmware from the third memory into the second memory, determine whether the fourth memory has been programmed,
in response to the fourth memory not having been programmed, (i) enable the test interface, (ii) load the firmware from the third memory into the second memory, and (iii) execute the firmware, and
in response to the fourth memory having been programmed, (i) disable programmability of the fifth memory, (ii) load the firmware from the third memory into the second memory, and (iii) execute the firmware.

### Claim 7 (depends on 6)

The integrated circuit of claim 6, wherein the processor is configured to:
prior to the loading of the firmware from the third memory into the second memory, determine whether the fifth memory has been programmed; and
in response to the fifth memory not having been programmed, (i) disable programmability of the fifth memory, (ii) load the firmware from the third memory into the second memory, and (iii) execute the firmware.

### Claim 8 (depends on 6)

The integrated circuit of claim 6, further comprising an input circuit configured to receive a first password, wherein:
the fifth memory is configured to store a second password; and
in response to (i) each of the fourth memory and the fifth memory having been previously programmed and (ii) the first password matching the second password, the processor is configured to (i) enable the test interface, (ii) load the firmware from the third memory into the second memory, and (iii) execute the firmware.

### Claim 9 (depends on 8)

The integrated circuit of claim 8, wherein in response to (i) each of the fourth memory and the fifth memory having been programmed and (ii) the second password not matching the first password, the processor is configured to (i) refrain from enabling the test interface, (ii) load the firmware from the third memory into the second memory, and (iii) execute the firmware.

### Claim 10 (depends on 8)

The integrated circuit of claim 8, wherein the processor is configured to, in response to the second password matching the first password, enable programmability of the fifth memory.

### Claim 11 (depends on 6)

The integrated circuit of claim 6, further comprising an input circuit configured to receive a first password, wherein:
the fifth memory is configured to store a second password; and
wherein in response to (i) each of the fourth memory and the fifth memory having been programmed and (ii) the second password matching the first password, the processor is configured to (i) enable programmability of the fifth memory, (ii) load the firmware from the third memory into the second memory, and (iii) execute the firmware.

### Claim 12 (depends on 6)

The integrated circuit of claim 6, further comprising:
a sixth memory, wherein the sixth memory is a one-time-programmable memory; and
an input circuit configured to receive a first password,
wherein
the fifth memory is configured to store a second password, and
in response to each of the fourth memory, the fifth memory, and the sixth memory having been previously programmed, the processor is configured to (i) disable the test interface, (ii) load the firmware from the third memory into the second memory, and (iii) execute the firmware.

### Claim 13

A method comprising:
storing a key in a first memory, wherein the first memory is a one-time-programmable memory, wherein the first memory is implemented in an integrated circuit;
determining whether the first memory has been programmed;
in response to the first memory not having been programmed, (i) loading firmware from a third memory into a second memory, and (ii) executing the firmware, wherein the second memory is implemented in the integrated circuit, and wherein the third memory is separate from the integrated circuit; and
in response to the first memory having been programmed, (i) loading the firmware from the third memory into the second memory, and (ii) descrambling the firmware based on the key.

### Claim 14 (depends on 13)

The method of claim 13, further comprising, in response to the first memory having been programmed and prior to the loading of the firmware from the third memory into the second memory:
determining whether a digital signature of the firmware is verified;
if the signature of the firmware is verified, (i) loading the firmware from the third memory into the second memory, and (ii) executing the firmware; and
if the signature of the firmware is not verified, ceasing operation of the integrated circuit.

### Claim 15 (depends on 13)

The method of claim 13, wherein the second memory includes volatile memory.

### Claim 16 (depends on 13)

The method of claim 13, further comprising, while booting up:
executing a boot code stored in the second memory; and
based on the boot code, determining whether the first memory has been programmed.

### Claim 17 (depends on 16)

The method of claim 16, further comprising:
in response to the first memory not having been programmed based on the boot code, (i) loading the firmware from the third memory into the second memory, and (ii) executing the firmware; and
in response to the first memory having been programmed based on the boot code, loading the firmware from the third memory into the second memory for the descrambling of the firmware.

### Claim 18 (depends on 13)

The method of claim 13, further comprising:
when a test interface of the integrated circuit is enabled, permitting signals to be transferred between the test interface and a processor, wherein the processor is implemented in the integrated circuit;
prior to the loading of the firmware from the third memory into the second memory, determine whether a fourth memory has been programmed, wherein the fourth memory is one-time-programmable;
in response to the fourth memory not having been programmed, (i) enabling the test interface, (ii) loading the firmware from the third memory into the second memory, and (iii) execute the firmware; and
in response to the fourth memory having been programmed, (i) disabling programmability of a fifth memory, (ii) loading the firmware from the third memory into the second memory, and (iii) executing the firmware, wherein the fifth memory is one-time-programmable.

### Claim 19 (depends on 18)

The method of claim 18, further comprising:
prior to the loading of the firmware from the third memory into the second memory, determining whether the fifth memory has been programmed; and
in response to the fifth memory not having been programmed, (i) disabling programmability of the fifth memory, (ii) loading the firmware from the third memory into the second memory, and (iii) executing the firmware.

### Claim 20 (depends on 18)

The method of claim 18, further comprising:
receiving a first password; and
in response to (i) each of the fourth memory and the fifth memory having been previously programmed and (ii) the first password matching a second password, (i) enabling the test interface, (ii) loading the firmware from the third memory into the second memory, and (iii) executing the firmware, wherein the second password is stored in the fifth memory.
