一种实现单片机擦写Flash过程中辅助计数的方法

文档序号:6631660阅读:196来源:国知局
专利名称:一种实现单片机擦写Flash过程中辅助计数的方法
技术领域
本发明涉及单片机应用领域,特别是一种在芯片擦写Flash过程中辅助计数的方法。
背景技术
在大型的系统应用中,由于功能比较复杂,变化频繁,使版本下载更新成为必备的功能,同时对整个的下载更新过程中的完备功能要求也越来越高,需要有较高的精度来完成整个功能。在这些功能实现中,时钟中断中计数是常见的,也是必不可少的方法之一,比如用闪灯的方式来指示当前的处理状态是一种基本的需求,实际应用中,很多系统采用了单片机进行开发,由于软件封装到单片机芯片中,同时可能没有或没能外接设备来观察软件的运行状态,同时单片机资源比较少,就需要应用闪灯的方式来判别软件运行的大概情形,比如不同的闪灯方式能够指示下载开始,下载过程中等,事实上,这也是一种常见的,必要的外在观察方法,而点灯的频率计算就是通过时钟中断次数来计数的。
现在很多单片机分为两个区域,一个区域为Boot区,一个区域为版本区。通常Boot程序有两种用途——引导版本启动和擦写Flash,更新软件版本。在更新版本的处理过程中,各款芯片的要求不尽相同,也会在一定程度上影响到时钟中断的处理,具体说,就是有些芯片在操作Flash时要求屏蔽中断,而计数的频率依据往往是在时钟中断中进行计算,中断屏蔽后就失去了准确的时钟,也就不能够正常的计数,使需要依赖于计数实现的功能失去了运行状态判断的准确性,进而有可能使其失去原有的作用。
本文所涉及的实现单片机擦写Flash过程中辅助计数的方法的目的是为了保证单板擦写Flash过程中计数的基本可靠性和指示性,使用户能够根据辅助的方法补偿擦写过程中所带来的损失,从而可以最大限度的提高时钟计数的准确性,保证系统功能正常。简单的说,一般的此类应用只是用时钟中断进行计数,同时通过计数的结果进行相应的处理,一旦中断被关闭,则失去了计数依据,导致相应的功能处理出现偏差。本文中采用辅助计数来计算关闭中断的时间,补偿没有中断时所消耗的时间,从而辅助时钟中断准确的计时,保证功能实现所需时间的基本准确性。

发明内容
本发明所要解决的技术问题在于提供一种实现单片机擦写Flash过程中计数的方法,以克服现有技术中有些单片机擦写Flash过程中不能打开时钟中断导致时钟计数不准的缺点。
为了实现上述目的,本发明提供了一种实现单片机擦写Flash过程中辅助计数的方法,用于在擦写Flash的过程中,当时钟中断被屏蔽时进行辅助计数,以提高时钟计数的准确性,其中,包括步骤一,确定时钟中断关闭后程序运行的固定时间消耗和随机时间消耗的时间;及步骤二,在程序代码中实现辅助计数补偿所述固定时间消耗和随机时间消耗。
所述的方法,其中,所述步骤一进一步包括步骤一一,分析程序代码,确定操作Flash时打开中断和关闭中断的触发点;步骤一二,分析程序代码,确定关闭中断和打开中断过程中固定的代码执行部分和随机的执行部分;步骤一三,分析并计算固定代码部分执行的时间T1及随机执行部分消耗的时间范围T2~T3。
所述的方法,其中,在所述步骤一三中,利用示波器测量或时钟晶振计算所述固定代码部分执行的时间T1。
所述的方法,其中,在所述步骤二中,所述实现辅助计数补偿固定时间消耗的步骤进一步包括步骤二一,操作Flash前关闭时钟中断时,备份当前时钟计数结果;步骤二二,操作Flash后打开时钟中断前,还原时钟计数结果,根据辅助计数固定损耗所得的时间T1补偿保存的计数;步骤二三,打开一设定的用于退出所述Flash操作的中断,并在所述中断中进行计数判断,对超过计数值需要触发的功能进行处理,同时更新相应的计数值,保证计数的及时性和准确性。
所述的方法,其中,在所述步骤二中,所述实现辅助计数补偿随机时间消耗的步骤进一步包括步骤三二,操作Flash后打开时钟中断前,还原时钟计数结果,取(T2+T3)/2作为补偿值,补偿关闭时钟中断后延误的随机时间消耗。
所述的方法,其中,在所述步骤二中,所述实现辅助计数补偿固定时间消耗和随机时间消耗的时钟计数补偿值包括固定时间损耗T1和随机时间消耗(T2+T3)/2。
所述的方法,其中,所述步骤二三中用于退出所述Flash操作的中断为一定时器中断,且打开所述定时器中断的步骤中进一步包括根据硬件需要设定所述定时器中断的触发计数值的步骤。
所述的方法,其中,进一步包括一Flash操作完成后进入所述定时器中断服务程序,并判断所述补偿时间是否大于设定的功能触发的计数值的步骤;如是,则触发相应功能;如否,则对所述时钟计数值进行补偿,并在补偿后打开所述关闭的时钟中断。
所述的方法,其中,在所述实现辅助计数补偿时间消耗的步骤后,进一步包括一进入正常计数的步骤。
本发明的实现单片机擦写Flash过程中辅助计数的方法通过辅助计数,能够最大限度的提高时钟计数的准确性,保证需要计数判断来完成的功能的实现,增强了关闭中断时时钟计数的准确性和可靠性。
这种辅助计数补偿时钟中断延迟的方法,采用固定补偿和随机补偿来弥补擦写Flash过程中时钟中断被屏蔽后所带来的时钟计数不精确问题,提高了时钟计数的准确性,让我们可以更方便更有效的利用时钟计数来实现闪灯等有时序要求的功能,同时,由于随机补偿的存在,也决定了此方法只是能基本满足时间要求,并不能达到完全准确的辅助计数。不过,在实际应用中,基本上可以满足时间实时性的需求。
本发明的方法可用于当所使用的芯片在应用过程中正常擦写Flash会影响时钟中断,但又需要基本正常的计数来完成一定功能的情况。
以下结合附图和具体实施例对本发明进行详细描述,但不作为对本发明的限定。


