# US 11,113,074 B2 · System and method for modem-directed application processor boot flow

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

- Number: US 11,113,074 B2
- Document ID: US11113074B2
- Status: Granted
- Kind: B2
- Application number: 16/688,978
- Filed: 2019-11-19
- Published: 2020-12-31
- Granted: 2021-09-07
- Earliest claimed: 2019-06-28
- Assignees: QUALCOMM Incorporated
- Applicants: Qualcomm Incorporated
- Inventors: Saurabh Gorecha; Naresh Kumar Sharma; Pravin Kumar; Dexter Tamio Chun; Christopher Kong Yee Chun
- Web page: https://patentgrep.com/patent/US11113074B2

## CPC

- G06F 1/3206: Monitoring of events, devices or parameters that trigger a change in power modality
- G06F 9/4418: {Suspend and resume; Hibernate and awake}
- G06F 9/4401: Bootstrapping (security arrangements therefor G06F21/57)
- G06F 9/4403: {Processor initialisation}
- G06F 9/4812: {by interrupt, e.g. masked}
- G06F 9/4881: {Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues}
- G06F 13/28: using burst mode transfer, e.g. direct memory access {DMA}, cycle steal (G06F13/32 takes precedence)
- H04L 9/0643: {Hash functions, e.g. MD5, SHA, HMAC or f9 MAC}
- H04L 9/0897: {involving additional devices, e.g. trusted platform module [TPM], smartcard or USB}
- H04L 9/3239: {involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD}
- H04L 9/3247: {involving digital signatures}
- Y02D 10/00: Energy efficient computing, e.g. low power processors, power management or thermal management
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)
- Y02D: CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE

## Abstract

Various embodiments of methods and systems for a modem-directed application processor boot flow in a portable computing device (“PCD”) are disclosed. An exemplary method includes an application processor that transitions into an idle state, such as a WFI state, for durations of time during a boot sequence that coincide with processing by a DMA engine and/or crypto engine. That is, the application processor may “sleep” while the DMA engine and/or crypto engine process workloads in response to instructions they received from the application processor.

## Claims

### Claim 1

A method for a modem-directed application processor boot sequence in a portable computing device (“PCD”), the method comprising:
initializing a direct memory access (“DMA”) engine for the boot sequence, wherein the DMA engine is configured to read data from a memory component;
initializing a crypto engine for the boot sequence, wherein the crypto engine is configured to calculate a hash according to a predetermined hash function;
reading with the DMA engine metadata and data segments associated with an image stored in the memory component and associated with the boot sequence;
calculating with the crypto engine hash values associated with the metadata and data segments; and
transitioning an application processor into an idle state for durations of time coinciding with at least one of reading with the DMA engine during the boot sequence and calculating with the crypto engine during the boot sequence.

### Claim 2 (depends on 1)

The method of claim 1, wherein the memory component is a non-volatile flash memory component.

### Claim 3 (depends on 1)

The method of claim 1, wherein the application processor is a heterogeneous, multi-core processor.

### Claim 4 (depends on 1)

The method of claim 1, wherein the idle state is a wait-for-interrupt (“WFI”) idle state.

### Claim 5 (depends on 1)

The method of claim 1, wherein the PCD comprises at least one of a cellular telephone, a satellite telephone, a personal digital assistant (“PDA”), a smartphone, a navigation device, a tablet, a smartbook, a media player and a laptop computer.

### Claim 6

A method for a modem-directed application processor boot flow in a portable computing device (“PCD”), the method comprising:
a. initializing a direct memory access (“DMA”) engine, wherein the DMA engine is configured to read data from a memory component;
b. initializing a crypto engine, wherein the crypto engine is configured to calculate a hash according to a predetermined hash function;
c. reading with the DMA engine metadata associated with an image stored in the memory component;
d. transitioning an application processor from an active processing state into an idle state;
e. calculating with the crypto engine a hash value associated with the metadata;
f. authenticating the metadata by validating the hash value and a signature associated with the metadata;
g. reading with the DMA engine a current segment of the image;
h. transitioning the application processor from an active processing state to an idle state;
i. calculating with the crypto engine a hash value associated with the current segment of the image;
j. reading with the DMA engine a next segment of the image;
k. authenticating the current segment of the image by validating the hash value and a signature associated with the current segment of the image;
l. transitioning the application processor from an active processing state to an idle state;
m. receiving with the application processor the next segment of the image from the DMA engine;
n. calculating with the crypto engine a hash value associated with the next segment of the image; and
o. repeating actions j through n until a last segment of the image is authenticated and then bringing a subsystem out of reset.

