USPatent applicationPatented

Electronic device and code patching method

Granted 3 Oct 2023 · 1 office action

Life of the application

10 dated events
⤢ drag to zoom20222024202620282030203220342036203820402042ProsecutionOwnershipTerm & fees
ProsecutionOwnershipTerm & feeshover for detail · click to open

Abstract

An electronic device and a code patching method are provided. The electronic device includes a processor, a read-only memory (ROM), and a one-time programmable (OTP) memory. The ROM stores a boot code, and the boot code includes at least one checkpoint code segment. The OTP memory stores at least one patch code. The processor executes the boot code and queries whether there is a corresponding patch code in the OTP memory when the checkpoint code segment is executed, and if yes, executes the corresponding patch code.

Description

7 parts
BACKGROUND
›Technical Field

The instant disclosure relates to electronic devices, and in particular, refers to an electronic device and a code patching method.

›Related Art

Currently, after being booted up and powered on, a system on chip first executes a boot procedure to initialize a hardware device and establish a mapping graph of a memory space, to set the software and hardware environment of the system to an appropriate state, so as to facilitate subsequent calls to the operating system core. For security reasons, codes of the boot procedure are stored in a read-only memory (ROM), to prevent the codes from being tampered with. However, if an error is found in a boot code after system on chips are manufactured, the system on chips need to be re-manufactured, which consumes a lot of time, money and other resources.

›SUMMARY

An embodiment of the instant disclosure discloses an electronic device, including a processor, a primary ROM, and a supplementary ROM memory. The primary ROM stores a boot code, and the boot code includes at least one checkpoint code segment. The processor is coupled to the primary ROM and the supplementary ROM and configured to execute the boot code of the primary ROM to execute a boot procedure of the electronic device; when the at least one checkpoint code segment is executed by the processor in a boot procedure, checks whether a patch code corresponding to the executed checkpoint code segment exists in the supplementary ROM; and when the patch code corresponding to the executed checkpoint code segment exists in the supplementary ROM, executes the patch code.

An embodiment of the instant disclosure discloses a code patching method, performed by a processor in an electronic device. The code patching method includes: reading and loading a boot code stored in a primary ROM, to execute a boot procedure of the electronic device, wherein the boot code includes at least one checkpoint code segment; and checking whether a patch code corresponding to the executed checkpoint code segment exists in a supplementary ROM when the at least one checkpoint code segment is executed by the processor in the boot procedure; and executing the corresponding patch code in the supplementary ROM when the patch code corresponding to the executed checkpoint code segment exists in the supplementary ROM.

According to the electronic device and the code patching method in some embodiments of the instant disclosure, the boot code stored in the ROM can be patched, and especially, a code segment before a hardware initialization code segment can be patched.

›BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a schematic diagram of an electronic device according to an embodiment of the instant disclosure.

FIG. 2 is a flowchart of a code patching method according to an embodiment of the instant disclosure.

FIG. 3 is a schematic diagram of a code according to an embodiment of the instant disclosure.

FIG. 4 is a flowchart of a boot procedure according to an embodiment of the instant disclosure.

›DETAILED DESCRIPTION · 1 of 2

FIG. 1 is a schematic diagram of an electronic device according to an embodiment of the instant disclosure. The electronic device may be a system on chip (SOC) or an electronic device including the SOC. The electronic device includes: a processor 10 , a primary ROM 20 , a supplementary ROM 30 , and a bus 40 . The processor 10 is coupled to the primary ROM 20 and the supplementary ROM 30 through the bus 40 . The primary ROM 20 stores a boot code. The boot code includes at least one checkpoint code segment. The supplementary ROM 30 is provided for storing at least one patch code. That is, a programmer can place the checkpoint code segment in one or more locations in the boot code. When the programmer finds that the boot code needs to be corrected, the programmer can write a patch code and stores the patch code into the supplementary ROM 30 . The patch code is used for correcting part of code in the boot code. In other words, the supplementary ROM 30 and the boot code are set to coordinate with each other to be capable of executing the patch code that is subsequently stored in the supplementary ROM 30 . That is, when the design of the electronic device is completed, the supplementary ROM 30 has not stored the patch code, but the boot code has included the checkpoint code segment to check whether a patch code exists in the supplementary ROM 30 .