图1为本发明方法的一种实现单片机Flash动态更新的方法图;图2为本发明方法的一种实现单片机Flash动态更新的方法实施图。
具体实施例方式
本发明所述的方法按以下方案实现设备单片机及其宿主单板测试仪器示波器等测量执行时间的仪器或无。
辅助计数方法需要包括以下两种因素1、时钟中断关闭后程序运行固定的时间消耗2、时钟中断关闭后程序运行随机的时间消耗由上可知,辅助计数的方法中需要分别进行处理固定和随机的事件的时间消耗,具体如下(固定时间指固定代码执行时间T1;辅助时间指硬件操作指令发出到完成的大概时间和代码的随即执行时间用T2~T3表示)1、确定固定时间消耗和辅助时间消耗的时间i.分析程序代码,确定操作Flash时打开时钟中断和关闭时钟中断的触发点。
ii.分析程序代码,确定关闭时钟中断和打开时钟中断过程中固定的代码执行部分和随机的执行部分。
iii.计算固定代码部分执行的时间,可利用示波器测量或时钟晶振计算处理指令的时间T1。
iv.分析并计算随机事件消耗的时间范围T2~T3,其中该时间范围一般根据代码当前运行的环境,以及代码本身的分支情况来确定。
2.程序代码中实现辅助计数补偿固定损耗i.操作Flash前关闭时钟中断时,备份当前时钟计数结果ii.操作Flash后打开时钟中断前,还原时钟计数结果,根据辅助计数固定损耗所得的时间T1补偿保存的计数iii.打开一中断,其中,该中断设定用于退出所述Flash操作,并在中断中进行计数判断,对超过计数值需要触发的功能进行处理,同时更新相应的计数值,保证计数的及时性和准确性,其中,该中断可以是单片机的任意中断,如定时器中断,具体可根据用户自己的设置来确定。
3.程序代码中实现辅助计数补偿随机损耗i.对于随机损耗T2~T3部分,没有通用的方法,这里我们采用平均法,取(T2+T3)/2作为补偿值,补偿关闭时钟中断后可能延误的时间ii.具体补偿方式实现同固定损耗的补偿方法。
下面结合附图对实现方法流程进行详细描述。
如图1所示,是实现单片机Flash擦除辅助计数方法图。主要包括5个部分,首先要根据具体的单片机硬件参数和软件程序代码确定固定消耗时间T1和随机的(即辅助的)时间消耗(这个时间我们只有一个确定的范围T2~T3,具体取平均值)(步骤101);关闭中断,(步骤102),记录处理功能触发标志处理的定时器X的时钟计数值(步骤103);进行Flash读写或擦除操作(步骤104);打开用于退出Flash操作(读写或擦除)的定时器Y的中断,并根据硬件需要设定中断触发计数值(步骤105);在定时器Y的中断服务程序中,对定时器X的补偿值T1+(T2+T3)/2进行判断,如果超过计数值则触发相应功能进行处理(可多个功能),否则进行计数值的补偿,并打开X的中断,关闭Y的中断(步骤106);最后进入正常的计数流程,功能处理标志在定时器X的中断服务程序中判断(步骤107)。
如图2所示,是本发明方法的实现单片机Flash擦除辅助计数实现方法流程图。下面在移动通信系统中,以Winbond的W78LE516P单片机在单板中的应用为例具体描述一下在进行Flash擦写时如何实现辅助计数。
这里我们要用到单片机的两个定时器分别是0和1,定时器1用于运行灯的计数功能,定时器0用于在擦写Flash完成后,从Flash的擦写状态跳出的触发中断。
根据补偿的时间设定定时器1的定时精度,保证定时精度大于补偿时间,(步骤201);进入Flash擦写操作状态之前关闭定时器1中断,记录当前定时器1的当前计数值(步骤202);启动定时器0中断,并根据单片机硬件本次Flash操作跳出时间设定中断触发时间(即定时器0的计数值)(步骤203);Flash操作完成,进入定时器0中断服务程序(步骤204);
进行补偿时间的判断,判断补偿时间是否大于某功能触发的计数值(步骤205);如是,则触发相应功能并清除本次定时器1的计数值(步骤206),然后转入步骤208;如否,则对定时器1的计数值进行补偿,重新启动定时器1中断(步骤207);进入正常计数,如果继续有Flash操作则回到步骤202继续执行(步骤208)。
本发明的实现在Flash擦写过程中辅助计数的方法,能保证在擦写Flash过程中计数的基本可靠性和指示性,可以最大限度的提高时钟计数的准确性,保证系统功能正常。
当然,本发明还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
权利要求
1.一种实现单片机擦写Flash过程中辅助计数的方法,用于在擦写Flash的过程中,当时钟中断被屏蔽时进行辅助计数,以提高时钟计数的准确性,其特征在于,包括步骤一,确定时钟中断关闭后程序运行的固定时间消耗和随机时间消耗的时间;及步骤二,在程序代码中实现辅助计数补偿所述固定时间消耗和随机时间消耗。
2.根据权利要求1所述的方法,其特征在于,所述步骤一进一步包括步骤一一,分析程序代码,确定操作Flash时打开所述时钟中断和关闭所述时钟中断的触发点;步骤一二,分析程序代码,确定关闭所述时钟中断和打开所述时钟中断过程中固定的代码执行部分和随机的执行部分;步骤一三,分析并计算固定代码部分执行的时间T1及随机执行部分消耗的时间范围T2~T3。
3.根据权利要求2所述的方法,其特征在于,在所述步骤一三中,利用示波器测量或时钟晶振计算所述固定代码部分执行的时间T1。
4.根据权利要求1、2或3所述的方法,其特征在于,在所述步骤二中,所述实现辅助计数补偿固定时间消耗的步骤进一步包括步骤二一,操作Flash前关闭时钟中断时,备份当前时钟计数结果;步骤二二,操作Flash后打开时钟中断前,还原时钟计数结果,根据辅助计数固定损耗所得的时间T1补偿保存的计数;步骤二三,打开一设定的用于退出所述Flash操作的中断,并在所述中断中进行计数判断,对超过计数值需要触发的功能进行处理,同时更新相应的计数值,保证计数的及时性和准确性。
5.根据权利要求4所述的方法,其特征在于,在所述步骤二中,所述实现辅助计数补偿随机时间消耗的步骤进一步包括步骤三二,操作Flash后打开时钟中断前,还原时钟计数结果,取(T2+T3)/2作为补偿值,补偿关闭时钟中断后延误的随机时间消耗。
6.根据权利要求5所述的方法,其特征在于,在所述步骤二中,所述实现辅助计数补偿固定时间消耗和随机时间消耗的时钟计数补偿值包括固定时间损耗T1和随机时间消耗(T2+T3)/2。
7.根据权利要求5或6所述的方法,其特征在于,所述步骤二三中用于退出所述Flash操作的中断为一定时器中断,且打开所述定时器中断的步骤中进一步包括根据硬件需要设定所述定时器中断的触发计数值的步骤。
8.根据权利要求7所述的方法,其特征在于,进一步包括一Flash操作完成后进入所述定时器中断服务程序,并判断所述补偿时间是否大于设定的功能触发的计数值的步骤;如是,则触发相应功能;如否,则对所述时钟计数值进行补偿,并在补偿后打开所述关闭的时钟中断。
9.根据权利要求1、2、3、5、6或8所述的方法,其特征在于,在所述实现辅助计数补偿时间消耗的步骤后,进一步包括一进入正常计数的步骤。
全文摘要
本发明涉及一种实现单片机擦写Flash过程中辅助计数的方法,用于在擦写Flash的过程中,当时钟中断被屏蔽时进行辅助计数,以提高时钟计数的准确性,其特征在于,包括步骤一,确定时钟中断关闭后程序运行的固定时间消耗和随机时间消耗的时间;及步骤二,在程序代码中实现辅助计数补偿所述固定时间消耗和随机时间消耗。本发明的实现单片机擦写Flash过程中辅助计数的方法通过辅助计数,能够最大限度的提高时钟计数的准确性,保证需要计数判断来完成的功能的实现,增强了关闭中断时时钟计数的准确性和可靠性。
文档编号G06F9/44GK1908905SQ20051008620
公开日2007年2月7日 申请日期2005年8月3日 优先权日2005年8月3日
发明者谢志雄, 崔卓 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1