CN110945475A - 用于提供可打补丁的rom固件的系统和方法 - Google Patents
用于提供可打补丁的rom固件的系统和方法 Download PDFInfo
- Publication number
- CN110945475A CN110945475A CN201880048933.4A CN201880048933A CN110945475A CN 110945475 A CN110945475 A CN 110945475A CN 201880048933 A CN201880048933 A CN 201880048933A CN 110945475 A CN110945475 A CN 110945475A
- Authority
- CN
- China
- Prior art keywords
- rom
- code
- ram
- patchable
- entry
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 31
- 230000006870 function Effects 0.000 claims abstract description 89
- 238000004590 computer program Methods 0.000 claims abstract description 11
- 238000010586 diagram Methods 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 230000001413 cellular effect Effects 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000012856 packing Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000013515 script Methods 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 229910044991 metal oxide Inorganic materials 0.000 description 1
- 150000004706 metal oxides Chemical class 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 239000011800 void material Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/72—Code refactoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/66—Updates of program code stored in read-only memory [ROM]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0638—Combination of memories, e.g. ROM and RAM such as to permit replacement or supplementing of words in one module by words in another module
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/654—Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/20—Employing a main memory using a specific memory technology
- G06F2212/205—Hybrid memory, e.g. using both volatile and non-volatile memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/51—Source to source
Abstract
公开了用于提供可打补丁的只读存储器(ROM)固件的系统、方法和计算机程序。一种方法包括:接收源代码,所述源代码将被用作用于构建存储于片上系统(SoC)上的只读存储器(ROM)映像的输入。识别在源代码中的多个ROM函数中的将可打补丁的一个或多个ROM函数。通过生成补丁代码并且将补丁代码插入到对应的源代码中,来修改针对多个ROM函数中的将可打补丁的一个或多个ROM函数的源代码。补丁代码包括到随机存取存储器(RAM)中的固定位置的、用于调用对应函数的链接。
Description
背景技术
在各种类型的计算设备(例如,物联网(IoT)设备、可穿戴设备、蜂窝电话、智能电话、平板计算机、便携式游戏机)中使用的芯片制造商越来越多地使用只读存储器(ROM)来存储固件映像(image)。例如,针对芯片所谓的“任务模式代码”的全部或部分可以存储在ROM中。ROM固件的使用可以使芯片制造商能够降低成本以及解决安全问题。如本领域已知的,从成本、管芯尺寸和功率的角度来看,ROM比等效的替代品(例如,静态随机存取存储器(SRAM))便宜得多。此外,由于ROM防止篡改,因此提高了安全性。
然而,因为代码存储在ROM中,所以在设计下线(tapeout)和商业化之后,不可能对该代码进行修改以修复潜在的错误或提供更多的可配置性。对这些约束的一种解决方案是使用一次性可编程(OTP)熔断器(fuse)。但是,该解决方案限于为相对少量的指令打补丁,并且还以工厂工艺和针对芯片制造商的展示(rollout)开销为代价。
因此,需要用于提供可打补丁的ROM固件的改进的系统和方法。
发明内容
公开了用于提供可打补丁的只读存储器(ROM)固件的系统、方法和计算机程序。一种方法包括:接收源代码,所述源代码将被用作用于构建存储于片上系统(SoC)上的只读存储器(ROM)映像的输入。识别在源代码中的多个ROM函数中的将可打补丁的一个或多个ROM函数。通过生成补丁代码并且将补丁代码插入到对应的源代码中,来修改针对多个ROM函数中的将可打补丁的一个或多个ROM函数的源代码。补丁代码包括到随机存取存储器(RAM)中的固定位置的、用于调用对应的函数的链接。
另一实施例是一种片上系统(SoC),其包括:处理器、只读存储器(ROM)和随机存取存储器(RAM)。处理器被配置为执行存储于ROM上的固件映像。固件映像包括一个或多个可打补丁的ROM函数。每个可打补丁的ROM函数包括到RAM中固定位置的、用于调用对应的函数的链接。
附图说明
在附图中,除非另外指出,否则贯穿各个视图,类似的参考标号表示类似的部分。对于具有字母字符名称的参考数字(例如“102A”或“102B”),字母字符名称可以区分相同图中存在的两个类似的部分或元件。当意图参考数字包含所有附图中具有相同参考数字的所有部分时,可以省略针对参考数字的字母字符名称。
图1是用于为片上系统(SoC)构建可打补丁的只读存储器(ROM)固件的系统的框图。
图2是示出图1的系统中的补丁框架的架构、功能和/或操作的框图。
图3示出了用于为示例性ROM函数生成可打补丁的代码的方法的示例性实施例。
图4示出了图3的被修改为调用针对示例性ROM函数的被打补丁的RAM代码的间接(indirection)表。
图5是示出了初始配置中的基于代码的间接表的实施例的框图/流程图。
图6是示出了初始配置中的基于数据的间接表的实施例的框图/流程图。
图7示出了在被打补丁的配置中图5的基于代码的间接表。
图8示出了在被打补丁的配置中图6的基于数据的间接表。
图9是示出在图1的构建系统中实现的用于构件可打补丁的ROM映像的方法的示例性实施例的第一方面的流程图。
图10是示出在图1的构建系统中实现的用于构建可打补丁的ROM映像的方法的示例性实施例的第二方面的流程图。
图11是针对并入使用图1的系统构建的可打补丁的ROM固件的便携式计算设备的示例性实施例的框图。
具体实施方式
词语“示例性”在本文中用来表示“用作示例、实例或说明”。本文中描述为“示例性”的任何方面都不必被解释为比其他方面优选或有利。
在本说明书中,术语“应用”还可以包括具有可执行内容的文件,例如:目标代码、脚本、字节代码、标记语言文件和补丁。另外,本文所指的“应用”还可以包括本质上不可执行的文件,例如可能需要打开的文档或需要访问的其它数据文件。
术语“内容”还可以包括具有可执行内容的文件,例如:目标代码、脚本、字节代码、标记语言文件和补丁。另外,本文所指的“内容”还可以包括本质上不可执行的文件,例如可能需要打开的文档或需要访问的其它数据文件。
如本说明书中所使用的,术语“组件”、“数据库”、“模块”、“系统”等旨在指代计算机相关的实体,其是硬件、固件、硬件和软件的组合、软件或执行中的软件。例如,组件可以是但不限于:在处理器上运行的进程、处理器、对象、可执行文件、执行线程、程序和/或计算机。通过说明,在计算设备上运行的应用和计算设备都可以是组件。一个或多个组件可以驻留在进程和/或执行线程中,并且组件可以位于一台计算机上和/或分布在两台或更多台计算机之间。另外,这些组件可以从其上存储有各种数据结构的各种计算机可读介质执行。组件可以例如根据具有一个或多个数据分组的信号(例如,来自与本地系统、分布式系统中的另一组件交互和/或跨网络(例如互联网)通过信号的方式与其它系统交互的组件的数据),通过本地和/或远程进程进行通信。
在本说明书中,术语“通信设备”、“无线设备”、“无线电话”、“无线通信设备”和“无线手机”可互换使用。随着第三代(“3G”)、第四代(“4G”)、第五代(“5G”)和其它无线技术的出现,更大的带宽可用性实现了具有更多种类的无线能力的更多便携式计算设备。
图1示出了用于为片上系统(SoC)104构建可打补丁的只读存储器(ROM)固件的系统环境100。系统环境100涉及构建阶段102,所述构建阶段102包括特别配置的构建系统106。如本领域已知的,构建系统可以包括用于对软件构建的创建的各种工具以及各种相关联的过程,例如,将源代码编译为二进制代码,打包(packaging)二进制代码,以及运行自动化测试。在这方面,构建系统106包括用于执行各种构建工具108的处理器105、编译器112和链接器(linker)110。构建系统106的这些方面可能类似于现有构建系统中并入的那些组件,比如,例如,开源软件构造工具“SCons”和其它构建系统、工具、实用程序等。如图1的实施例所示,构建系统106还并入了特别配置的补丁框架114,所述补丁框架114通常包括用于为SoC 102构建可打补丁的ROM固件的逻辑单元和/或功能。
应当理解,补丁框架114有利地提供了可扩展的、不依赖于处理器/编译器的补丁基础架构。补丁框架114实现了功能级(function-level)的粒度。补丁框架可缩放到ROM映像的大小。此外,补丁解决方案不依靠编译器生成的代码,并且因此是处理器/编译器不可知的。
在构建阶段102期间,构建系统106接收源代码116,以用作构建要存储于SoC 102上的只读存储器(ROM)映像的输入。源代码116可以包括任何所需的计算语言,包括:例如,面向对象的语言,比如C、C++等。源代码116可以包括多个函数118,这些函数可以包括对其它函数118的一个或多个调用。如下更详细所述,补丁框架114可以被配置为标识源代码116中的一个或多个函数118,以使该函数118可打补丁(称为“可打补丁(patchable)的函数”)。对于每个可打补丁的函数,补丁框架114被配置为:在构建ROM映像122之前,通过生成补丁代码并且将补丁代码插入对应的函数118中来修改对应的源代码。补丁代码可操作地耦合到间接表124,以存储在随机存取存储器(RAM)中。就此而言,补丁代码包括:到固定RAM位置(例如,间接表124中的条目)的链接、指令、调用等,其在操作期间用于选择性地控制是否将从ROM 128或RAM 130调用可打补丁的函数118。存储于固定RAM位置中的数据和/或与固定RAM位置相关联的函数可以被初始化,使得与可打补丁的函数118相关联的代码被从ROM128调用(即,不应用补丁)。然而,如果ROM代码需要被打补丁、更新等,则可以更新存储于固定RAM位置中的数据和/或与固定RAM位置相关联的函数,使得调用存储于RAM 130中的被打补丁的代码而不是ROM代码。
如图1进一步所示,应当理解,构建系统106的输出120可以包括:ROM映像122、RAM映像126和间接表124。就此而言,针对SoC 102的固件映像可以在ROM 128和RAM 130之间分割。在其它实施例中,固件映像可以最初存储在ROM 138中,并且在补丁发生时,可以将这些部分移至RAM 130。不论实施例如何,如上所述,初始ROM映像122是基于源代码116构建的,所述源代码116已经由补丁框架114利用注入到对应的可打补丁的函数118中的补丁代码来修改。
应当理解,由构建系统106生成的可打补丁的ROM映像122、间接表124和/或RAM映像126可以存储在各种类型的集成电路、芯片、嵌入式系统、SoC等上(其包括一个或多个处理器132),并且可以并入各种类型的计算设备中(例如,物联网(IoT)设备、可穿戴设备、蜂窝电话、智能电话、平板计算机、便携式游戏机等)。下面结合图11描述了并入便携式计算设备1100中的SoC 102的示例性实现方式。
在已经一般性地描述了补丁框架114后,图2示出了示例性补丁框架114的架构、功能和/或操作。在该实施例中,补丁框架114包括两个主要组件:可打补丁的代码生成器模块206;以及间接表生成器模块208。可打补丁的代码生成器模块206接收原始ROM源代码116,以及标识将可打补丁的一个或多个函数118。对于每个可打补丁的函数118,可打补丁的代码生成器模块206自动生成并且注入可打补丁的ROM代码212,以产生用于可打补丁的函数118的经修订的ROM源代码210。如上所述,可打补丁的ROM代码212可以包括到间接表124中的对应条目214的链接、指令、调用等,其在操作期间用于选择性地控制将从ROM 128还是被打补丁的RAM代码206调用可打补丁的函数118。
图3示出了针对说明性函数“foo_2()”的可打补丁的ROM代码212的实施例。在该实施例中,可打补丁的ROM代码212包括到间接表124中的条目214的跳转(jump)指令(附图标记302)。指令“jump foo_2_indirection_table_RAM”被注入到函数代码之前。条目214可以最初被配置有到原始foo_2()函数的另一跳转指令(附图标记304)。图4示出了在已经应用补丁之后图3的间接表124中的条目214。原始的到“void foo_2_original”的跳转指令(“jump foo_2_original()”)(附图标记304)被替换为新的到被打补丁的RAM代码404的跳转指令(“jump foo_2_patch()”)(附图标记402)。
应当理解,可以以各种方式实现可打补丁的ROM代码212和间接表124,以控制是执行原始ROM代码,还是在应用补丁时执行被打补丁的RAM代码。图5和图7示出了基于代码的实现方式的示例。图6和图8示出了基于数据的实现方式的示例。
图5示出了基于代码的间接表504和示例性ROM代码502的初始配置500。ROM代码502包括第一函数506(“foo_1()”)、第二函数508(“foo_2()”)和第三函数510(“foo_3()”)。如附图标记516和518所示,第一函数506包括经由基于代码的间接表504中的条目512的、对第二函数508的调用(“call foo_2_indirection()”)。在初始配置中,条目512包括到第二函数508的跳转指令(“jump to foo_2()”)(附图标记518)。如附图标记520和522所示,第二函数508包括经由基于代码的间接表504中的条目514的、对第三函数510的调用(“call foo_3_indirection()”)。在初始配置中,条目514包括到第三函数510的跳转指令(“jump to foo_3()”)(附图标记520)。
图7示出了在已经对第二函数508打补丁之后的基于代码的间接表504。在被打补丁的配置700中,第二函数508的被打补丁的版本704存储在位于RAM 130中的补丁区域702中。利用跳转指令(“jump to foo_2_patched())来将在基于代码的间接表504中的条目512更新为被打补丁的版本704(附图标记708)。以这种方式,执行被打补丁的版本704而不是原始的第二函数508。
图6示出了基于数据的间接表604和示例性ROM代码602的初始配置600。ROM代码602包括第一函数606(“foo_1()”)、第二函数608(“foo_2()”)和第三函数610(“foo_3()”)。如附图标记616和618所示,第一函数606包括用于请求存储于条目612中的地址的“获取地址”调用。在初始配置中,条目612返回ROM地址“foo_2_address”(附图标记616)。作为响应,第一函数606从ROM代码602调用第二函数608。第二函数608以类似的方式经由条目614调用第三函数610(附图标记620和622)。
图8示出了在已经对第二函数608打补丁之后的基于数据的间接表604。在被打补丁的配置800中,第二函数608的被打补丁的版本804存储于位于RAM 130中的补丁区域802中。条目612被更新为返回被打补丁的版本804所位于的RAM地址(附图标记806)。作为响应,第一函数606调用RAM 130中的被打补丁的版本804,而不是存储于ROM中的原始第二函数608。
图9和图10示出了在构建系统106中实现的用于构建可打补丁的ROM映像的方法900的示例性实施例。在框902处,构建系统106收集与源代码116相关联的、可能需要被打补丁的文件列表。在框904处,构建系统106在不采用补丁框架114的情况下构建初始ROM映像。在框906处,可使用例如符号文件、包括由链接器110生成的文本文件的映射文件、或由编译器112和/或链接器110生成的其它文件(例如obj文件、elf文件等),来提取可打补丁的函数118的列表。在框908处,补丁框架114可以创建包含可打补丁的代码的新的源文件,如上所述。在框910处,构建系统106可以基于包括可打补丁的代码的新的源文件,来构建最终ROM映像122。
图10示出了可以遵循图9中示出的ROM构建流程的示例性RAM构建流程。在框912处,构建系统106基于ROM构建元数据来创建初始间接表124源代码。ROM构建元数据包括收集的并且被用于创建可打补丁的代码和间接表124的数据(例如,函数名称、ROM中的函数地址、RAM中的被打补丁的函数地址等)。在框914处,构建系统106构建初始RAM映像126。在框916处,构建系统106提取已经在RAM 130中被打补丁的函数118。在框918处,可以基于被打补丁的函数来更新间接表124。在框920处,构建系统106基于经更新的间接表124来构建最终RAM映像。
如上所述,SoC 102可以并入到任何期望的计算系统中。图11示出了并入示例性便携式计算设备(PCD)1100中的系统100。将容易理解,系统100的某些组件可以包含于SoC1122上,而其它组件可以是耦合至SoC1122的外部组件。SoC 1122可以包括多核CPU 1102。多核CPU 1102可以包括第零核心1110、第一核心1112和第N核心1114。核心中的一个核心可以包括例如图像处理单元(GPU),其中其它核心中的一个或多个核心包括CPU 1102。
显示控制器1128和触摸屏控制器1130可以耦合到CPU 1102。继而,在片上系统1122外部的触摸屏显示器1106可以耦合到显示控制器1128和触摸屏控制器1130。
图11还示出了被耦合到多核CPU 1102的视频编码器1134,例如,相位交替线(PAL)编码器、连续彩色存储器(SECAM)编码器、或国家电视系统委员会(NTSC)编码器。此外,视频放大器1136耦合到视频编码器1134和触摸屏显示器1106。此外,视频端口1138耦合到视频放大器1136。如图11所示,通用串行总线(USB)控制器1140耦合到多核CPU 1102。此外,USB端口1142耦合到USB控制器1140。
此外,如图11所示,数字相机1148可以耦合到多核CPU 1102。在示例性方面,数字相机1148是电荷耦合设备(CCD)相机或互补金属氧化物半导体(CMOS)相机。
如图11进一步所示,立体声音频编解码器(CODEC)1150可以耦合到多核CPU 1102。此外,音频放大器1152可以耦合到立体声音频CODEC1150。在示例性方面,第一立体声扬声器1154和第二立体声扬声器1156耦合到音频放大器1152。图11示出了麦克风放大器1158也可以耦合到立体声音频CODEC 1150。另外,麦克风1160可以耦合到麦克风放大器1158。在特定方面,频率调制(FM)无线电调谐器1162可以耦合立体声音频CODEC 1150。此外,FM天线1164耦合到FM无线电调谐器1162。此外,立体声耳机1166可以耦合到立体声音频CODEC1150。
图11还示出了射频(RF)收发器1168可以耦合到多核CPU 1102。RF开关1170可以耦合到RF收发器1168和RF天线1172。小键盘1104可以耦合到多核CPU 1102。此外,具有麦克风的单声道耳机1176可以耦合到多核CPU 1102。此外,振动器设备1178可以耦合到多核CPU1102。
图11还示出了电源1180可以耦合到片上系统1122。在特定方面,电源1180是直流(DC)电源,其向需要电力的PCD 1100的各个组件提供电力。此外,在特定方面,电源是可再充电的DC电池或从连接到AC电源的交流电(AC)到DC变换器导出的DC电源。
图11还指示PCD 1100还可以包括网卡1188,所述1188可以用于访问数据网络,例如,局域网、个域网或任何其它网络。网卡1188可以是蓝牙网卡、WiFi网卡、个域网(PAN)卡、个域网超低功耗技术(PeANUT)网卡、电视/电缆/卫星调谐器、或本领域公知的任何其它网卡。此外,网卡1188可以并入到芯片中,即,网卡1188可以是芯片中的完整解决方案,并且可以不是分离的网卡1188。
如图11所示,触摸屏显示器1106、视频端口1138、USB端口1142、相机1148、第一立体声扬声器1154、第二立体声扬声器1156、麦克风1160、FM天线1164、立体声耳机1166、RF开关1170、RF天线1172、小键盘1174、单声道耳机1176、振动器1178和电源1180可以位于片上系统1122的外部。
应当理解,本文描述的方法步骤中的一个或多个方法步骤可以作为计算机程序指令(例如上述模块)存储在存储器中。这些指令可以由任何适当的处理器组合或与对应应模块一起执行以执行本文描述的方法。
在本说明书中描述的过程或处理流程中的某些步骤自然地在其它步骤之前,以使本发明如所描述的那样起作用。然而,如果这样的次序或序列不改变本发明的功能,则本发明不限于所描述的步骤的次序。也就是说,认识到在不背离本发明的范围和精神的情况下,一些步骤可以在其它步骤之前、之后或平行(基本上同时)执行。在一些情况下,在不背离本发明的情况下,可以省略或不执行某些步骤。此外,诸如“其后”、“然后”、“接下来”等的词语不旨在限制步骤的次序。这些词语仅用于引导读者通过对示例性方法的描述。
另外,例如,基于本说明书中的流程图和相关联描述,编程领域的普通技术人员能够无困难地编写计算机代码或识别适当的硬件和/或电路来实现所公开的发明。
因此,对于充分理解如何实现和使用本发明,认为不需要公开特定的一组程序代码指令或详细的硬件设备。在上面的描述中并且结合可以示出各种处理流程的附图,更详细地解释了要求保护的计算机实现的过程的发明性功能。
在一个或多个示例性方面,所描述的函数可以以硬件、软件、固件或其任何组合来实现。如果以软件实现,则函数可以作为一个或多个指令或代码存储在计算机可读介质上或在计算机可读介质上传输。计算机可读介质包括计算机存储介质和通信介质,所述通信介质包括促进将计算机程序从一个地方转移到另一地方的任何介质。存储介质可以是计算机可以访问的任何可用介质。通过示例而非限制,这种计算机可读介质可以包括RAM、ROM、EEPROM、NAND闪存、NOR闪存、M-RAM、P-RAM、R-RAM、CD-ROM或其它光盘存储、磁性磁盘存储或其它磁性存储设备、或可以用于携带或存储以指令或数据结构形式的期望程序代码并且可以由计算机访问的任何其它介质。
此外,任何连接被适当地称为计算机可读介质。例如,如果软件是使用同轴电缆、光纤光缆、双绞线、数字用户线(“DSL”)或者诸如红外线、无线电和微波之类的无线技术从网站、服务器或其它远程源发送的,那么同轴电缆、光纤光缆、双绞线、DSL或者诸如红外线、无线电和微波之类的无线技术包括在所述介质的定义中。
如本文所使用的,磁盘(disk)和光盘(disc)包括压缩光盘(“CD”)、激光光盘、光盘、数字通用光盘(“DVD”)、软盘和蓝光光盘,其中磁盘通常磁性地复制数据,而光盘则用激光来光学地复制数据。上面的组合也应当包括在计算机可读介质的保护范围之内。
在不背离本发明的精神和范围的情况下,替代实施例对于本发明所属领域的普通技术人员将变得显而易见。因此,虽然已经详细示出和描述了所选择的方面,但是将理解,在不背离如所附权利要求所限定的本发明的精神和范围的情况下,可以在其中进行各种替换和变更。
Claims (30)
1.一种用于提供可打补丁的只读存储器(ROM)固件的方法,所述方法包括:
接收源代码,所述源代码将被用作用于构建存储于片上系统(SoC)上的只读存储器(ROM)映像的输入;
识别在所述源代码中的多个ROM函数中的将可打补丁的一个或多个ROM函数;以及
通过生成补丁代码并且将所述补丁代码插入到对应的源代码中,来修改针对所述多个ROM函数中的将可打补丁的所述一个或多个ROM函数的源代码,所述补丁代码包括到随机存取存储器(RAM)中的固定位置的、用于调用对应的函数的链接。
2.根据权利要求1所述的方法,还包括:基于包括所述补丁代码的所修改的源代码,来构建所述ROM映像。
3.根据权利要求1所述的方法,其中,所述固定RAM位置包括在间接表中的条目。
4.根据权利要求3所述的方法,其中,所述条目是利用用于调用对应的ROM函数的跳转指令来初始化的。
5.根据权利要求3所述的方法,其中,所述条目是利用用于调用被打补丁的RAM代码的跳转指令来更新的。
6.根据权利要求3所述的方法,其中,所述条目标识用于执行对应的ROM函数的ROM地址。
7.根据权利要求3所述的方法,其中,所述条目被更新为标识用于执行被打补丁的RAM代码的RAM地址。
8.一种用于提供可打补丁的只读存储器(ROM)固件的系统,所述系统包括:
用于接收源代码的单元,所述源代码将被用作用于构建存储于片上系统(SoC)上的只读存储器(ROM)映像的输入;
用于识别在所述源代码中的多个ROM函数中的将可打补丁的一个或多个ROM函数的单元;以及
用于通过生成补丁代码并且将所述补丁代码插入到对应的源代码中,来修改针对所述多个ROM函数中的将可打补丁的所述一个或多个ROM函数的源代码的单元,所述补丁代码包括到随机存取存储器(RAM)中的固定位置的、用于调用对应的函数的链接。
9.根据权利要求8所述的系统,还包括:用于基于包括所述补丁代码的所修改的源代码,来构建所述ROM映像的单元。
10.根据权利要求9所述的系统,其中,所述用于构件所述ROM映像的单元包括编译器和链接器。
11.根据权利要求8所述的系统,其中,所述固定RAM位置包括在间接表中的条目。
12.根据权利要求11所述的系统,其中,所述条目是利用用于调用对应的ROM函数的跳转指令来初始化的。
13.根据权利要求11所述的系统,其中,所述条目是利用用于调用被打补丁的RAM代码的跳转指令来更新的。
14.根据权利要求11所述的系统,其中,所述条目标识用于执行对应的ROM函数的ROM地址。
15.根据权利要求11所述的系统,其中,所述条目被更新为标识用于执行被打补丁的RAM代码的RAM地址。
16.一种系统,包括:
片上系统(SoC),其包括处理器、只读存储器(ROM)和随机存取存储器(RAM),所述处理器被配置为执行存储于所述ROM上的固件映像;
所述固件映像包括一个或多个可打补丁的ROM函数,每个可打补丁的ROM函数包括到RAM中固定位置的、用于调用对应的函数的链接。
17.根据权利要求16所述的系统,其中,所述固定RAM位置包括间接表中的条目。
18.根据权利要求17所述的系统,其中,所述条目是利用用于调用对应的可打补丁的ROM函数的跳转指令来初始化的。
19.根据权利要求17所述的系统,其中,所述条目是利用用于调用所述RAM中存储的被打补丁的代码的跳转指令来更新的。
20.根据权利要求17所述的系统,其中,所述条目标识用于执行对应的可打补丁的ROM函数的ROM地址。
21.根据权利要求17所述的系统,其中,所述条目被更新为标识用于执行被打补丁的RAM代码的RAM地址。
22.根据权利要求16所述的系统,其中,所述SoC是被并入便携式计算设备中的。
23.根据权利要求22所述的系统,其中,所述便携式计算设备包括智能电话。
24.根据权利要求16所述的系统,其中,所述SoC是被并入物联网(IoT)设备中的。
25.一种实施在计算机可读介质中并且由处理器执行以用于构建可打补丁的只读存储器(ROM)固件的计算机程序,所述计算机程序包括被配置为进行以下各项的逻辑单元:
接收源代码,所述源代码将被用作用于构建存储于片上系统(SoC)上的只读存储器(ROM)映像的输入;
识别在所述源代码中的多个ROM函数中的将可打补丁的一个或多个ROM函数;以及
通过生成补丁代码并且将所述补丁代码插入到对应的源代码中,来修改针对所述多个ROM函数中的将可打补丁的所述一个或多个ROM函数的源代码,所述补丁代码包括到随机存取存储器(RAM)中的固定位置的、用于调用对应的函数的链接。
26.根据权利要求25所述的计算机程序,还包括:用于基于包括所述补丁代码的所修改的源代码,来构建所述ROM映像的编译器和链接器。
27.根据权利要求25所述的计算机程序,其中,所述固定RAM位置包括在间接表中的条目。
28.根据权利要求27所述的计算机程序,其中,所述条目是利用用于调用对应的ROM函数的跳转指令来初始化的。
29.根据权利要求27所述的计算机程序,其中,所述条目是利用用于调用被打补丁的RAM代码的跳转指令来更新的。
30.根据权利要求27所述的计算机程序,其中,所述条目选择性地标识:用于执行对应的ROM函数的ROM地址,以及用于执行被打补丁的RAM代码的RAM地址。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/660,429 | 2017-07-26 | ||
US15/660,429 US20190034195A1 (en) | 2017-07-26 | 2017-07-26 | Systems and methods for providing patchable rom firmware |
PCT/US2018/034451 WO2019022827A1 (en) | 2017-07-26 | 2018-05-24 | SYSTEMS AND METHODS FOR PROVIDING A RETOUCHABLE ROM MICROLOGICIEL |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110945475A true CN110945475A (zh) | 2020-03-31 |
Family
ID=63667998
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880048933.4A Pending CN110945475A (zh) | 2017-07-26 | 2018-05-24 | 用于提供可打补丁的rom固件的系统和方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20190034195A1 (zh) |
CN (1) | CN110945475A (zh) |
WO (1) | WO2019022827A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112329373A (zh) * | 2021-01-04 | 2021-02-05 | 南京芯视界微电子科技有限公司 | 用于飞行时间测距芯片的数据处理系统及其方法 |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10990384B2 (en) * | 2018-09-27 | 2021-04-27 | Intel Corporation | System, apparatus and method for dynamic update to code stored in a read-only memory (ROM) |
FR3097994B1 (fr) | 2019-06-28 | 2022-03-11 | St Microelectronics Rousset | Modification d'une mémoire d'un microprocesseur sécurisé |
KR20210046418A (ko) | 2019-10-18 | 2021-04-28 | 삼성전자주식회사 | 보안 패치가 가능한 롬을 갖는 반도체 장치 및 그것의 패치 방법 |
CN111868684A (zh) * | 2020-01-17 | 2020-10-30 | 深圳市汇顶科技股份有限公司 | 为芯片打补丁的方法及芯片 |
CN113342555B (zh) * | 2020-02-18 | 2024-01-09 | 炬芯科技股份有限公司 | 一种修复rom的方法、装置以及存储介质 |
US11789708B2 (en) * | 2021-04-22 | 2023-10-17 | Silicon Laboratories Inc. | Compression of firmware updates |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7203813B1 (en) * | 2003-11-24 | 2007-04-10 | American Megatrends, Inc. | Methods, computer systems, and computer readable media for changing module pointer values upon switches between different modes of memory addressing |
US20100223602A1 (en) * | 2009-02-28 | 2010-09-02 | Kreek Conrad | Methods and tools for creation of read-only-memory software binary images and corresponding sortware patches |
US20150052596A1 (en) * | 2013-08-13 | 2015-02-19 | American Megatrends, Inc. | Network based firmware feature configuration and firmware image generation |
US20160019054A1 (en) * | 2014-07-21 | 2016-01-21 | Sandisk Technologies Inc. | Method and System for Generating a ROM Patch |
-
2017
- 2017-07-26 US US15/660,429 patent/US20190034195A1/en not_active Abandoned
-
2018
- 2018-05-24 CN CN201880048933.4A patent/CN110945475A/zh active Pending
- 2018-05-24 WO PCT/US2018/034451 patent/WO2019022827A1/en active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7203813B1 (en) * | 2003-11-24 | 2007-04-10 | American Megatrends, Inc. | Methods, computer systems, and computer readable media for changing module pointer values upon switches between different modes of memory addressing |
US20100223602A1 (en) * | 2009-02-28 | 2010-09-02 | Kreek Conrad | Methods and tools for creation of read-only-memory software binary images and corresponding sortware patches |
US20150052596A1 (en) * | 2013-08-13 | 2015-02-19 | American Megatrends, Inc. | Network based firmware feature configuration and firmware image generation |
US20160019054A1 (en) * | 2014-07-21 | 2016-01-21 | Sandisk Technologies Inc. | Method and System for Generating a ROM Patch |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112329373A (zh) * | 2021-01-04 | 2021-02-05 | 南京芯视界微电子科技有限公司 | 用于飞行时间测距芯片的数据处理系统及其方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2019022827A1 (en) | 2019-01-31 |
US20190034195A1 (en) | 2019-01-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110945475A (zh) | 用于提供可打补丁的rom固件的系统和方法 | |
US9558016B2 (en) | Platform system, method for changing support hardware configuration of universal extensible firmware interface basic input output system and computer program product | |
US8352577B2 (en) | Method and apparatus for updating information on an embedded system | |
US9411601B2 (en) | Flexible bootstrap code architecture | |
CN104281478B (zh) | 更新应用程序的方法及装置 | |
CN110032392B (zh) | 服务治理方法及装置、存储介质和电子设备 | |
US10102155B2 (en) | Method and device of information protection for micro control unit chip | |
CN112068903B (zh) | 应用程序的加载方法、应用程序的加载装置、介质与设备 | |
RU2611018C2 (ru) | Общий способ построения виртуального pci-устройства и виртуального mmio-устройства | |
CN109933381B (zh) | 一种内核的加载方法及装置 | |
JP2017510000A (ja) | コンピューティングデバイスを初期化するのに使われるファームウェアを修正するためのシステムおよび方法 | |
CN103853535A (zh) | 修改中间件的方法和装置 | |
CN110187923A (zh) | 一种应用于多cpu板卡的cpu启动方法和装置 | |
CN109656844A (zh) | 一种AT24xx EEPROM驱动方法和装置 | |
US10162616B2 (en) | System for binary translation version protection | |
WO2017166448A1 (zh) | 内核漏洞修复方法和装置 | |
CN110333872A (zh) | 一种应用的处理方法、装置、设备和介质 | |
US20170131980A1 (en) | Model driven architecture for network management and configuration | |
CN110741359B (zh) | 改变共享总线上集成电路的从属标识的系统和方法 | |
CN106484375B (zh) | 一种指令块加载方法、软交换设备及系统 | |
CN110045997B (zh) | 基础功能模块的对象初始化方法、装置、设备和存储介质 | |
CN110018831B (zh) | 程序处理方法、装置及计算机可读存储介质 | |
CN113448585B (zh) | 一种线程池的编译方法、装置、电子设备和存储介质 | |
US20180287962A1 (en) | Electronic apparatus and method for control thereof | |
CN108153564B (zh) | 界面管理方法、设备及系统和计算机可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20200331 |
|
WD01 | Invention patent application deemed withdrawn after publication |