In some embodiments, the primary ROM 20 is a ROM.

In some embodiments, the supplementary ROM 30 is a one-time programmable (OTP) ROM.

In some embodiments, the processor 10 , the primary ROM 20 and the supplementary ROM 30 are located within a system-on-chip (SOC).

FIG. 2 is a flowchart of a code patching method according to an embodiment of the instant disclosure. The code patching method is performed by the processor 10 . First, the processor 10 reads and loads a boot code stored in the primary ROM 20 , to execute a boot procedure of an electronic device (step S 410 ). In step S 420 , the processor 10 checks whether a patch code corresponding to the executed checkpoint code segment exists in the supplementary ROM 30 when the at least one checkpoint code segment is executed by the processor in the boot procedure. If yes (i.e., the patch code corresponding to the executed checkpoint code segment exists in the supplementary ROM 30 ), the processor 10 executes the corresponding patch code in the supplementary ROM 30 (step S 430 ), and returns to continue to execute the boot code after executing the patch code. If not, the processor 10 continues to execute the boot code segment after the checkpoint code segment. In this way, an error code segment in the boot code stored in the primary ROM 20 can be patched (i.e., the error code segment is skipped without execution).

FIG. 3 is a schematic diagram of a code according to an embodiment of the instant disclosure. In FIG. 3 , an example of the boot code stored in the primary ROM 20 is given, and a code segment 22 at a storage address 21 of the primary ROM 20 is presented. The processor 10 executes the boot code from a start address (0000000 here) and down in sequence. When the first checkpoint code segment (checkpoint (ID1)) is executed, the processor 10 checks whether a corresponding patch code exists in the supplementary ROM 30 . Specifically, the supplementary ROM 30 includes a first storage area 31 and a second storage area 32 . A look-up table is stored in the first storage area, and the patch code is stored in the second storage area. The look-up table includes at least one first identifier and at least one corresponding first address. Here, “ID1” is taken as the first identifier for example, and an “address B” is taken as the first address for example. The first checkpoint code segment indicates that there is a second identifier (ID 1 here). Therefore, when finding the first identifier (ID 1 here) corresponding to the second identifier in the look-up table, the processor 10 obtains the first address (that is, the address B) corresponding to the first identifier. Next, the processor 10 executes the corresponding patch code (here, an example of extracting stacked data is given) at the first address (that is, the address B) of the supplementary ROM 30 . The first address is located in the second storage area 32 . The patch code comprises a return address (00000018 here) of the primary ROM 20 , and a program counter is set to the return address, so that the processor 10 continues to execute the boot code located after the return address of the primary ROM 20 . Therefore, the processor 10 can skip the error code segment in the boot code and continue the execution at the specified return address. For example, code segments at an address 00000010 and an address 00000014 are skipped here. That is, part of code in the boot code is skipped and not executed by the processor 10 according to the checkpoint code segment and the patch code. However, in the instant disclosure, it is not necessary to skip some code segments. After executing the patch code, the processor 10 may also return to a next address of the executed checkpoint code segment, to continue to execute the subsequent boot code.

Here, a code example of the foregoing checkpoint function is shown as follows, which is used for determining whether there is an address (a variable addr) corresponding to the second identifier in the supplementary ROM 30 . If yes, the processor 10 obtains and jumps to the address corresponding to the second identifier for execution.

type status checkpoint(arg ID)

{

address_type add;

addr=search_supplementory_rom(ID);

if(add!=NULL)

jump(addr);

return(OK);

else

return(NOT_FOUND);

}

An example of the search_supplementory_rom function listed before is shown as follows, which is used for searching whether there is a first identifier (a variable id_supplement) corresponding to a second identifier (a variable ID) in the first storage area 31 of the supplementary ROM 30 in which the look-up table is stored. If yes, the processor 10 returns to a first address (a variable addr) corresponding to the first identifier.