### Claim 7 (depends on 6)

The method of claim 6, wherein the memory component is a non-volatile flash memory component.

### Claim 8 (depends on 6)

The method of claim 6, wherein the application processor is a heterogeneous, multi-core processor.

### Claim 9 (depends on 6)

The method of claim 6, wherein the idle state is a wait-for-interrupt (“WFI”) idle state.

### Claim 10 (depends on 6)

The method of claim 6, wherein the PCD comprises at least one of a cellular telephone, a satellite telephone, a personal digital assistant (“PDA”), a smartphone, a navigation device, a tablet, a smartbook, a media player and a laptop computer.

### Claim 11

A computer system for modem-directed application processor boot sequence in a portable computing device (“PCD”), the system comprising:
an application processor configured to:
initialize a direct memory access (“DMA”) engine for the boot sequence, wherein the DMA engine is configured to read data from a memory component;
initialize a crypto engine for the boot sequence, wherein the crypto engine is configured to calculate a hash according to a predetermined hash function;
instruct the DMA engine to read metadata and data segments associated with an image stored in the memory component and associated with the boot sequence;
instruct the crypto engine to calculate hash values associated with the metadata and data segments; and
transition into an idle state for durations of time coinciding with at least one of reading by the DMA engine and calculating by the crypto engine.

### Claim 12 (depends on 11)

The system of claim 11, wherein the memory component is a non-volatile flash memory component.

### Claim 13 (depends on 11)

The system of claim 11, wherein the application processor is a heterogeneous, multi-core processor.

### Claim 14 (depends on 11)

The system of claim 11, wherein the idle state is a wait-for-interrupt (“WFI”) idle state.

### Claim 15 (depends on 11)

The system of claim 11, wherein the PCD comprises at least one of a cellular telephone, a satellite telephone, a personal digital assistant (“PDA”), a smartphone, a navigation device, a tablet, a smartbook, a media player and a laptop computer.

### Claim 16

A computer system for modem-directed application processor boot flow in a portable computing device (“PCD”), the system comprising:
an application processor configured to:
a. initialize a direct memory access (“DMA”) engine, wherein the DMA engine is configured to read data from a memory component;
b. initialize a crypto engine, wherein the crypto engine is configured to calculate a hash according to a predetermined hash function;
c. instruct the DMA engine to read metadata associated with an image stored in the memory component;
d. transition an application processor from an active processing state into an idle state;
e. instruct the crypto engine to calculate a hash value associated with the metadata;
f. authenticate the metadata by validating the hash value and a signature associated with the metadata;
g. instruct the DMA engine to read a current segment of the image;
h. transition the application processor from an active processing state to an idle state;
i. instruct the crypto engine to calculate a hash value associated with the current segment of the image;
j. instruct the DMA engine to read a next segment of the image;
k. authenticate the current segment of the image by validating the hash value and a signature associated with the current segment of the image;
l. transition from an active processing state to an idle state;
m. receive the next segment of the image from the DMA engine;
n. instructing the crypto engine to calculate a hash value associated with the next segment of the image; and
o. repeat actions j through n until a last segment of the image is authenticated and then bring a subsystem out of reset.

### Claim 17 (depends on 16)

The system of claim 16, wherein the memory component is a non-volatile flash memory component.

### Claim 18 (depends on 16)

The system of claim 16, wherein the application processor is a heterogeneous, multi-core processor.

### Claim 19 (depends on 16)

The system of claim 16, wherein the idle state is a wait-for-interrupt (“WFI”) idle state.

### Claim 20 (depends on 16)

The system of claim 16, wherein the PCD comprises at least one of a cellular telephone, a satellite telephone, a personal digital assistant (“PDA”), a smartphone, a navigation device, a tablet, a smartbook, a media player and a laptop computer.

### Claim 21

A computer system for a modem-directed application processor boot sequence in a portable computing device (“PCD”), the system comprising:
means for initializing a direct memory access (“DMA”) engine for the boot sequence, wherein the DMA engine is configured to read data from a memory component;
means for initializing a crypto engine for the boot sequence, wherein the crypto engine is configured to calculate a hash according to a predetermined hash function;
means for instructing the DMA engine to read metadata and data segments associated with an image stored in the memory component and associated with the boot sequence;
means for instructing the crypto engine to calculate hash values associated with the metadata and data segments; and
means for transitioning an application processor into an idle state for durations of time coinciding with at least one of reading by the DMA engine the metadata and calculating by the crypto engine during the boot sequence.

