Flexible one-time programmable (OTP) patch processing
Patent Information
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- Filing Date
- 2025-02-08
- Publication Date
- 2026-08-13
Smart Images

Figure CN2025076409_13082026_PF_FP_ABST
Abstract
Description
FLEXIBLE ONE-TIME PROGRAMMABLE (OTP) PATCH PROCESSINGTECHNICAL FIELD
[0001] Aspects of the present disclosure relate generally to integrated circuits, and more particularly, to integrated circuits for improving processing systems such as may be used in system on chips (SoCs) . Some features may enable and provide improved an improved process for patching the contents of the integrated circuits. INTRODUCTION
[0002] A system on chip (SoC) includes code stored in a read-only memory (ROM) . Example code stored in a ROM includes pre-boot loader (PBL) and other bootstrapping instructions. Storing the PBL and other bootstrapping instructions in ROM is preferred for security reasons because once the SoC is manufactured, the ROM cannot be changed. Therefore, instructions stored in ROM are generally considered to be secure and trusted code. The read-only nature of the instructions, while providing a level of security and trust regarding the instructions, also complicates correction of any errors in the instructions identified after manufacturing.
[0003] A patching process is provided to allow replacement of instructions and / or data from the ROM to correct errors identified after manufacturing. When a processor boots up after a power-down or reset, an initialization process can include patching areas of ROM on the SoC with instructions and / or data that corrects known problems or adds additional capability. To implement ROM code patching without re-masking, a chip manufacturer programs patch code and configuration instructions into a one-time programmable (OTP) memory that resides on the SoC.
[0004] The processor performs the patching process using an OTP Patch that includes the information (e.g., instructions and / or data) that modifies the processor behavior. The OTP Patch is conventionally formatted with an OTP Header that is 4 bytes in length followed by the OTP Patch that is word-aligned in memory. The OTP Header conventionally includes a SSID field that is two bits in length, followed by a good length value that is 6 bits in length, followed by a bad length value that is 5 bits in length, and finally followed by a bad address value that is 19 bits in length. BRIEF SUMMARY OF SOME EXAMPLES
[0005] The following summarizes some aspects of the present disclosure to provide a basic understanding of the discussed technology. This summary is not an extensive overview of all contemplated features of the disclosure and is intended neither to identify key or critical elements of all aspects of the disclosure nor to delineate the scope of any or all aspects of the disclosure. Its sole purpose is to present some concepts of one or more aspects of the disclosure in summary form as a prelude to the more detailed description that is presented later.
[0006] The amount of space available in this one-time programmable (OTP) memory that is used for patching the System on Chip (SoC) is limited, particularly when considered in comparison to the sizes of user memory available today. For example, the OTP memory space is often measured in units of bytes, whereas user memory, such as flash memory, is often measured in units of trillions of bytes (referred to as terabytes or TBs) .
[0007] The OTP memory of the SoC may include one or more uncommitted sectors at the time of manufacturing alongside the sectors that store existing instructions and / or data. To add or replace information in the OTP memory, the patching process places new information (e.g., the instructions and / or data) into an unused memory sector of the OTP memory and uses control logic to adjust the execution flow for the SoC to access the new information at the appropriate time.
[0008] The conventional OTP Patch format described above is inefficient at using the limited amount of space available for the patching process, and further limits the functionality available during the patching process. The techniques of this disclosure address the limits of the conventional OTP Patch and patching process to provide improved flexibility, improved functionality, and more efficient operation that addresses some or all of the limits of the conventional process described above, while also addressing other challenges and limits in the patching process.
[0009] Shortcomings mentioned here are only representative and are included to highlight problems that the inventors have identified with respect to existing devices and sought to improve upon. Aspects of devices described below may address some or all of the shortcomings as well as others known in the art. Aspects of the improved devices described herein may present other benefits than, and be used in other applications than, those described above.
[0010] Additional flexibility may be provided in a processor by supporting different OTP Patch formats within the patching process. For example, in some aspects, a method of operating a processor includes receiving, by the processor, a one-time programmable (OTP) patch for replacing a portion of information in a pre-boot loader (PBL) . Subsequently, the method may include determining, by the processor, a format of the OTP patch based on an indicator in one or more bits of the OTP Patch. The processor may then apply the OTP patch based on the format of the OTP patch according to the indicator. Determining the format of the OTP patch as part of the patching process allows the processor to support different OTP patch formats, and each OTP patch format may be designed to address different types of corrections and / or functionality enhancements. OTP patches disclosed in embodiments of this disclosure may also be used for security and to be able to store data before the bootloader starts and after a power down of the device.
[0011] In some embodiments, the processor may recognize a first OTP patch format corresponding to a format for a long patch. The first format may be recognized by identifying a 2-bit flag of ‘00’ in the first two bits of the OTP header or by recognizing another indicator, which may be another 2-bit flag such as ‘01’ , ‘10’ , or ‘11’ , or which may be a 1-bit flag, 3-bit flag, 4-bit flag, or other sized or type of indicator. The OTP header may be 4 bytes in size. The OTP Header may also include a bad address value of 14 bits following the indicator, a bad length value of 4 bits following the bad addresses bits, and followed by a good length value of 12 bits. Information for the OTP patch follows the OTP header in half-word aligned data, which in some embodiments may be as long as 8, 192 bytes.
[0012] In some embodiments, the processor may recognize a second OTP patch format corresponding to a format for a short patch. The second format may be recognized by identifying a 2-bit flag of ‘01’ in the first two bits of the OTP header or by recognizing another indicator, which may be another 2-bit flag such as ‘00’ , ‘10’ , or ‘11’ , or which may be a 1-bit flag, 3-bit flag, 4-bit flag, or other sized or type of indicator. The OTP header may be 3 bytes in size. The OTP Header may also include a bad address value of 14 bits following the indicator, a bad length value of 4 bits following the bad addresses bits, and followed by a good length value of 4 bits. Information for the OTP patch follows the OTP header in half-word aligned data, which in some embodiments may be as long as 30 bytes.
[0013] In some embodiments, the processor may recognize a third OTP patch format corresponding to a format for an instruction patch. The third format may be recognized by identifying a 2-bit flag of ‘10’ in the first two bits of the OTP header or by recognizing another indicator, which may be another 2-bit flag such as ‘00’ , ‘01’ , or ‘11’ , or which may be a 1-bit flag, 3-bit flag, 4-bit flag, or other sized or type of indicator. The OTP header may be 2 bytes in size. The OTP Header may also include a good length value of 6 bits following the indicator, and a bad offset value of 8 bits following the good length value. Information for the OTP patch follows the OTP header in half-word aligned data, which in some embodiments may be as long as 126 bytes.
[0014] In some embodiments, the processor may recognize a fourth OTP patch format corresponding to a format for dropping information, such as removing certain instructions that may correspond to unfixable errors. The fourth format may be recognized by identifying a 2-bit flag of ‘11’ in the first two bits of the OTP header or by recognizing another indicator, which may be another 2-bit flag such as ‘00’ , ‘01’ , or ‘10’ , or which may be a 1-bit flag, 3-bit flag, 4-bit flag, or other sized or type of indicator. The OTP header may be 1 byte in size. The OTP Header may also include a bad index value of 4 bits following the indicator, and a reserved portion of bits within the remainder of the bits in the OTP header. In this format, no information may follow the OTP header because the OTP patch includes only the index of the bad instruction to remove from the instructions (which may be an index to a bad instruction in a previously-applied OTP patch) .
[0015] Although four particular OTP patch formats have been described, a processor may be configured to support some subcombination of the four formats and still provide additional flexibility and / or functionality through the use of the indicator encoded in the OTP header.
[0016] In one aspect of the disclosure, a method includes receiving, by a processor, a one-time programmable (OTP) patch from the memory; determining, by the processor, a format of the OTP patch based on an indicator in one or more bits of the OTP patch; and applying, by the processor, the OTP patch to the ROM code based on the format of the OTP patch according to the indicator.
[0017] In an additional aspect of the disclosure, an apparatus includes at least one processor and a memory coupled to the at least one processor. The at least one processor is configured to perform operations including receiving, by a processor, a one-time programmable (OTP) patch from the memory; determining, by the processor, a format of the OTP patch based on an indicator in one or more bits of the OTP patch; and applying, by the processor, the OTP patch to the ROM code based on the format of the OTP patch according to the indicator.
[0018] In an additional aspect of the disclosure, an apparatus includes means for receiving, by a processor, a one-time programmable (OTP) patch from the memory; means for determining, by the processor, a format of the OTP patch based on an indicator in one or more bits of the OTP patch; and means for applying, by the processor, the OTP patch to the ROM code based on the format of the OTP patch according to the indicator.
[0019] In an additional aspect of the disclosure, a non-transitory computer-readable medium stores instructions that, when executed by at least one processor, cause the processor to perform operations. The operations include receiving, by a processor, a one-time programmable (OTP) patch from the memory; determining, by the processor, a format of the OTP patch based on an indicator in one or more bits of the OTP patch; and applying, by the processor, the OTP patch to the ROM code based on the format of the OTP patch according to the indicator.
[0020] The integrated circuits and System on Chips (SoCs) described herein may be used for processing of various kinds of data, including audio signal processing, video processing, artificial intelligence (AI) processing, mathematical computations, database processing, image processing, and other kinds of data processing. These integrated circuits and / or SoCs can be incorporated into a wide variety of devices. By way of example, they may be incorporated into stand-alone audio devices, such as entertainment devices and personal media players, wireless communication device handsets such as mobile telephones, cellular or satellite radio telephones, personal digital assistants (PDAs) , tablets, gaming devices, computing devices such as webcams, video surveillance cameras, or other devices that process data using processing circuitry (e.g., application specific integrated circuits (ASICs) , digital signal processors (DSP) , graphics processing unit (GPU) , or central processing units (CPU) ) .
[0021] In some aspects, a device may include a digital signal processor or a processor (e.g., an application processor) including specific functionality for data processing. Operations on different kinds of data may be performed by different processors, or various operations may be split between the various data processing circuitry (e.g., ASICs, DSP, GPU, CPU, NPU) . In some embodiments, the methods and techniques disclosed herein may be adapted for use in a neural signal processor (NSP) in which one or more parameters of data processing are controlled based on output from a machine learning (ML) model executed by the NSP.
[0022] Other aspects, features, and implementations will become apparent to those of ordinary skill in the art, upon reviewing the following description of specific, exemplary aspects in conjunction with the accompanying figures. While features may be discussed relative to certain aspects and figures below, various aspects may include one or more of the advantageous features discussed herein. In other words, while one or more aspects may be discussed as having certain advantageous features, one or more of such features may also be used in accordance with the various aspects. In similar fashion, while exemplary aspects may be discussed below as device, system, or method aspects, the exemplary aspects may be implemented in various devices, systems, and methods.
[0023] The method may be embedded in a computer-readable medium as computer program code comprising instructions that cause a processor to perform the steps of the method. In some embodiments, the processor may be part of a mobile device including a first network adaptor configured to transmit data, such as images or videos (with associated or embedded sounds) in a recording or as streaming data, over a first network connection of a plurality of network connections; and a processor coupled to the first network adaptor and the memory. The processor may cause the transmission of output image frames described herein over a wireless communications network such as a 5G NR communication network.
[0024] The foregoing has outlined, rather broadly, the features and technical advantages of examples according to the disclosure in order that the detailed description that follows may be better understood. Additional features and advantages will be described hereinafter. The conception and specific examples disclosed may be readily utilized as a basis for modifying or designing other structures for carrying out the same purposes of the present disclosure. Such equivalent constructions do not depart from the scope of the appended claims. Characteristics of the concepts disclosed herein, both their organization and method of operation, together with associated advantages will be better understood from the following description when considered in connection with the accompanying figures. Each of the figures is provided for the purposes of illustration and description, and not as a definition of the limits of the claims.
[0025] While aspects and implementations are described in this application by illustration to some examples, those skilled in the art will understand that additional implementations and use cases may come about in many different arrangements and scenarios. Innovations described herein may be implemented across many differing platform types, devices, systems, shapes, sizes, and packaging arrangements. For example, aspects and / or uses may come about via integrated chip implementations and other non-module-component based devices (e.g., end-user devices, vehicles, communication devices, computing devices, industrial equipment, retail / purchasing devices, medical devices, artificial intelligence (AI) -enabled devices, etc. ) . While some examples may or may not be specifically directed to use cases or applications, a wide assortment of applicability of described innovations may occur. Implementations may range in spectrum from chip-level or modular components to non-modular, non-chip-level implementations and further to aggregate, distributed, or original equipment manufacturer (OEM) devices or systems incorporating one or more aspects of the described innovations. In some practical settings, devices incorporating described aspects and features may also necessarily include additional components and features for implementation and practice of claimed and described aspects. It is intended that innovations described herein may be practiced in a wide variety of devices, chip-level components, systems, distributed arrangements, end-user devices, etc. of varying sizes, shapes, and constitution.BRIEF DESCRIPTION OF THE DRAWINGS
[0026] A further understanding of the nature and advantages of the present disclosure may be realized by reference to the following drawings. In the appended figures, similar components or features may have the same reference label. Further, various components of the same type may be distinguished by following the reference label by a dash and a second label that distinguishes among the similar components. If just the first reference label is used in the specification, the description is applicable to any one of the similar components having the same first reference label irrespective of the second reference label.
[0027] Figure 1 shows a block diagram of a system-on-chip (SoC) configured for performing signal processing according to one or more aspects of this disclosure.
[0028] Figure 2 is a block diagram illustrating an example implementation of aspects of this disclosure in a processing system for a mobile device according to one or more aspects of the disclosure.
[0029] Figure 3 shows a flow chart of an example method for flexible patching during pre-boot loading using different OTP formats according to one or more aspects of this disclosure.
[0030] Figures 4A-D are block diagrams illustrating example OTP patch formats for a central processing unit (CPU) according to one or more aspects of the disclosure.
[0031] Like reference numbers and designations in the various drawings indicate like elements.DETAILED DESCRIPTION
[0032] The present disclosure provides systems, apparatus, methods, and computer-readable media that support improved integrated circuit operation, including techniques for patching software, particularly software embedded as firmware in an integrated circuit such as a System on Chip (SoC) . Patches may include modifying operation of the firmware or other software (such as pre-boot loaders) executed by one or more processors or controllers of the SoC. The patches may be intended for one-time programmable (OTP) operation, which may include writing information (e.g., instructions and / or data) to one-time programmable memory of the integrated circuit. The OTP patch may have a flexible format to accommodate different formats of data, which may be used to improve efficiency when using the OTP patch for different purposes. An indicator is included in the OTP patch to inform the processor of the format of data within the OTP patch, such as a format for an OTP patch header within the OTP patch.
[0033] Particular implementations of the subject matter described in this disclosure may be implemented to realize one or more of the following potential advantages or benefits. In some aspects, the present disclosure provides techniques for more efficient storage of OTP patches. For example, the different formats may accommodate different sized OTP patch headers, which reduce wasted number of bits that may go unused in a fixed-format OTP path. As another example, the different formats may accommodate additional functionality, such as longer patches, shorter patches, instruction replacement patches, and / or OTP patch removals in a flexible, efficient manner not achievable with a fixed-format OTP patch. The reduced size of OTP patches according to some embodiments of the disclosure allow more OTP patches to be applied to an integrated circuit with the same amount of available OTP memory, which may enable consumer devices to be updated for a longer period of time before security and functionality become concerns for their operation.
[0034] The detailed description set forth below, in connection with the appended drawings to which the text references, is intended as a description of various embodiments and is not intended to limit the scope of the disclosure. Rather, the detailed description includes specific details for the purpose of providing a thorough understanding of the subject matter of this disclosure. It will be apparent to those skilled in the art that these specific details are not required in every case and that, in some instances, well-known structures and components are shown in block diagram form for clarity of presentation.
[0035] In the description of embodiments herein, numerous specific details are set forth, such as examples of specific components, circuits, and processes to provide a thorough understanding of the present disclosure. The term “coupled” as used herein means connected directly to or connected through one or more intervening components or circuits. Also, in the following description and for purposes of explanation, specific nomenclature is set forth to provide a thorough understanding of the present disclosure. However, it will be apparent to one skilled in the art that these specific details may not be required to practice the teachings disclosed herein. In other instances, well known circuits and devices are shown in block diagram form to avoid obscuring teachings of the present disclosure.
[0036] Some portions of the detailed descriptions which follow are presented in terms of procedures, logic blocks, processing, and other symbolic representations of operations on data bits within a computer memory. In the present disclosure, a procedure, logic block, process, or the like, is conceived to be a self-consistent sequence of steps or instructions leading to a desired result. The steps are those requiring physical manipulations of physical quantities. Usually, although not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated in a computer system.
[0037] Figure 1 shows a block diagram of a system-on-chip (SoC) configured for performing signal processing according to one or more aspects of this disclosure. The SoC 100 may include several components coupled together through a bus 102, which may be a network-on-a-chip (NoC) or a plurality of NOCs interconnecting various components. For example, although Figure 1 illustrates several components coupled to the bus 102, the several components may be coupled to different busses with additional busses connecting the different busses to provide a path for communication between the components.
[0038] One example component in the SoC 100 is a DSP 112 for signal processing. The DSP 112 may process audio signals received from microphones 130A, 130B, and 130C of microphone array 130. The DSP 112 may include hardware customized for performing a limited set of operations on specific kinds of data. For example, a DSP may include transistors coupled together to perform operations on streaming data and use memory architectures and / or access techniques to fetch multiple data or instructions concurrently. Such configurations may allow the DSP 112 to operate on real-time data, such as video data, audio data, or modem data, in a power-efficient manner.
[0039] The SoC 100 also includes a CPU 104 and a memory 106 storing instructions 108 (e.g., a memory storing processor-readable code or a non-transitory computer-readable medium storing instructions) that may be executed by a processor of the SoC 100. The CPU 104 may be a single central processing unit (CPU) or a CPU cluster comprising two or more cores such as core 104A. The CPU 104 may include hardware capable of performing generic operations on many kinds of data, such as hardware capable of executing instructions from the Advanced RISC Machines instruction set, such as ARMv8 and ARMv9. For example, a CPU 104 may include transistors coupled together to perform operations for supporting executing an operating system and user applications (e.g., a camera application, a multimedia application, a gaming application, a productivity application, a messaging application, a videocall application, an audio recording application, a video recording application) . The CPU 104 may execute instructions 108 retrieved from the memory 106. In some embodiments, the CPU 104 executing an operating system may coordinate execution of instructions by various components within the SoC 100. For example, the CPU 104 may retrieve instructions 108 from memory 106 and execute the instructions on the DSP 112.
[0040] The SoC 100 may further include a NSP 124 for executing machine learning (ML) models relating to multimedia applications. The NSP 124 may include hardware configured to perform and accelerate convolution operations involved in executing machine learning algorithms. For example, the NSP 124 may improve performance when executing predictive models such as artificial neural networks (ANNs) (including multilayer feedforward neural networks (MLFFNN) , the recurrent neural networks (RNN) , and / or the radial basis functions (RBF) ) . The ANN executed by the NSP 124 may access predefined training weights stored in the memory 106 for performing operations on user data.
[0041] The SoC 100 may be coupled to a display 114 for interacting with a user. The SoC 100 may also include a GPU 126 for rendering images on the display 114. In some embodiments, the CPU 104 may perform rendering to the display 114 without a GPU 126. In some embodiments, the GPU 126 may be configured to execute instructions for performing operations unrelated to rendering images, such as for processing large volumes of datasets in parallel.
[0042] The SoC 100 may include an integrated circuit, such as included in one of the DSP 112, CPU 104, NSP 124, GPU 126, to perform bootload operations and / or patch operations. For example, a program such as a bootloader may execute to configure a processor to begin executing operating system code. The bootload operations may include executing patching functionality to retrieve OTP patches that modify the behavior of original ROM code accessible by the processor and applying the patches such that the processor executes a patched version of the original ROM code rather than the original ROM code. For example, a OTP patch may be applied when a potential security concern or erroneous behavior is identified with the original ROM code.
[0043] Processing algorithms, techniques, and methods may be executed by at least one processor of the SoC 100, which may include execution by all steps on one of the processors (e.g., DSP 112, CPU 104, NSP 124, GPU 126) or may include execution of steps across a combination of one or more of the processors (e.g., DSP 112, CPU 104, NSP 124, GPU 126) . In some embodiments, at least one of the DSP 112 or the CPU 104 executes instructions to perform various operations described herein, including applying OTP patches by determining a format of the OTP patch prior to applying the OTP patch and processing the OTP patch information in accordance with the determined format.
[0044] Input / output components may be coupled to the SoC 100 through a hub 116 for input / output (I / O) devices. An example of a hub 116 is an interconnect to a peripheral component interconnect express (PCIe) bus. Example components coupled to hub 116 may be components used for interacting with a user, such as a touch screen interface and / or physical buttons. Some components coupled to hub 116 may also include network interfaces for communicating with other devices, including a wide area network (WAN) adaptor (e.g., WAN adaptor 152) , a local area network (LAN) adaptor (e.g., LAN adaptor 153) , and / or a personal area network (PAN) adaptor (e.g., PAN adaptor 154) . A WAN adaptor 152 may be a 4G LTE or a 5G NR wireless network adaptor. A LAN adaptor 153 may be an IEEE 802.11 WiFi wireless network adapter. A PAN adaptor 154 may be a Bluetooth wireless network adaptor. Each of the WAN adaptor 152, LAN adaptor 153, and / or PAN adaptor 154 may be coupled to an antenna that may be shared by each of the WAN adaptor 152, LAN adaptor 153, and PAN adaptor 154, or coupled to multiple antennas configured for primary and diversity reception and / or configured for receiving specific frequency bands. In some embodiments, the WAN adaptor 152, LAN adaptor 153, and / or PAN adaptor 154 may share circuitry, such as portions of a radio frequency front end (RFFE) .
[0045] Audio circuitry 156 may be integrated in SoC 100 as dedicated circuitry for coupling the SoC 100 to a speaker 120 external to the SoC 100, which may be a transducer such as a speaker (either internal to or external to a device incorporating the SoC 100) or headphones. The audio circuitry 156 may include coder / decoder (CODEC) functionality for processing digital audio signals. The audio circuitry 156 may further include one or more amplifiers (e.g., a class-D amplifier) for driving a transducer coupled to the SoC 100 for outputting sounds generated during execution of applications by the SoC 100. Functionality related to audio signals described herein may be performed by a combination of the audio circuitry 156 and / or other processors of the SoC (e.g., CPU 104, DSP 112, GPU 126, NSP 124) .
[0046] The SoC 100 may couple to external devices outside the package of the SoC 100. For example, the SoC 100 may be coupled to a power supply 118, such as a battery or an adaptor to couple the SoC 100 to an energy source. The SoC 100 may also include or be coupled to additional features or components that are not shown in Figure 1. Although components are shown integrated as a SoC 100, which may include all components built on a single semiconductor die with a common semiconductor substrate, other arrangements of the illustrated blocks different number of dies, substrates, and / or packages may be arranged to accomplish the same functionality described in this disclosure.
[0047] The memory 106 may include a non-transient or non-transitory computer readable medium storing computer-executable instructions as instructions 108 to perform all or a portion of one or more operations described in this disclosure. The instructions 108 may include a multimedia application (or other suitable application such as a messaging application) to be executed by the SoC 100 that records, processes, or outputs audio signals. The instructions 108 may also include other applications or programs executed by the SoC 100, such as an operating system and applications other than for multimedia processing. The memory 106 may also include a portion of read-only memory (ROM) that stores instructions for execution by one of the processors, such as a bootloader for execution by one of the cores 104A of the CPU 104.
[0048] While the SoC 100 is referred to in the examples herein for performing aspects of the present disclosure, some device components may not be shown in Figure 1 to prevent obscuring aspects of the present disclosure. Additionally, other components, numbers of components, or combinations of components may be included in a suitable device for performing aspects of the present disclosure. For example, a mobile gaming device may include the SoC 100 with a display and multiple user controls integrated in a single unit. As another example, a mobile phone may include the SoC 100 with a display and modem for communicating on one or more wireless networks through one or more antennas. As such, the present disclosure is not limited to a specific device or configuration of components.
[0049] The SoC of Figure 1 may be operated to obtain improved OTP patch processing and / or improved user experience by providing flexibility in the OTP patch formats that can be received for processing. One example integration of aspects of this disclosure into a mobile device are shown in Figure 2 and described below.
[0050] Figure 2 is a block diagram illustrating an example implementation of aspects of this disclosure in a processing system for a mobile device according to one or more aspects of the disclosure. SoC 100 may include 104A and memory 106, similar to that shown in Figure 1. The memory 106 may store bootloader and other applications code and data to boot up and run devices, which includes code and / or data that can be addressed with an OTP patch. The application code may include instructions that, when executed by core 104A or other processing circuitry (such as NSP 124, GPU 126, and / or DSP 112) , causes the SoC 100, and thus the mobile device 200 to perform operations described by the instructions (examples of which are described herein) . The core 104A may retrieve instructions, such as ROM code 202 and OTP patches 204, and execute instructions to, for example, prepare the SoC 100 to begin executing an operating system. Execution of instructions by the core 104A may include execution of logic in patcher 206. Patcher 206 may process OTP patches 204 by determining a format for each of the OTP patches 204 and processing each of the OTP patches 204 in accordance with its format. After executing instructions, the patcher 206 may generate an output 208 set of instructions for configuring the core 104A, in which the output 208 is the ROM code 202 with the OTP patches 204 applied. The patcher 206 may operate at start-up to generate output 208, after which the output 208 is executed by the core 104A or other processing circuitry. Alternatively, the patcher 206 may operate in real-time while the core 104A is executing the output 208, such that the generation of output 208 is not completed prior to the execution of the first instruction in the output 208. Although executing of application code and instructions by a CPU are described with reference to Figure 3 and other aspects of this disclosure, the techniques and operations described herein with reference to Figure 3 and elsewhere may be similarly applied to the operation of other processing circuitry such as NSP 124, GPU 126, and / or DSP 112, or other portions of an integrated circuit whether in a SoC or not in a SoC.
[0051] The device of Figure 1 or Figure 2 may be configured to perform operations described with reference to Figure 3 to flexibly apply OTP patches during execution of a bootloader. Figure 3 shows a flow chart of an example method for flexible patching using different OTP formats according to one or more aspects of this disclosure. The operations of Figure 3 may result in more efficient use of the OTP memory, which results in an improved user experience by allowing additional OTP patches to be applied to the device to extend usability and provide additional features. Each of the operations described with reference to Figure 3 may be performed by one or a combination of the processors (e.g., CPU, NSP, DSP, GPU) or other components of the SoC 100.
[0052] Additional flexibility may be provided in a processor by supporting different OTP Patch formats within the patching process, such as may be accomplished with the processing technique described in Figure 3. At block 302, a method of operating a processor includes receiving, by the processor, a one-time programmable (OTP) patch for replacing a portion of information in ROM code such as a bootloader. The OTP patch may be retrieved from a OTP memory or other volatile or non-volatile memory or a network location.
[0053] At block 304, the method may include determining, by the processor, a format of the OTP patch based on an indicator in one or more bits of the OTP Patch. For example, the processor may process the first two bits of the OTP patch header of the OTP patch to determine a format for the remainder of the OTP patch header. First two bits may refer to the least significant bits (LSBs) of a word or the most significant bits (MSBs) of a word depending on the configuration of the processor. Although first two bits are referred to in the examples that follow, the indicator could likewise be located in other locations within the OTP patch header and used to determine the OTP patch format.
[0054] At block 306, the processor may then apply the OTP patch based on the format of the OTP patch according to the indicator. For example, the OTP patch may correspond to information for reconfiguring a bootloader stored as ROM code, and wherein applying the OTP patch comprises modifying at least one instruction in the bootloader based on the OTP patch. The patcher may use an interceptor that is configured to apply the OTP patch by using the contents of an OTP patch header to identify information (e.g., an instruction and / or data) and redirect requests for that information to different information stored in the OTP patch information. For example, the interceptor may determine a bad address value from an OTP patch header and replace a bad length of information of the ROM code (or previously-applied OTP patch) with a good length of information contained within the associated OTP patch information. Determining the format of the OTP patch as part of the patching process allows the processor to support different OTP patch formats, and each OTP patch format may be designed to address different types of corrections and / or functionality enhancements with efficiency gains for the type of patch.
[0055] The operations described with reference to blocks of Figure 3 may be performed on a CPU 104 of the SoC 100 illustrated in Figure 1. However, the operations may alternatively be performed by other processing circuitry of Figure 1, including one or more of the CPU 104, the DSP 112, the GPU 126, or the NSP 124. In some embodiments, operations may be executed using a combination of processing circuitry from across the CPU 104, the DSP 112, the GPU 126, or the NSP 124. For example, in an example multimedia application, the CPU 104 may record audio signals from the microphone array 130 to memory 106 as part of the operations. The DSP 112 may then perform the operations of blocks 304 and 306 on the audio signals stored in memory 106, after which output signals determined by the DSP 112 may be stored in memory 106, output to audio circuitry 156 for reproduction, and / or transmitted to another device through one or more of the WAN adaptor 152, LAN adaptor 153, and / or PAN adaptor 154. In another example, the processor performing the operations of blocks below may be dedicated logic circuitry for performing certain operations.
[0056] Figures 4A-D are block diagrams illustrating example OTP patch formats for a central processing unit (CPU) according to one or more aspects of the disclosure. Although certain formats are shown as example OTP patch formats, other and / or additional OTP patch formats may be used within the flexible OTP patch techniques described herein.
[0057] Figure 4A is a block diagram illustrating an OTP patch 400A according to one aspect of this disclosure. In some embodiments, the processor may recognize a first OTP patch format corresponding to a format for a long patch. The first format may be recognized by identifying a 2-bit flag that iss indicator 412 of ‘00’ in the first two bits of the OTP header 410 or by recognizing another indicator, which may be another 2-bit flag such as ‘01’ , ‘10’ , or ‘11’ , or which may be a 1-bit flag, 3-bit flag, 4-bit flag, or other sized or type of indicator. The OTP header 410 may be 4 bytes in size. The OTP header 410 may also include a bad address value 414 of 14 bits following the indicator 412, a bad length value 416 of 4 bits following the bits of the bad addresses value 414, which is then followed by a good length value 418 of 12 bits. OTP patch information 402 for the OTP patch 400A follows the OTP header 410 in half-word aligned data, which in some embodiments may be as long as 8, 192 bytes, in some embodiments greater than 252 bytes, and in some embodiments greater than 252 bytes and as long as 8, 192 bytes.
[0058] In the example of Figure 4A, and each of the following examples, the good length value indicates a length of good instructions in the OTP patch information and may be denominated in words (e.g., 4 bytes) , the bad length value corresponds to a length of bad instructions in the OTP patch information and may be denominated in words (e.g., 4 bytes) , and the bad address value may correspond to a start address of bad instructions in ROM code.
[0059] Figure 4B is a block diagram illustrating an OTP patch 400B according to one aspect of this disclosure. In some embodiments, the processor may recognize a second OTP patch format corresponding to a format for a short patch. The second format may be recognized by identifying a 2-bit flag that is indicator 422 of ‘01’ in the first two bits of the OTP header 420 or by recognizing another indicator, which may be another 2-bit flag such as ‘00’ , ‘10’ , or ‘11’ , or which may be a 1-bit flag, 3-bit flag, 4-bit flag, or other sized or type of indicator. The OTP header 420 may be 3 bytes in size. The OTP header 420 may also include a bad address value 424 of 14 bits following the indicator 422, a bad length value 426 of 4 bits following the bits of the bad address value 424, which is then followed by a good length value 428 of 4 bits. OTP patch information 402 for the OTP patch 400B follows the OTP header 420 in half-word aligned data, which in some embodiments may be as long as 30 bytes.
[0060] Two additional formats described in Figure 4C and 4D provide OTP patch formats that may be used in providing a list of instructions for replacement or dropping. This may be more efficient than using the OTP patch information payload of examples Figure 4A and 4B. A replacement instruction may be provided in the payload of Figure 4C, which may be useful to correct a minor error in a previously-applied OTP patch. A dropped instruction may be indicated in a OTP patch header without a payload in the example of Figure 4D, which may be useful to correct larger errors in a previously-applied OTP patch.
[0061] Figure 4C is a block diagram illustrating an OTP patch 400C according to one aspect of this disclosure. In some embodiments, the processor may recognize a third OTP patch format corresponding to a format for an instruction patch. The third format may be recognized by identifying a 2-bit flag that is indicator 432 of ‘10’ in the first two bits of the OTP header 430 or by recognizing another indicator, which may be another 2-bit flag such as ‘00’ , ‘01’ , or ‘11’ , or which may be a 1-bit flag, 3-bit flag, 4-bit flag, or other sized or type of indicator. The OTP header 430 may be 2 bytes in size. The OTP header 430 may also include a good length value 434 of 6 bits following the indicator 432, and a bad offset value 436 of 8 bits following the good length value 434. OTP patch information 402 for the OTP patch 400C follows the OTP header 430 in half-word aligned data, which in some embodiments may be as long as 126 bytes. The good instruction in the OTP patch information 402 of this embodiment may be used by the processor to replace a bad instruction 404, which may be locating in the original ROM code or in a previously-applied OTP patch.
[0062] Figure 4D is a block diagram illustrating an OTP patch 400D according to one aspect of this disclosure. In some embodiments, the processor may recognize a fourth OTP patch format corresponding to a format for dropping information, such as removing a previously-applied OTP patch that may include unfixable errors. The fourth format may be recognized by identifying a 2-bit flag that is indicator 442 of ‘11’ in the first two bits of the OTP header 440 or by recognizing another indicator, which may be another 2-bit flag such as ‘00’ , ‘01’ , or ‘10’ , or which may be a 1-bit flag, 3-bit flag, 4-bit flag, or other sized or type of indicator. The OTP header 440 may be 1 byte in size. The OTP header 440 may also include a bad index value 444 of 4 bits following the indicator 442, and a reserved portion 446 of bits within the remainder of the bits in the OTP header 440. In this format, no information may follow the OTP header 440 because the OTP patch 400D includes only the index of the bad instruction 406 to remove from the instructions.
[0063] In one or more aspects, techniques for improving device operation may include additional aspects, such as any single aspect or any combination of aspects described below or in connection with one or more other processes or devices described elsewhere herein. A device with improved operations may include an apparatus comprising at least one processor configured to perform operations described with respect to methods described herein. In a first aspect, a method includes receiving, by a processor, a one-time programmable (OTP) patch; determining, by the processor, a format of the OTP patch based on an indicator in one or more bits of the OTP patch; and applying, by the processor, the OTP patch based on the format of the OTP patch according to the indicator.
[0064] Additionally, the apparatus may perform or operate according to one or more aspects as described below. In some implementations, the apparatus includes a wireless device, such as a UE. In some implementations, the apparatus includes a remote server, such as a cloud-based computing solution, which receives image data for processing to determine output image frames. In some implementations, the apparatus may include at least one processor, and a memory coupled to the processor. The processor may be configured to perform operations described herein with respect to the apparatus. In some other implementations, the apparatus may include a non-transitory computer-readable medium having program code recorded thereon and the program code may be executable by a computer for causing the computer to perform operations described herein with reference to the apparatus. In some implementations, the apparatus may include one or more means configured to perform operations described herein. In some implementations, a method of wireless communication may include one or more operations described herein with reference to the apparatus.
[0065] In a second aspect, in combination with the first aspect, the OTP patch corresponds to information for reconfiguring a bootloader, and wherein applying the OTP patch comprises modifying at least one instruction in the bootloader based on the OTP patch.
[0066] In a third aspect, in combination with one or more of the first aspect or the second aspect, determining a format of the OTP patch comprises determining a flag in an OTP header of the OTP patch corresponds to a predetermined value, and wherein applying the OTP patch comprises: determining a bad address value of fourteen bits in the OTP header that follows the flag; determining a bad length value of four bits in the OTP header that follows the bad address value; and determining a good length value of twelve bits in the OTP header that follows the bad length value, wherein OTP patch information of the OTP patch is processed based on the bad address value, the bad length value, and good length value.
[0067] In a fourth aspect, in combination with one or more of the first aspect through the third aspect, the OTP patch information comprises greater than 252 bytes of information less than 8, 192 bytes of information.
[0068] In a fifth aspect, in combination with one or more of the first aspect through the fourth aspect, determining a format of the OTP patch comprises determining a flag in an OTP header of the OTP patch corresponds to a predetermined value, and wherein applying the OTP patch comprises: determining a bad address value of fourteen bits in the OTP header that follows the flag; determining a bad length value of four bits in the OTP header that follows the bad address value; and determining a good length value of four bits in the OTP header that follows the bad length value, wherein OTP patch information of the OTP patch is processed based on the bad address value, the bad length value, and good length value.
[0069] In a sixth aspect, in combination with one or more of the first aspect through the fifth aspect, the OTP patch information comprises less than 30 bytes of information.
[0070] In a seventh aspect, in combination with one or more of the first aspect through the sixth aspect, determining a format of the OTP patch comprises determining a flag in an OTP header of the OTP patch corresponds to a predetermined value, and wherein applying the OTP patch comprises: determining a good length value of six bits in the OTP header that follows the flag; determining a bad offset value of eight bits in the OTP header that follows the good length value, wherein OTP patch information of the OTP patch is processed based on the good length value and the bad offset value.
[0071] In an eighth aspect, in combination with one or more of the first aspect through the seventh aspect, the OTP patch information comprises at least one instruction.
[0072] In a ninth aspect, in combination with one or more of the first aspect through the eighth aspect, determining a format of the OTP patch comprises determining a flag in an OTP header of the OTP patch corresponds to a predetermined value, and wherein applying the OTP patch comprises: determining a bad index value of four bits in the OTP header that follows the flag, wherein the OTP patch is processed based on the bad index value.
[0073] In a tenth aspect, in combination with one or more of the first aspect through the ninth aspect, applying the OTP patch comprises identifying a second OTP patch corresponding to the bad index value and not executing instructions corresponding to the second OTP patch during execution of a bootloader.
[0074] In an eleventh aspect, in combination with one or more of the first aspect through the tenth aspect, an apparatus includes a memory storing processor-readable code; and one or more processors coupled to the memory, the one or more processors configured to execute the processor-readable code to cause the one or more processors to perform operations comprising: receiving, by a processor, a one-time programmable (OTP) patch; determining, by the processor, a format of the OTP patch based on an indicator in one or more bits of the OTP patch; and applying, by the processor, the OTP patch based on the format of the OTP patch according to the indicator.
[0075] In a twelfth aspect, in combination with one or more of the first aspect through the eleventh aspect, wherein determining a format of the OTP patch comprises determining a flag in an OTP header of the OTP patch corresponds to a predetermined value, and wherein applying the OTP patch comprises: determining a bad address value of fourteen bits in the OTP header that follows the flag; determining a bad length value of four bits in the OTP header that follows the bad address value; and determining a good length value of twelve bits in the OTP header that follows the bad length value, wherein OTP patch information of the OTP patch is processed based on the bad address value, the bad length value, and good length value.
[0076] In a thirteenth aspect, in combination with one or more of the first aspect through the twelfth aspect, determining a format of the OTP patch comprises determining a flag in an OTP header of the OTP patch corresponds to a predetermined value, and wherein applying the OTP patch comprises: determining a bad address value of fourteen bits in the OTP header that follows the flag; determining a bad length value of four bits in the OTP header that follows the bad address value; and determining a good length value of four bits in the OTP header that follows the bad length value, wherein OTP patch information of the OTP patch is processed based on the bad address value, the bad length value, and good length value.
[0077] In a fourteenth aspect, in combination with one or more of the first aspect through the thirteenth aspect, determining a format of the OTP patch comprises determining a flag in an OTP header of the OTP patch corresponds to a predetermined value, and wherein applying the OTP patch comprises: determining a good length value of six bits in the OTP header that follows the flag; determining a bad offset value of eight bits in the OTP header that follows the good length value, wherein OTP patch information of the OTP patch is processed based on the good length value and the bad offset value.
[0078] In a fifteenth aspect, in combination with one or more of the first aspect through the fourteenth aspect, determining a format of the OTP patch comprises determining a flag in an OTP header of the OTP patch corresponds to a predetermined value, and wherein applying the OTP patch comprises: determining a bad index value of four bits in the OTP header that follows the flag, wherein the OTP patch is processed based on the bad index value.
[0079] In a sixteenth aspect, in combination with one or more of the first aspect through the fifteenth aspect, a user device comprises a memory storing processor-readable code comprising a first portion of read-only memory (ROM) code and a second portion of one-time programmable (OTP) memory storing one or more OTP patches; and at least one processor coupled to the memory, the at least one processor configured to execute the processor-readable code to cause the at least one processor to perform operations comprising: receiving, by a processor, a one-time programmable (OTP) patch from the memory; determining, by the processor, a format of the OTP patch based on an indicator in one or more bits of the OTP patch; and applying, by the processor, the OTP patch to the ROM code based on the format of the OTP patch according to the indicator.
[0080] In a seventeenth aspect, in combination with one or more of the first aspect through the sixteenth aspect, determining a format of the OTP patch comprises determining a flag in an OTP header of the OTP patch corresponds to a predetermined value, and wherein applying the OTP patch comprises: determining a bad address value of fourteen bits in the OTP header that follows the flag; determining a bad length value of four bits in the OTP header that follows the bad address value; and determining a good length value of twelve bits in the OTP header that follows the bad length value, wherein OTP patch information of the OTP patch is processed based on the bad address value, the bad length value, and good length value.
[0081] In an eighteenth aspect, in combination with one or more of the first aspect through the seventeenth aspect, determining a format of the OTP patch comprises determining a flag in an OTP header of the OTP patch corresponds to a predetermined value, and wherein applying the OTP patch comprises: determining a bad address value of fourteen bits in the OTP header that follows the flag; determining a bad length value of four bits in the OTP header that follows the bad address value; and determining a good length value of four bits in the OTP header that follows the bad length value, wherein OTP patch information of the OTP patch is processed based on the bad address value, the bad length value, and good length value.
[0082] In a nineteenth aspect, in combination with one or more of the first aspect through the eighteenth aspect, determining a format of the OTP patch comprises determining a flag in an OTP header of the OTP patch corresponds to a predetermined value, and wherein applying the OTP patch comprises: determining a good length value of six bits in the OTP header that follows the flag; determining a bad offset value of eight bits in the OTP header that follows the good length value, wherein OTP patch information of the OTP patch is processed based on the good length value and the bad offset value.
[0083] In a twentieth aspect, in combination with one or more of the first aspect through the nineteenth aspect, determining a format of the OTP patch comprises determining a flag in an OTP header of the OTP patch corresponds to a predetermined value, and wherein applying the OTP patch comprises: determining a bad index value of four bits in the OTP header that follows the flag, wherein the OTP patch is processed based on the bad index value.
[0084] In the figures, a single block may be described as performing a function or functions. The function or functions performed by that block may be performed in a single component or across multiple components, and / or may be performed using hardware, software, or a combination of hardware and software. To clearly illustrate this interchangeability of hardware and software, various illustrative components, blocks, modules, circuits, and steps are described below generally in terms of their functionality. Whether such functionality is implemented as hardware or software depends upon the particular application and design constraints imposed on the overall system. Skilled artisans may implement the described functionality in varying ways for each particular application, but such implementation decisions should not be interpreted as causing a departure from the scope of the present disclosure. Also, the example devices may include components other than those shown, including well-known components such as a processor, memory, and the like.
[0085] Unless specifically stated otherwise as apparent from the following discussions, it is appreciated that throughout the present application, discussions using terms such as “accessing, ” “receiving, ” “sending, ” “using, ” “selecting, ” “determining, ” “normalizing, ” “multiplying, ” “averaging, ” “monitoring, ” “comparing, ” “applying, ” “updating, ” “measuring, ” “deriving, ” “settling, ” “generating, ” or the like, refer to the actions and processes of a computer system, or similar electronic computing device, that manipulates and transforms data represented as physical (electronic) quantities within the computer system’s registers and memories into other data similarly represented as physical quantities within the computer system’s registers, memories, or other such information storage, transmission, or display devices. The use of different terms referring to actions or processes of a computer system does not necessarily indicate different operations. For example, “determining” data may refer to “generating” data. As another example, “determining” data may refer to “retrieving” data.
[0086] The terms “device” and “apparatus” are not limited to one or a specific number of physical objects (such as one smartphone, one camera controller, one processing system, and so on) . As used herein, a device may be any electronic device with one or more parts that may implement at least some portions of the disclosure. While the description and examples herein use the term “device” to describe various aspects of the disclosure, the term “device” is not limited to a specific configuration, type, or number of objects. As used herein, an apparatus may include a device or a portion of the device for performing the described operations.
[0087] Certain components in a device or apparatus described as “means for accessing, ” “means for receiving, ” “means for sending, ” “means for using, ” “means for selecting, ” “means for determining, ” “means for normalizing, ” “means for multiplying, ” or other similarly-named terms referring to one or more operations on data, such as image data, may refer to processing circuitry (e.g., application specific integrated circuits (ASICs) , digital signal processors (DSP) , graphics processing unit (GPU) , central processing unit (CPU) , computer vision processor (CVP) , or neural signal processor (NSP) ) configured to perform the recited function through hardware, software, or a combination of hardware configured by software.
[0088] Those of skill in the art would understand that information and signals may be represented using any of a variety of different technologies and techniques. For example, data, instructions, commands, information, signals, bits, symbols, and chips that may be referenced throughout the above description may be represented by voltages, currents, electromagnetic waves, magnetic fields or particles, optical fields or particles, or any combination thereof.
[0089] Components, the functional blocks, and the modules described herein with respect to the Figures referenced above include processors, electronics devices, hardware devices, electronics components, logical circuits, memories, software codes, firmware codes, among other examples, or any combination thereof. Software shall be construed broadly to mean instructions, instruction sets, code, code segments, program code, programs, subprograms, software modules, application, software applications, software packages, routines, subroutines, objects, executables, threads of execution, procedures, and / or functions, among other examples, whether referred to as software, firmware, middleware, microcode, hardware description language or otherwise. In addition, features discussed herein may be implemented via specialized processor circuitry, via executable instructions, or combinations thereof.
[0090] Those of skill in the art that one or more blocks (or operations) described with reference to Figure 3 may be combined with one or more blocks (or operations) described with reference to another of the figures. For example, one or more blocks (or operations) of Figure 3 may be combined with one or more blocks (or operations) of Figure 1 or Figure 2. As another example, one or more blocks associated with Figures 4A-D may be combined with one or more blocks (or operations) associated with Figures 1-3.
[0091] Those of skill in the art would further appreciate that the various illustrative logical blocks, modules, circuits, and algorithm steps described in connection with the disclosure herein may be implemented as electronic hardware, computer software, or combinations of both. To clearly illustrate this interchangeability of hardware and software, various illustrative components, blocks, modules, circuits, and steps have been described above generally in terms of their functionality. Whether such functionality is implemented as hardware or software depends upon the particular application and design constraints imposed on the overall system. Skilled artisans may implement the described functionality in varying ways for each particular application, but such implementation decisions should not be interpreted as causing a departure from the scope of the present disclosure. Skilled artisans will also readily recognize that the order or combination of components, methods, or interactions that are described herein are merely examples and that the components, methods, or interactions of the various aspects of the present disclosure may be combined or performed in ways other than those illustrated and described herein.
[0092] The various illustrative logics, logical blocks, modules, circuits and algorithm processes described in connection with the implementations disclosed herein may be implemented as electronic hardware, computer software, or combinations of both. The interchangeability of hardware and software has been described generally, in terms of functionality, and illustrated in the various illustrative components, blocks, modules, circuits, and processes described above. Whether such functionality is implemented in hardware or software depends upon the particular application and design constraints imposed on the overall system.
[0093] In one or more aspects, the operations described may be implemented in hardware, digital electronic circuitry, computer software, firmware, including the structures disclosed in this specification and their structural equivalents thereof, or in any combination thereof. Implementations of the subject matter described in this specification also may be implemented as one or more computer programs, which is one or more modules of computer program instructions, encoded on a computer storage media for execution by, or to control the operation of, data processing apparatus.
[0094] The operations of a method or algorithm disclosed herein may be implemented in a processor-executable software module which may reside on a computer-readable medium and commercially made available as a computer program product as software. Computer-readable media includes both computer storage media and communication media including any medium that may be enabled to transfer a computer program from one place to another. A storage media may be any available media that may be accessed by a computer. By way of example, and not limitation, such computer-readable media may include random-access memory (RAM) , read-only memory (ROM) , electrically erasable programmable read-only memory (EEPROM) , CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other medium that may be used to store desired program code in the form of instructions or data structures and that may be accessed by a computer. Also, any connection may be properly termed a computer-readable medium. Disk and disc, as used herein, includes compact disc (CD) , laser disc, optical disc, digital versatile disc (DVD) , floppy disk, and Blu-ray disc wherein disks usually reproduce data magnetically and discs reproduce data optically with lasers. Combinations of the above should also be included within the scope of computer-readable media.
[0095] Various modifications to the implementations described in this disclosure may be readily apparent to those skilled in the art, and the generic principles defined herein may be applied to some other implementations without departing from the spirit or scope of this disclosure. Thus, the claims are not intended to be limited to the implementations shown herein but are to be accorded the widest scope consistent with this disclosure, the principles and the novel features disclosed herein.
[0096] Additionally, a person having ordinary skill in the art will readily appreciate, opposing terms such as “upper” and “lower, ” or “front” and back, ” or “top” and “bottom, ” or “forward” and “backward, ” or “left” and “right” are sometimes used for ease of describing the figures, and indicate relative positions corresponding to the orientation of the figure on a properly oriented page, and may not reflect the proper orientation of any device as implemented.
[0097] Certain features that are described in this specification in the context of separate implementations also may be implemented in combination in a single implementation. Conversely, various features that are described in the context of a single implementation also may be implemented in multiple implementations separately or in any suitable subcombination. Moreover, although features may be described above as acting in certain combinations and even initially claimed as such, one or more features from a claimed combination may in some cases be excised from the combination, and the claimed combination may be directed to a subcombination or variation of a subcombination.
[0098] Similarly, while operations are depicted in the drawings in a particular order, this should not be understood as requiring that such operations be performed in the particular order shown, or in sequential order, or that all illustrated operations be performed to achieve desirable results. Further, the drawings may schematically depict one or more example processes in the form of a flow diagram. However, other operations that are not depicted may be incorporated in the example processes that are schematically illustrated. For example, one or more additional operations may be performed before, after, simultaneously, or between any of the illustrated operations. In certain circumstances, multitasking and parallel processing may be advantageous. Moreover, the separation of various system components in the implementations described above should not be understood as requiring such separation in all implementations, and it should be understood that the described program components and systems may generally be integrated together in a single software product or packaged into multiple software products. Additionally, some other implementations are within the scope of the following claims. In some cases, the actions recited in the claims may be performed in a different order and still achieve desirable results.
[0099] As used herein, including in the claims, the term “or, ” when used in a list of two or more items, means that any one of the listed items may be employed by itself, or any combination of two or more of the listed items may be employed. For example, if a composition is described as containing components A, B, or C, the composition may contain A alone; B alone; C alone; A and B in combination; A and C in combination; B and C in combination; or A, B, and C in combination. Also, as used herein, including in the claims, “or” as used in a list of items prefaced by “at least one of” indicates a disjunctive list such that, for example, a list of “at least one of A, B, or C” means A or B or C or AB or AC or BC or ABC (that is A and B and C) or any of these in any combination thereof.
[0100] The term “substantially” is defined as largely, but not necessarily wholly, what is specified (and includes what is specified; for example, substantially 90 degrees includes 90 degrees and substantially parallel includes parallel) , as understood by a person of ordinary skill in the art. In any disclosed implementations, the term “substantially” may be substituted with “within [apercentage] of” what is specified, where the percentage includes . 1, 1, 5, or 10 percent.
[0101] The previous description of the disclosure is provided to enable any person skilled in the art to make or use the disclosure. Various modifications to the disclosure will be readily apparent to those skilled in the art, and the generic principles defined herein may be applied to other variations without departing from the spirit or scope of the disclosure. Thus, the disclosure is not intended to be limited to the examples and designs described herein but is to be accorded the widest scope consistent with the principles and novel features disclosed herein.
Claims
1.A method, comprising:receiving, by a processor, a one-time programmable (OTP) patch;determining, by the processor, a format of the OTP patch based on an indicator in one or more bits of the OTP patch; andapplying, by the processor, the OTP patch based on the format of the OTP patch according to the indicator.2.The method of claim 1, wherein the OTP patch corresponds to information for reconfiguring a bootloader, and wherein applying the OTP patch comprises modifying at least one instruction in the bootloader based on the OTP patch.3.The method of claim 1, wherein determining a format of the OTP patch comprises determining a flag in an OTP header of the OTP patch corresponds to a predetermined value, and wherein applying the OTP patch comprises:determining a bad address value of fourteen bits in the OTP header that follows the flag;determining a bad length value of four bits in the OTP header that follows the bad address value; anddetermining a good length value of twelve bits in the OTP header that follows the bad length value,wherein OTP patch information of the OTP patch is processed based on the bad address value, the bad length value, and good length value.4.The method of claim 3, wherein the OTP patch information comprises greater than 252 bytes of information less than 8, 192 bytes of information.5.The method of claim 1, wherein determining a format of the OTP patch comprises determining a flag in an OTP header of the OTP patch corresponds to a predetermined value, and wherein applying the OTP patch comprises:determining a bad address value of fourteen bits in the OTP header that follows the flag;determining a bad length value of four bits in the OTP header that follows the bad address value; anddetermining a good length value of four bits in the OTP header that follows the bad length value,wherein OTP patch information of the OTP patch is processed based on the bad address value, the bad length value, and good length value.6.The method of claim 5, wherein the OTP patch information comprises less than 30 bytes of information.7.The method of claim 1, wherein determining a format of the OTP patch comprises determining a flag in an OTP header of the OTP patch corresponds to a predetermined value, and wherein applying the OTP patch comprises:determining a good length value of six bits in the OTP header that follows the flag;determining a bad offset value of eight bits in the OTP header that follows the good length value,wherein OTP patch information of the OTP patch is processed based on the good length value and the bad offset value.8.The method of claim 7, wherein the OTP patch information comprises at least one instruction.9.The method of claim 1, wherein determining a format of the OTP patch comprises determining a flag in an OTP header of the OTP patch corresponds to a predetermined value, and wherein applying the OTP patch comprises:determining a bad index value of four bits in the OTP header that follows the flag,wherein the OTP patch is processed based on the bad index value.10.The method of claim 9, wherein applying the OTP patch comprises identifying a second OTP patch corresponding to the bad index value and not executing instructions corresponding to the second OTP patch during execution of a bootloader.11.An apparatus, comprising:a memory storing processor-readable code; andone or more processors coupled to the memory, the one or more processors configured to execute the processor-readable code to cause the one or more processors to perform operations comprising:receiving, by a processor, a one-time programmable (OTP) patch from the memory;determining, by the processor, a format of the OTP patch based on an indicator in one or more bits of the OTP patch; andapplying, by the processor, the OTP patch based on the format of the OTP patch according to the indicator.12.The apparatus of claim 11, wherein determining a format of the OTP patch comprises determining a flag in an OTP header of the OTP patch corresponds to a predetermined value, and wherein applying the OTP patch comprises:determining a bad address value of fourteen bits in the OTP header that follows the flag;determining a bad length value of four bits in the OTP header that follows the bad address value; anddetermining a good length value of twelve bits in the OTP header that follows the bad length value,wherein OTP patch information of the OTP patch is processed based on the bad address value, the bad length value, and good length value.13.The apparatus of claim 11, wherein determining a format of the OTP patch comprises determining a flag in an OTP header of the OTP patch corresponds to a predetermined value, and wherein applying the OTP patch comprises:determining a bad address value of fourteen bits in the OTP header that follows the flag;determining a bad length value of four bits in the OTP header that follows the bad address value; anddetermining a good length value of four bits in the OTP header that follows the bad length value,wherein OTP patch information of the OTP patch is processed based on the bad address value, the bad length value, and good length value.14.The apparatus of claim 11, wherein determining a format of the OTP patch comprises determining a flag in an OTP header of the OTP patch corresponds to a predetermined value, and wherein applying the OTP patch comprises:determining a good length value of six bits in the OTP header that follows the flag;determining a bad offset value of eight bits in the OTP header that follows the good length value,wherein OTP patch information of the OTP patch is processed based on the good length value and the bad offset value.15.The apparatus of claim 11, wherein determining a format of the OTP patch comprises determining a flag in an OTP header of the OTP patch corresponds to a predetermined value, and wherein applying the OTP patch comprises:determining a bad index value of four bits in the OTP header that follows the flag,wherein the OTP patch is processed based on the bad index value.16.A user device, comprising:a memory storing processor-readable code comprising a first portion of read-only memory (ROM) code and a second portion of one-time programmable (OTP) memory storing one or more OTP patches; andat least one processor coupled to the memory, the at least one processor configured to execute the processor-readable code to cause the at least one processor to perform operations comprising:receiving, by a processor, a one-time programmable (OTP) patch from the memory;determining, by the processor, a format of the OTP patch based on an indicator in one or more bits of the OTP patch; andapplying, by the processor, the OTP patch to the ROM code based on the format of the OTP patch according to the indicator.17.The user device of claim 16, wherein determining a format of the OTP patch comprises determining a flag in an OTP header of the OTP patch corresponds to a predetermined value, and wherein applying the OTP patch comprises:determining a bad address value of fourteen bits in the OTP header that follows the flag;determining a bad length value of four bits in the OTP header that follows the bad address value; anddetermining a good length value of twelve bits in the OTP header that follows the bad length value,wherein OTP patch information of the OTP patch is processed based on the bad address value, the bad length value, and good length value.18.The user device of claim 16, wherein determining a format of the OTP patch comprises determining a flag in an OTP header of the OTP patch corresponds to a predetermined value, and wherein applying the OTP patch comprises:determining a bad address value of fourteen bits in the OTP header that follows the flag;determining a bad length value of four bits in the OTP header that follows the bad address value; anddetermining a good length value of four bits in the OTP header that follows the bad length value,wherein OTP patch information of the OTP patch is processed based on the bad address value, the bad length value, and good length value.19.The user device of claim 16, wherein determining a format of the OTP patch comprises determining a flag in an OTP header of the OTP patch corresponds to a predetermined value, and wherein applying the OTP patch comprises:determining a good length value of six bits in the OTP header that follows the flag;determining a bad offset value of eight bits in the OTP header that follows the good length value,wherein OTP patch information of the OTP patch is processed based on the good length value and the bad offset value.20.The user device of claim 16, wherein determining a format of the OTP patch comprises determining a flag in an OTP header of the OTP patch corresponds to a predetermined value, and wherein applying the OTP patch comprises:determining a bad index value of four bits in the OTP header that follows the flag,wherein the OTP patch is processed based on the bad index value.