修改硬掩膜产品固件错误功能的方法

文档序号:6336747阅读:290来源:国知局
专利名称:修改硬掩膜产品固件错误功能的方法
技术领域
本发明涉及IC设计和应用领域,特别是涉及一种用软件方法修改硬掩膜产品固件错误功能的方法。
背景技术
硬掩膜产品中固件是掩膜到ROM中的代码,只能一次写入不能修改,如在后期开发测试中发现固件有问题,芯片不能按照代码设计进行工作,为了修复固件错误只有重新进行掩膜,因此,在实际生产中对掩膜前的固件考核要求很高,稍有遗漏就会造成巨大的损失。为了保证掩膜的成功,通常的做法是,在掩膜前对固件进行全面的FPGA(现场可编程门阵列)验证和EDA(电子设计自动化)仿真,此项工作需要投入较多的人力和时间,即使这样,也不能百分之百的保证所有的代码功能都进行了验证,掩膜万无一失,仍然会在掩膜后发现一些问题而需要重新掩膜。一般来说,一个量产的产品在量产前都会有一到二次 MetalFix (技术改版)的计划以修补在验证阶段发现的问题。而对于项目时间比较紧张,要求一次掩膜成功,尽快提供样品的项目,掩膜前的验证更为重要,但百密一疏,往往会出现遗漏错误没有被发现的情况。

发明内容
本发明要解决的技术问题是提供一种修改硬掩膜产品固件错误功能的方法,能有效解决固件出错时,不能有效的进行后续验证和开发的问题。为解决上述技术问题,本发明的修改硬掩膜产品固件错误功能的方法,包括如下步骤步骤一、设计固件时对函数进行标记,针对每个标记函数生成一个补丁函数标记;步骤二、设计一张补丁函数配置信息表,该补丁函数配置信息表包括每个标记函数的补丁函数标记和补丁函数跳转地址;步骤三、对需要打补丁的标记函数产生补丁函数代码,先用文本编译器编辑代码, 再用编译工具编译生成可执行代码;步骤四、将所述补丁函数代码按照补丁函数配置信息表中的补丁函数跳转地址写入相应的EEPROM或Flash ;步骤五、将所述补丁函数配置信息表写入EEPROM或Flash ;步骤六、固件运行时在执行函数时进行预判,如果没有对应该标记函数的补丁函数标记表示不存在补丁,则继续执行固件代码;如果存在对应该标记函数的补丁函数标记表示存在补丁,则跳转到相应的补丁函数跳转地址执行补丁代码;执行完补丁代码后跳转回原固件地址,执行固件代码。芯片掩膜ROM后固件如有错误会影响后续开发测试工作,如需修复固件错误要重新进行掩膜。
本发明可以有效的解决固件出错时,不能有效的进行后续验证和开发的问题。在验证阶段,尽可能的完成固件的调试和错误修改,为后续重新掩膜提供正确保证,缩短产品开发周期。本发明能在固件出错时通过软件方法弥补错误,通过软件方法修改固件错误功能,在固件有问题的情况下,仍然能使用目前的产品进行后续的开发和测试工作;保证芯片能正常工作,不影响后续开发测试工作,也为重新掩膜的正确性提供了保障。