### Claim 22 (depends on 21)

The computer system of claim 21, wherein the memory component is a non-volatile flash memory component.

### Claim 23 (depends on 21)

The computer system of claim 21, wherein the application processor is a heterogeneous, multi-core processor.

### Claim 24 (depends on 21)

The computer system of claim 21, wherein the idle state is a wait-for-interrupt (“WFI”) idle state.

### Claim 25 (depends on 21)

The computer system of claim 21, wherein the PCD comprises at least one of a cellular telephone, a satellite telephone, a personal digital assistant (“PDA”), a smartphone, a navigation device, a tablet, a smartbook, a media player and a laptop computer.

### Claim 26

A computer system for a modem-directed application processor boot flow in a portable computing device (“PCD”), the method comprising:
a. means for initializing a direct memory access (“DMA”) engine, wherein the DMA engine is configured to read data from a memory component;
b. means for initializing a crypto engine, wherein the crypto engine is configured to calculate a hash according to a predetermined hash function;
c. means for instructing the DMA engine to read metadata associated with an image stored in the memory component;
d. means for transitioning an application processor from an active processing state into an idle state;
e. means for instructing the crypto engine to calculate a hash value associated with the metadata;
f. means for authenticating the metadata by validating the hash value and a signature associated with the metadata;
g. means for instructing the DMA engine to read a current segment of the image;
h. means for transitioning the application processor from an active processing state to an idle state;
i. means for instructing the crypto engine to calculate a hash value associated with the current segment of the image;
j. means for instructing the DMA engine to read a next segment of the image;
k. means for authenticating the current segment of the image by validating the hash value and a signature associated with the current segment of the image;
l. means for transitioning the application processor from an active processing state to an idle state;
m. means for receiving the next segment of the image from the DMA engine;
n. means for instructing the crypto engine to calculate a hash value associated with the next segment of the image; and
o. means for repeating actions j through n until a last segment of the image is authenticated and then bringing a subsystem out of reset.

### Claim 27 (depends on 26)

The computer system of claim 26, wherein the memory component is a non-volatile flash memory component.

### Claim 28 (depends on 26)

The computer system of claim 26, wherein the application processor is a heterogeneous, multi-core processor.

### Claim 29 (depends on 26)

The computer system of claim 26, wherein the idle state is a wait-for-interrupt (“WFI”) idle state.

### Claim 30 (depends on 26)

The computer system of claim 26, wherein the PCD comprises at least one of a cellular telephone, a satellite telephone, a personal digital assistant (“PDA”), a smartphone, a navigation device, a tablet, a smartbook, a media player and a laptop computer.

### Claim 31

A computer program product comprising a non-transitory computer usable medium having a computer readable program code embodied therein, said computer readable program code adapted to be executed to implement a method for a modem-directed application processor boot sequence in a portable computing device (“PCD”), said method comprising:
initializing a direct memory access (“DMA”) engine for the boot sequence, wherein the DMA engine is configured to read data from a memory component;
initializing a crypto engine for the boot sequence, wherein the crypto engine is configured to calculate a hash according to a predetermined hash function;
reading with the DMA engine metadata and data segments associated with an image stored in the memory component and associated with the boot sequence;
calculating with the crypto engine hash values associated with the metadata and data segments; and
transitioning an application processor into an idle state for durations of time coinciding with at least one of reading with the DMA engine during the boot sequence and calculating with the crypto engine during the boot sequence.

### Claim 32 (depends on 31)

The computer program product of claim 31, wherein the memory component is a non-volatile flash memory component.

### Claim 33 (depends on 31)

The computer program product of claim 31, wherein the application processor is a heterogeneous, multi-core processor.

### Claim 34 (depends on 31)

The computer program product of claim 31, wherein the idle state is a wait-for-interrupt (“WFI”) idle state.

### Claim 35 (depends on 31)

The computer program product of claim 31, wherein the PCD comprises at least one of a cellular telephone, a satellite telephone, a personal digital assistant (“PDA”), a smartphone, a navigation device, a tablet, a smartbook, a media player and a laptop computer.

### Claim 36

