程序写入方法和装置制造方法及图纸

技术编号:15574274 阅读:85 留言:0更新日期:2017-06-12 02:52
本发明专利技术公开了一种程序写入方法和装置。该方法包括:从预留区域中获取已经写入到存储区域的第一程序的第一起始地址,其中,存储区域为一次性可编程器件中的存储区域,存储区域中预留了多个预留区域,每个预留区域均用于保存在存储区域中存储的程序的起始地址;获取在存储区域中紧邻第一程序之后的能够写入第二程序的地址;获取第二起始地址,其中,第二起始地址的值满足如下条件:大于等于能够写入第二程序的地址、并且将能够写入第二程序的地址中的0修改为1后能够得到的;根据第二起始地址将预留区域中的第一起始地址中的0修改为1;从第二起始地址写入第二程序。通过本发明专利技术,解决了相关技术中OTP程序起始地址烧录次数有限的问题。

【技术实现步骤摘要】
程序写入方法和装置
本专利技术涉及计算机领域,具体而言,涉及一种程序写入方法和装置。
技术介绍
一次性可编程(OneTimeProgrammable,简称为OTP)程序中,每一次程序的更新,都需要记录当前的程序起始地址,当下一次更新时,可以根据OTP的起始地址以及程序的长度(长度可以从原程序中读到),进而计算出新的起始地址。由于OTP的一次性,故OTP的内容只能写1,不能写0。但是目前OTP的结构只支持提前预留OTP起始地址的方式,图1是根据本专利技术第一实施例的一种OTP起始地址记录的示意图,如图1所示,如果要烧录16次,需要提前在OTP的开头部分预留16words空间来记录当前程序的起始地址,一旦16次烧录完毕,OTP将无法记录程序起始地址,导致其无法再次升级。以目前OTP结构为例,word0至word0012为OPT的16行字,word0(第一行字)全部为0,word1ringctrl用来校准芯片内部时钟,Res用来校准内部阻止。图1中,chipidhigh/chipidlow用于记录新的chipID名称。Word0和word1都是固定的内容,不会涉及到OTP程序的更新。从word2开始记录程序的起始地址。fwstartaddresslow/fwstartaddresshigh,记录了当前程序应该从第几个word运行,比如fwstartaddresslow=0x0a,fwstartaddresshigh=0x09,这就意味着,当前程序需要从Word0x90a开始运行。为了能够保证程序能够运行16次,所以word0x02~word0x12,都被预留成0x00,在OTP第一次烧录时真正的程序从word0x12开始运行,fwstartaddresslow被写成0x12,fwstartaddresshigh被写成0x00。图2是根据本专利技术第二实施例的一种OTP起始地址记录的示意图,如图2所示,当OTP第二次烧录时,将word1擦除(全部写成0xff0xff0xff0xff0xff0xff0xff0xff0xff),在word3重新写入新的起始地址。现有技术的OTP只能烧录16次,一旦烧录完毕将无法记录程序起始地址,导致其无法再次升级。针对相关技术中OTP程序起始地址烧录次数有限的问题,目前尚未提出有效的解决方案。
技术实现思路
本专利技术的主要目的在于提供一种程序写入方法,以解决相关技术中OTP程序起始地址烧录次数有限的问题。为了实现上述目的,根据本专利技术的一个方面,提供了一种程序写入方法,该方法包括:从预留区域中获取已经写入到存储区域的第一程序的第一起始地址,其中,所述存储区域为一次性可编程器件中的存储区域,所述存储区域中预留了多个预留区域,每个预留区域均用于保存在所述存储区域中存储的程序的起始地址;获取在所述存储区域中紧邻所述第一程序之后的能够写入第二程序的地址;获取第二起始地址,其中,所述第二起始地址的值满足如下条件:大于等于能够写入所述第二程序的地址、并且将所述第一起始地址中的0修改为1后能够得到的;根据所述第二起始地址将所述预留区域中的第一起始地址中的0修改为1;从所述第二起始地址写入所述第二程序。进一步地,获取第二起始地址包括:确定所述第一起始地址中的一个或多个0修改为1后能够得到的修改值;计算所述修改值与所述能够写入所述第二程序的地址的差值;确定所述差值中数值为正且最小的差值所对应的所述修改值;将所对应的所述修改值作为所述第二起始地址。进一步地,在计算所述修改值与所述能够写入所述第二程序的地址的差值之后,所述方法还包括:如果所述差值为负数,则在所述第一起始地址的存储区域后的存储区域内写入所述第二起始地址。进一步地,在获取在所述存储区域中紧邻所述第一程序之后的能够写入第二程序的地址之后,所述方法还包括:获取预设的无效字节数,其中,所述无效字节数为一次性可编程器件中的存储区域中两个程序的起始地址之间最多空闲的字节数;判断所述第二起始地址与所述第一起始地址之间空闲的字节数是否小于等于所述最多空闲字节数;如果所述第二起始地址与所述第一起始地址之间空闲的字节数小于等于所述最多空闲字节数,则从所述第二起始地址写入所述第二程序;如果所述第二起始地址与所述第一起始地址之间空闲的字节数大于所述最多空闲字节数,则根据多出的字节数擦除所述第一起始地址的末尾位,在擦除后的位置处写入所述第二程序。进一步地,获取第二起始地址包括:将所述第一起始地址与所述能够写入所述第二程序的地址进行或运算,得到或运算结果;将所述或运算结果的值作为所述第二起始地址。为了实现上述目的,根据本专利技术的另一方面,还提供了一种程序写入装置,该装置包括:第一获取单元,用于从预留区域中获取已经写入到存储区域的第一程序的第一起始地址,其中,所述存储区域为一次性可编程器件中的存储区域,所述存储区域中预留了多个预留区域,每个预留区域均用于保存在所述存储区域中存储的程序的起始地址;第二获取单元,用于获取在所述存储区域中紧邻所述第一程序之后的能够写入第二程序的地址;第三获取单元,用于获取第二起始地址,其中,所述第二起始地址的值满足如下条件:大于等于能够写入所述第二程序的地址、并且将所述第一起始地址中的0修改为1后能够得到的;修改单元,用于根据所述第二起始地址将所述预留区域中的第一起始地址中的0修改为1;第一写入单元,用于从所述第二起始地址写入所述第二程序。进一步地,所述第三获取单元包括:第一确定模块,用于确定所述第一起始地址中的一个或多个0修改为1后能够得到的修改值;第一计算模块,用于计算所述修改值与所述能够写入所述第二程序的地址的差值;第二确定模块,用于确定所述差值中数值为正且最小的差值所对应的所述修改值;修改模块,用于将所对应的所述修改值作为所述第二起始地址。进一步地,所述装置还包括:第二写入单元,用于在计算所述修改值与所述能够写入所述第二程序的地址的差值之后,如果所述差值为负数,则在所述第一起始地址的存储区域后的存储区域内写入所述第二起始地址。进一步地,所述装置还包括:第四获取单元,用于在获取在所述存储区域中紧邻所述第一程序之后的能够写入第二程序的地址之后,获取预设的无效字节数,其中,所述无效字节数为一次性可编程器件中的存储区域中两个程序的起始地址之间最多空闲的字节数;判断单元,用于判断所述第二起始地址与所述第一起始地址之间空闲的字节数是否小于等于所述最多空闲字节数;第三写入单元,用于在所述第二起始地址与所述第一起始地址之间空闲的字节数小于等于所述最多空闲字节数时,从所述第二起始地址写入所述第二程序,所述第二起始地址与所述第一起始地址之间空闲的字节数大于所述最多空闲字节数时,根据多出的字节数擦除所述第一起始地址的末尾位,在擦除后的位置处写入所述第二程序。进一步地,所述第三获取单元包括:第二计算模块,用于将所述第一起始地址与所述能够写入所述第二程序的地址进行或运算,得到或运算结果;处理模块,用于将所述或运算结果的值作为所述第二起始地址。本专利技术通过从预留区域中获取已经写入到存储区域的第一程序的第一起始地址,其中,存储区域为一次性可编程器件中的存储区域,存储区域中预留了多个预留区域,每个预留区域均用于保存在存储区域中存储的程序的起始地址;获取在存储区域中紧邻第一本文档来自技高网
...
程序写入方法和装置