›DETAILED DESCRIPTION · 2 of 2

int search_supplementory_rom(arg ID)

{

unit_32 id_supplement, addr=NULL;

for(i=0; i<maxmun_checkpoint’i++) {

get_id(id_supplement);

if(ID== id_supplement) {

addr=get_offset(id_supplement);

return addr;

}

}

}

FIG. 4 is a flowchart of a boot procedure according to an embodiment of the instant disclosure. The boot procedure is mainly divided into two stages. A first stage S 1 includes step S 110 to step S 140 , and a second stage S 2 includes step S 210 to step S 240 . The first stage S 1 is implemented by assembly language, and the second stage S 2 is implemented by C language. Step S 110 is setting a system register and a memory environment. Step S 120 is setting a block started by symbol (BSS) segment in a manner of clearing the BSS segment to zero. Step S 130 is setting a stack. Step S 140 is jumping to a C language environment and entering the second stage S 2 . Step S 210 is initializing a system timer clock. Step S 220 is initializing an early platform driver. Step S 230 is initializing a driver, such as a universal asynchronous receiver/transmitter (UART), an interrupt controller, a watchdog, a flash memory, or an embedded multimedia card (eMMC). Step S 240 is executing other codes. Here, it should be noted that, if the execution of the patch code located in the supplementary ROM 30 is triggered by an interrupt manner, it is required to wait until the initialization of the interrupt controller is completed in step S 230 . In other words, in this way, only a code segment after the initialization of the interrupt controller is completed can be patched, and a code segment before the initialization of the interrupt controller cannot be patched. However, the instant disclosure does not adopt the interrupt manner, and the code can be patched in step S 210 and the subsequent steps. That is, the checkpoint code segment may be set before a hardware initialization code segment corresponding to step S 230 (a hardware initialization step), and the patch code corresponding to the checkpoint code segment may be executed before the hardware initialization step is performed. In some embodiments, the checkpoint code segment may be set before an interrupt initialization code segment that is in the hardware initialization code segment. However, the instant disclosure does not limit that the checkpoint code segment needs to be set before the hardware initialization code segment, and the checkpoint code segment may be set after the hardware initialization code segment, which depends on actual needs.

In summary, according to the electronic device and the code patching method in some embodiments of the instant disclosure, the boot code stored in the primary ROM 20 can be patched, and especially, a code segment before the hardware initialization code segment can be patched.

Claims as granted

18 claims

Log in to read the claims of this application.

Log in to unlock

Classifications

3 codes
IPC · International Patent Classification
Section G — Physics
  • G06F8/65
  • G06F8/71
  • G06F9/4401

Claim changes

Soon
Coming soonHow the claims changed between publication and grant

See which claims were amended, added or cancelled during examination, with every added and removed word marked.

AmendedAddedCancelledUnchanged

The published claims of this application are not paired with the granted ones in what we hold.

File wrapper

⤢ drag to zoomJan 2022Apr 2022Jul 2022Oct 2022Jan 2023Apr 2023Jul 2023Oct 2023USPTOApplicantNon-final rejectionResponse after non-finalNotice of allowance
USPTOApplicanthover for detail · click to open
Pendency
1.7 y
614 days filing → grant
Office actions
1
non-final + final
Responses
1
no RCE
Examiner
Geoffrey R St Leger
art unit 2192 · TC 2100
Citations: 9 back · 0 forward

See the full prosecution history — every USPTO and applicant action on this file, in order.

Log in to unlock

Documents

Log in to open the documents of this file: the application as filed, every office action and response, the notice of allowance.

Log in to unlock

Chain of title

⤢ drag to zoom20222024202620282030203220342036203820402042Owner 2liens, releases & corrections
Titlehover for detail · click to open

See the full assignment history — every owner this patent has passed through, with recordation dates and reel/frame numbers.

Log in to unlock