A computer program product comprising a non-transitory computer usable medium having a computer readable program code embodied therein, said computer readable program code adapted to be executed to implement a method for a modem-directed application processor boot flow in a portable computing device (“PCD”), said method comprising:
a. initializing a direct memory access (“DMA”) engine, wherein the DMA engine is configured to read data from a memory component;
b. initializing a crypto engine, wherein the crypto engine is configured to calculate a hash according to a predetermined hash function;
c. reading with the DMA engine metadata associated with an image stored in the memory component;
d. transitioning an application processor from an active processing state into an idle state;
e. calculating with the crypto engine a hash value associated with the metadata;
f. authenticating the metadata by validating the hash value and a signature associated with the metadata;
g. reading with the DMA engine a current segment of the image;
h. transitioning the application processor from an active processing state to an idle state;
i. calculating with the crypto engine a hash value associated with the current segment of the image;
j. reading with the DMA engine a next segment of the image;
k. authenticating the current segment of the image by validating the hash value and a signature associated with the current segment of the image;
l. transitioning the application processor from an active processing state to an idle state;
m. receiving with the application processor the next segment of the image from the DMA engine;
n. calculating with the crypto engine a hash value associated with the next segment of the image; and
o. repeating actions j through n until a last segment of the image is authenticated and then bringing a subsystem out of reset.

### Claim 37 (depends on 36)

The computer program product of claim 36, wherein the memory component is a non-volatile flash memory component.

### Claim 38 (depends on 36)

The computer program product of claim 36, wherein the application processor is a heterogeneous, multi-core processor.

### Claim 39 (depends on 36)

The computer program product of claim 36, wherein the idle state is a wait-for-interrupt (“WFI”) idle state.

### Claim 40 (depends on 36)

The computer program product of claim 36, wherein the PCD comprises at least one of a cellular telephone, a satellite telephone, a personal digital assistant (“PDA”), a smartphone, a navigation device, a tablet, a smartbook, a media player and a laptop computer.

### Claim 41

A method for a modem-directed application processor boot sequence in a portable computing device (“PCD”) and in remote communication with a server, the method comprising:
forming a network of one or more Internet of Things (IoT) devices, the PCD being one of the IoT devices;
a modem of the PCD receiving an instruction from the remote server;
the modem sending a wakeup signal to an application processor to execute a boot sequence;
the application processor initializing a direct memory access (“DMA”) engine for the boot sequence, wherein the DMA engine is configured to read data from a memory component;
the application processor initializing a crypto engine for the boot sequence, wherein the crypto engine is configured to calculate a hash according to a predetermined hash function;
the DMA engine reading metadata and data segments associated with an image stored in the memory component and associated with the boot sequence;
the crypto engine calculating hash values associated with the metadata and data segments; and
the application processor transitioning into an idle state for durations of time coinciding with at least one of reading with the DMA engine during the boot sequence and calculating with the crypto engine during the boot sequence.

### Claim 42 (depends on 41)

The method of claim 41, wherein the memory component is a non-volatile flash memory component.

### Claim 43 (depends on 41)

The method of claim 41, wherein the application processor is a heterogeneous, multi-core processor.

### Claim 44 (depends on 41)

The method of claim 41, wherein the idle state is a wait-for-interrupt (“WFI”) idle state.

### Claim 45

A computer system for modem-directed application processor boot sequence in a portable computing device (“PCD”), the system comprising:
a remote server in communication with one or more Internet of Things (IoT) devices;
the PCD comprising one of the IoT devices and having a modem configured to receive instructions from the remote server and, in response to the instructions, cause an application processor within the PCD to execute a boot sequence, the application processor configured to:
initialize a direct memory access (“DMA”) engine for the boot sequence, wherein the DMA engine is configured to read data from a memory component;
initialize a crypto engine for the boot sequence, wherein the crypto engine is configured to calculate a hash according to a predetermined hash function;
instruct the DMA engine to read metadata and data segments associated with an image stored in the memory component and associated with the boot sequence;
instruct the crypto engine to calculate hash values associated with the metadata and data segments; and
transition into an idle state for durations of time coinciding with at least one of reading by the DMA engine and calculating by the crypto engine.

### Claim 46 (depends on 45)

The system of claim 45, wherein the memory component is a non-volatile flash memory component.

### Claim 47 (depends on 45)

The system of claim 45, wherein the application processor is a heterogeneous, multi-core processor.

### Claim 48 (depends on 45)

The system of claim 45, wherein the idle state is a wait-for-interrupt (“WFI”) idle state.
