一种OTP烧录方法及装置
技术领域
本发明属于OTP烧录领域,尤其涉及一种OTP烧录方法及装置。
背景技术
随着程序代码存储器的不断发展,一次性可编程(One Time Programmble,OTP)凭借低成本的优势,广泛应用于电子设备中。OTP缺陷在于只能烧写一次,这制约OTP的应用范畴,尤其是一些中低端市场,程序代码需要升级和打补丁的,可能需要2到4次的烧录。
然而,现有OTP多次烧录时,由于难以确定下一次烧录程序代码的位置,容易出现误烧录程序代码的情况,不利于提高程序代码的可读性和可移植性。其原因在于,目前市面上一般采用软件取巧的方法,比如在可能出错或需要升级的程序代码区间预留一些空白空间,当需要修改的时候,直接将原来的程序代码段改成无效指令(一般为NOP),再将空白空间填写程序代码。这种方法风险较大,一般很难预料到所有的可能性,也就难以确定下一次烧录程序代码的位置,一旦某个地方需要修改而没有预留空间或者没有预留足够空间,就无法弥补回来,因此大大影响了程序代码的可读性和可移植性。
发明内容
本发明实施例的目的在于提供一种OTP烧录方法,旨在解决现有OTP多次烧录时,由于难以确定下一次烧录程序代码的位置,容易出现误烧录程序代码的情况,不利于提高程序代码的可读性和可移植性的问题。
本发明实施例是这样实现的,一种OTP烧录方法,包括:
将一次性可编程OTP的存储空间分成多个页Page;
在OTP信息块中,配置每个所述Page对应的Page选择位;
检测待烧录的Page对应的Page选择位是否已使用;
若待烧录的Page对应的Page选择位没有使用时,将待烧录的Page对应的OTP存储地址设为起始地址,从所述起始地址起,在待烧录的Page中烧录程序代码。
本发明实施例的另一目的在于提供一种OTP烧录装置,包括:
Page划分模块,用于将一次性可编程OTP的存储空间分成多个页Page;
Page选择位配置模块,用于在OTP信息块中,配置每个所述Page对应的Page选择位;
Page选择位检测模块,用于检测待烧录的Page对应的Page选择位是否已使用;
程序代码烧录模块,用于若待烧录的Page对应的Page选择位没有使用时,将待烧录的Page对应的OTP存储地址设为起始地址,从所述起始地址起,在待烧录的Page中烧录程序代码。
在本发明实施例中,将待烧录的Page对应的OTP存储地址设为起始地址,从所述起始地址起,在待烧录的Page中烧录程序代码,解决了现有OTP多次烧录时,由于难以确定下一次烧录程序代码的位置,容易出现误烧录程序代码的情况,不利于提高程序代码的可读性和可移植性的问题。其有益效果在于以下两方面,一方面充分利用了OTP存储地址,避免了容易出现误烧录程序代码的情况,提高了程序代码的可读性和可移植性,另一方面,提高了烧录程序代码的成功率,节省了烧录的成本及时间。
附图说明
图1是本发明实施例提供的OTP烧录方法的实现流程图;
图2是本发明实施例提供的配置Page使用标志位的实现流程图;
图3是本发明实施例提供的配置Page加密位的实现流程图;
图4是本发明实施例提供的烧录的程序代码的实现流程图;
图5是本发明实施例提供的OTP烧录装置的结构框图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
实施例一
图1是本发明实施例提供的OTP烧录方法的实现流程图,详述如下:
在步骤S101中,将一次性可编程OTP的存储空间分成多个页Page;
在步骤S102中,在OTP信息块中,配置每个所述Page对应的Page选择位;
在步骤S103中,检测待烧录的Page对应的Page选择位是否已使用;
在步骤S104中,若待烧录的Page对应的Page选择位没有使用时,将待烧录的Page对应的OTP存储地址设为起始地址,从所述起始地址起,在待烧录的Page中烧录程序代码。
其中,若待烧录的Page对应的Page选择位已使用时,选取未使用的Page对应的OTP存储地址设为起始地址,在未使用的Page中烧录程序代码。
其中,若待烧录的Page对应的Page选择位已使用时,选取未使用的Page对应的OTP存储地址设为起始地址,在未使用的Page中烧录程序代码,具体为:
若待烧录的Page对应的Page选择位已使用时,依次检测待烧录的Page下一个Page对应的Page选择位是否已使用,直至检测到Page选择位未使用的Page,将检测到的Page作为未使用的Page,选取未使用的Page对应的OTP存储地址设为起始地址,在未使用的Page中烧录程序代码。
在本发明实施例中,充分利用了OTP存储地址,避免了容易出现误烧录程序代码的情况,提高了程序代码的可读性和可移植性,同时提高了烧录程序代码的成功率,节省了烧录的成本及时间。
实施例二
图2是本发明实施例提供的配置Page使用标志位的实现流程图,详述如下:
在步骤S201中,在OTP信息块中,配置每个所述Page对应的Page使用标志位;
在步骤S202中,若所述Page已使用,在所述Page对应的Page使用标志位中烧录成0。
实施例三
图3是本发明实施例提供的配置Page加密位的实现流程图,详述如下:
在步骤S301中,在OTP信息块中,配置每个所述Page对应的Page加密位;
在步骤S301中,在所述Page加密位中烧录成预设的加密值,加密烧录的程序代码。
实施例四
本发明实施例描述了运行烧录的程序代码的实现流程,详述如下:
从排序最后的Page起,运行烧录的程序代码。
实施例五
图4是本发明实施例提供的烧录的程序代码的实现流程图,详述如下:
在步骤S401中,获取每个所述Page选择位的使用时间;
在步骤S402中,根据使用时间的先后,对每个所述Page对应的Page选择位进行排序,选出排序最后的Page;
在步骤S403中,从排序最后的Page起,运行烧录的程序代码。
实施例六
本发明实施例描述了OTP烧录方法,在实际应用中较佳的实施流程,详述如下:
硬件将OTP存储空间分成多个Page,可以选择从任何一个Page开始运行程序,Page数量依据产品和OTP空间决定;
OTP的OTP信息块Information Block存放Page选择位,由用户通过烧录工具选择。由于OTP只要Bit被烧写成0后就不能再烧录,只要后面的Page选择位使用了,前面的Page选择位即使使能也无效了,如第1个Page和第2个Page选择位同时被使能了,Page1无效,程序会从Page2开始运行,相当于整个程序地址增加了一个Page地址量,包括中断入口地址,因此在程序代码中,不用调整起始地址,也不用担心中断受影响,Page1的程序直接作废;
此外,程序代码的空间不受Page限制,程序代码占用多个Page只会影响烧录次数。
实施例七
图5是本发明实施例提供的OTP烧录装置的结构框图,该装置可以运行于蓝牙芯片中。为了便于说明,仅示出了与本实施例相关的部分。
参照图5,该OTP烧录装置,包括:
Page划分模块51,用于将一次性可编程OTP的存储空间分成多个页Page;
Page选择位配置模块52,用于在OTP信息块中,配置每个所述Page对应的Page选择位;
Page选择位检测模块53,用于检测待烧录的Page对应的Page选择位是否已使用;
程序代码烧录模块54,用于若待烧录的Page对应的Page选择位没有使用时,将待烧录的Page对应的OTP存储地址设为起始地址,从所述起始地址起,在待烧录的Page中烧录程序代码。
在本实施例的一种实现方式中,所述OTP烧录装置,还包括:
Page使用标志位配置模块,用于在OTP信息块中,配置每个所述Page对应的Page使用标志位;
Page使用标志位写入模块,用于若所述Page已使用,在所述Page对应的Page使用标志位中烧录成0。
在本实施例的一种实现方式中,所述OTP烧录装置,还包括:
Page加密位配置模块,用于在OTP信息块中,配置每个所述Page对应的Page加密位;
程序代码加密模块,用于在所述Page加密位中烧录成预设的加密值,加密烧录的程序代码。
在本实施例的一种实现方式中,所述OTP烧录装置,还包括:
运行烧录程序代码配置模块,用于配置运行烧录程序代码的功能,所述运行烧录程序代码的功能,具体为:
从排序最后的Page起,运行烧录的程序代码。
在本实施例的一种实现方式中,所述运行烧录程序代码配置模块,具体包括:
使用时间获取单元,用于获取每个所述Page选择位的使用时间;
排序单元,用于根据使用时间的先后,对每个所述Page对应的Page选择位进行排序,选出排序最后的Page;
运行单元,用于从排序最后的Page起,运行烧录的程序代码
本发明实施例提供的装置可以应用在前述对应的方法实施例中,详情参见上述实施例的描述,在此不再赘述。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件的方式来实现。所述的程序代码可以存储于可读取存储介质中,所述的存储介质,如随机存储器、闪存、只读存储器、可编程只读存储器、电可擦写可编程存储器、寄存器等。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件执行本发明各个实施例所述的方法。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。