【技术保护点】
一种程序写入方法,其特征在于,包括:从预留区域中获取已经写入到存储区域的第一程序的第一起始地址,其中,所述存储区域为一次性可编程器件中的存储区域,所述存储区域中预留了多个预留区域,每个预留区域均用于保存在所述存储区域中存储的程序的起始地址;获取在所述存储区域中紧邻所述第一程序之后的能够写入第二程序的地址;获取第二起始地址,其中,所述第二起始地址的值满足如下条件:大于等于能够写入所述第二程序的地址、并且将所述第一起始地址中的0修改为1后能够得到的;根据所述第二起始地址将所述预留区域中的第一起始地址中的0修改为1;从所述第二起始地址写入所述第二程序。

【技术特征摘要】
1.一种程序写入方法,其特征在于,包括:从预留区域中获取已经写入到存储区域的第一程序的第一起始地址,其中,所述存储区域为一次性可编程器件中的存储区域,所述存储区域中预留了多个预留区域,每个预留区域均用于保存在所述存储区域中存储的程序的起始地址;获取在所述存储区域中紧邻所述第一程序之后的能够写入第二程序的地址;获取第二起始地址,其中,所述第二起始地址的值满足如下条件:大于等于能够写入所述第二程序的地址、并且将所述第一起始地址中的0修改为1后能够得到的;根据所述第二起始地址将所述预留区域中的第一起始地址中的0修改为1;从所述第二起始地址写入所述第二程序。2.根据权利要求1所述的方法,其特征在于,获取第二起始地址包括:确定所述第一起始地址中的一个或多个0修改为1后能够得到的修改值;计算所述修改值与所述能够写入所述第二程序的地址的差值;确定所述差值中数值为正且最小的差值所对应的所述修改值;将所对应的所述修改值作为所述第二起始地址。3.根据权利要求2所述的方法,其特征在于,在计算所述修改值与所述能够写入所述第二程序的地址的差值之后,所述方法还包括:如果所述差值为负数,则在所述第一起始地址的存储区域后的存储区域内写入所述第二起始地址。4.根据权利要求3所述的方法,其特征在于,在获取在所述存储区域中紧邻所述第一程序之后的能够写入第二程序的地址之后,所述方法还包括:获取预设的无效字节数,其中,所述无效字节数为一次性可编程器件中的存储区域中两个程序的起始地址之间最多空闲的字节数;判断所述第二起始地址与所述第一起始地址之间空闲的字节数是否小于等于所述最多空闲字节数;如果所述第二起始地址与所述第一起始地址之间空闲的字节数小于等于所述最多空闲字节数,则从所述第二起始地址写入所述第二程序;如果所述第二起始地址与所述第一起始地址之间空闲的字节数大于所述最多空闲字节数,则根据多出的字节数擦除所述第一起始地址的末尾位,在擦除后的位置处写入所述第二程序。5.根据权利要求1所述的方法,其特征在于,获取第二起始地址包括:将所述第一起始地址与所述能够写入所述第二程序的地址进行或运算,得到或运算结果;将所述或运算结果的值作为所述第二起始地址。6.一种程序写入装置,其特征在于,包括:第一获取单元,用于从预留区域中获取已经写入到存储区域的第一程序的第一起始地址,其中,...

【专利技术属性】
技术研发人员:史文森赵轶
申请(专利权)人:硅谷数模半导体北京有限公司硅谷数模国际有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1