下面结合附图与具体实施方式
对本发明作进一步详细的说明图1是EEPROM或Flash中数据空间的划分示意图;图2是补丁函数配置信息数据结构图;图3是存放在EEPROM或Flash中补丁函数配置信息样例图;图4是本发明的方法一实施例控制流程示意图。图5是补丁下载工具主界面。
具体实施例方式在实施本发明时,需要对可写入的EEPROM或Flash空间进行合理的划分。参见图 1,图中将EEPROM或Flash中数据空间划分为三块1、补丁配置文件区域(静态区域),用于存放补丁函数配置信息表,补丁配置文件区域的大小为64字节。2、应用文件区域,用于存放具体应用文件。此部分与应用相关。3、补丁代码区域,用于存放补丁代码。结合图2所示,补丁函数配置信息表中每个补丁函数配置信息由4个字节组成前两个字节代表待打补丁函数的补丁函数标记(补丁函数指针);后两个字节表示补丁函数跳转地址,实际使用中用偏移地址表示,补丁函数跳转地址为偏移地址加上动态区域的基地址。结合图3所示,补丁函数配置信息表存放在补丁配置文件区域,该文件区域的大小为64字节,该区域存放在EEPROM或Flash中的固定区域。结合图4所示,在一实施例中,所述修改硬掩膜产品固件错误功能的方法,包括如下步骤步骤一、编写固件时,对可能出错的函数进行标记,针对每个标记函数生成一个补丁函数标记。函数标记可以是十六进制表示的数据,如0x01,0x02等。设计固件时对函数进行标记,针对每个标记函数生成一个补丁函数标记。步骤二、制作一张补丁配置信息表,内容包括每个标记函数的补丁函数标记,补丁函数跳转地址,也可以增加其他控制标识方便使用。每个补丁函数配置信息可以是一种数据结构,每个数据结构具体可包括两个字节的补丁函数标记,两个字节的补丁函数跳转地址。为了保证程序的运行速度,补丁函数配置信息不能太大,否则程序检索和判断的时间消耗很大。可以根据实际需要修改补丁函数配置信息表内容。补丁函数跳转地址根据芯片内部可读写EEPROM或Flash的空间来确定,实际做法可以是将EEPROM或Flash的某个地址开始的一段空间作为补丁代码存放的空间,所有的补丁函数跳转地址都是这段空间的某个地址。步骤三、对需要打补丁的标记函数产生补丁函数代码,先用文本编辑器编辑代码, 再用编译工具(例如,ARM公司提供的CodeWarrior for ARMDeveloper Suite VL 2编译工具)编译生成可执行代码。当发现固件的函数有问题时,需要对此函数进行修改,修改工作可以在文本编辑器中进行,修改后的补丁函数代码需要通过编译成为可执行代码才能写入EEPROM或Flash中。编译时,可以单独建立一个补丁工程,将修改后的补丁函数代码导入工程,补丁函数代码中调用固件中的函数的全部变量,在固件设计时统一放在一个全局变量头文件中,补丁工程导入此全局变量头文件;补丁函数代码中调用固件中的函数需要使用绝对地址调用。编译正确后生成的文件即为可执行补丁代码。对多个函数打补丁时, 需要将每个函数的起始地址定位并整理到补丁函数配置信息表中。步骤四、将补丁函数代码按照补丁函数配置信息表中的补丁函数跳转地址写入相应的EEPROM或Flash。此过程使用补丁下载工具进行。步骤五、将补丁函数配置信息表写入Flash或EEPROM的特定地址,写入过程同样使用补丁下载工具。具体实施时结合图5所示,补丁下载工具是为了便于下载补丁代码与补丁配置信息的工具,该工具主要使用补丁固件中设计的写EERPOM或Flash指令,把补丁相关配置信息写入到EEPROM或Flash中。在使用时,修复人员可以先在补丁下载工具中输入补丁函数标记、补丁函数跳转地址、可执行的补丁代码文件,然后点击下载按钮,补丁下载工具会调用固件中设计的写EERPOM或Flash指令先将可执行的补丁代码写入补丁函数跳转地址开始的一段EERPOM或Flash空间,最后补丁下载工具会把补丁函数配置信息写到 EEPROM或Flash中补丁函数配置文件区中。步骤六、芯片重新上电固件运行时首先读入补丁函数配置信息表,保存在可快速读写的内存中的某个位置,以提高后续访问的速度。在执行到步骤四中的被补丁的标记函数时,程序根据补丁函数标记判断补丁函数配置信息表中是否存在补丁,如果补丁函数配置信息表中有对应的补丁函数标记,表示存在补丁代码,则会根据相应的补丁函数跳转地址跳转到EEPROM或Flash中的补丁代码存放地址执行。步骤七、补丁代码执行完后要跳转回原跳转地址(固件地址),执行固件代码。补丁函数配置信息表不宜过大,以保证程序运行的速度。固件测试时,根据实际需要,可以通过扩充或减少补丁配置文件区域大小的方法实现。下面的例子有助于更好的理解本发明,结合图4所示步骤1、芯片上电后,先读取补丁配置文件区的补丁函数配置信息。步骤2、芯片在执行具体函数时,先查询补丁函数配置信息中是否存在该函数的补丁,具体是在补丁函数配置信息中查找对应的补丁函数标记是否存在。步骤3、如果补丁函数标记存在,则根据补丁函数跳转地址跳转到EEPROM或Flash 中的补丁代码区域执行;如果没有则继续执行ROM中的固件代码。下面给出的是该实施例的伪代码void SysSelectO{查补丁函数配置信息表是否有SysSelect函数的补丁函数
标记;If (存在SysSelect函数的补丁函数标记){从补丁函数配置信息表获取SysSelect函数对应的补丁函数跳转地址;SysSelect函数补丁实际地址为SysSelect函数的补丁函数跳转地址(偏移地址)加上基地址;跳转;执行 SysSelect 函数;返回;}Else{执行固化在I3ROM中的代码;}}以上通过结合具体实施方式
对本发明作了详细的说明,这些并非构成对本发明的限制,在不脱离本发明原理的情况下,本领域技术人员还可做出若干变形和改进,这些也应视为属于本发明的保护范围。
权利要求
1.一种修改硬掩膜产品固件错误功能的方法,其特征在于,包括如下步骤步骤一、设计固件时对函数进行标记,针对每个标记函数生成一个补丁函数标记;步骤二、设计一张补丁函数配置信息表,该补丁函数配置信息表包括每个标记函数的补丁函数标记和补丁函数跳转地址;步骤三、对需要打补丁的标记函数产生补丁函数代码,先用文本编辑器编辑代码,再用编译工具编译生成可执行代码;步骤四、将所述补丁函数代码按照补丁函数配置信息表中的补丁函数跳转地址写入相应的 EEI3ROM 或 Flash ;步骤五、将所述补丁函数配置信息表写入EEPROM或Flash ;步骤六、固件运行时在执行函数时进行预判,如果没有对应该标记函数的补丁函数标记表示不存在补丁,则继续执行固件代码;如果存在对应该标记函数的补丁函数标记表示存在补丁,则跳转到相应的补丁函数跳转地址执行补丁代码;执行完补丁代码后跳转回原固件地址,执行固件代码。
2.如权利要求1所述的方法,其特征在于执行步骤一时,可以对每个函数都进行标记,也可以仅对可能出错的函数进行标记。
3.如权利要求1所述的方法,其特征在于步骤二所述的补丁函数配置信息表中的每个补丁函数配置信息是一种数据结构,每个数据结构包括两个字节的补丁函数标记,两个字节的补丁函数跳转地址。
4.如权利要求1所述的方法,其特征在于步骤二所述的补丁函数跳转地址是将 EEPROM或Flash的某个地址开始的一段空间作为补丁代码存放的空间,所有的补丁跳转地址都是这段空间的某个地址。
5.如权利要求1所述的方法,其特征在于执行步骤三进行编译时单独建立一个补丁工程,将补丁函数代码导入该补丁工程,补丁函数代码调用固件中的函数的全部变量,在固件设计时统一放在一个全局变量头文件中,补丁工程导入该全局变量头文件;补丁函数代码编译时调用固件中的函数需要使用绝对地址调用。
6.如权利要求1所述的方法,其特征在于执行步骤三需对多个函数打补丁时,需要将每个函数的起始地址定位并整理到所述补丁函数配置信息表中。
7.如权利要求1所述的方法,其特征在于执行步骤六时,固件需要先读入所述补丁函数配置信息表,并将该补丁函数配置信息表中的数据存储在内存中。
全文摘要
本发明公开了一种修改硬掩膜产品固件错误功能的方法,在设计固件时对函数进行标记,并在执行函数时做判断分支;针对有错误的固件代码产生补丁代码,编译后将补丁代码写入EEPROM或Flash的某个地址;产生补丁函数配置信息,写入EEPROM或Flash的某个地址。芯片上电后查询补丁函数配置信息,如补丁函数标记存在表示补丁存在,就跳转到补丁代码执行,执行完毕后跳转回固件代码,继续执行固件。本发明能有效解决固件出错时,不能有效的进行后续验证和开发的问题;能在固件出错时通过软件方法弥补错误,保证芯片能正常工作,不影响后续开发测试工作,也为重新掩膜的正确性提供了保障。
文档编号G06F17/50GK102479265SQ20101055895
公开日2012年5月30日 申请日期2010年11月25日 优先权日2010年11月25日
发明者倪以金, 施燕 申请人:上海华虹集成电路有限责任公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1