连续访问环境下的中断恢复方法及装置的制作方法

文档序号:6550541阅读:113来源:国知局
专利名称:连续访问环境下的中断恢复方法及装置的制作方法
技术领域
本发明涉及一种中断恢复方法及装置,尤其涉及一种连续访问环境下的中断恢复方法及装置。
背景技术
嵌入式实时系统(Real-Time System)是一个能够在指定或者确定的时间内对外部事件作出响应的系统,其重要的特性是实时响应性。嵌入式实时系统对外部事件的响应一般都是通过中断来处理的,其对中断的处理方式,直接影响到系统的实时性能。
实时多任务操作系统是嵌入式应用开发的基础平台。早期的嵌入式实时应用软件直接在处理器上运行,没有操作系统的支持,现在的大多嵌入式应用开发都需要嵌入式操作系统的支持。实际上,此时的嵌入式操作系统相当于一个通用而复杂的主控程序,为嵌入式应用软件提供更强大的开发平台和运行环境。
在嵌入式系统中,软件程序的执行经常会被中断打断。CPU通常会提供中断处理机制,在中断出现时,记录当前执行程序的上下文,在退出中断处理时,利用记录的程序上下文来恢复中断出现前的程序执行环境。这种机制保证了程序的连续运行。
但是在一些有特定要求的系统中,只有这种机制是不够的。如图1所示,描述了VC0568系统在端口(port)模式时,访问静态随机存取存储器(SRAM)的过程。
第一步,软件设置访问操作是读或者写(步骤101);第二步,软件设置访问的SRAM的地址(步骤102);第三步,软件设置访问SRAM的端口地址(步骤103);
以上步骤过程必须是猝发(burst)的。完成以上过程后,软件就连续向端口写数据,完成第四步直至第n步(步骤104、105)。
硬件通过端口得到数据,每收到4个字节(byte)数据后,一次写入设定的SRAM地址。在写的过程中,硬件根据设置的初始SRAM地址,会自动增加SRAM的访问地址。
在连续向端口发送数据的过程中,如果中断出现,并且在中断处理过程中,进行了SRAM的访问。根据前面SRAM的访问描述,可以知道,在现有的中断处理机制下,尽管根据记录的执行程序上下文,写数据的动作得以恢复,但SRAM的访问地址会被更改。而且,如果中断出现在硬件等待4byte数据的过程中,已经送入的前几个数据(1,2或者3个)会被扔掉。中断处理返回后,再继续进行SRAM的连续访问会造成错误的结果。
因此,如何针对某些特定的系统要求,提供一种新的中断恢复机制,以保证中断前后的访问地址与写入数据的一致,正确恢复中断前的连续访问,已经成为业内亟待解决的问题。

发明内容
本发明所要解决的技术问题在于提供一种连续访问环境下的中断恢复方法及装置,以保证中断前后的访问地址与写入数据的一致。
本发明提供一种连续访问环境下的中断恢复方法,包括如下步骤(1)中断出现时,从硬件读出当前正在访问的SRAM地址和硬件正在接收的数据;(2)记录所述读出的当前访问地址与正在接收的数据;(3)中断处理结束要返回中断前的连续访问时,利用已记录的所述当前访问地址,根据字节对齐的要求,计算出当前访问地址的上一个字节对齐地址;(4)将所述上一个字节对齐地址设置为当前起始访问地址,向硬件连续写入已记录的所述正在接收的数据。
本发明还提供一种连续访问环境下的中断恢复方法,包括如下步骤
(1)中断出现时,从硬件读出当前正在访问的SRAM地址和硬件正在接收的数据;(2)利用所述当前访问地址,根据字节对齐的要求,计算出当前访问地址的上一个字节对齐地址;(3)记录所述硬件正在接收的数据与上一个字节对齐地址;(4)中断处理结束要返回中断前的连续访问时,将已记录的所述上一个字节对齐地址设置为当前起始访问地址,向硬件连续写入已记录的所述正在接收的数据。
本发明另提供一种连续访问环境下的中断恢复方法,包括如下步骤(1)中断出现时,从硬件读出当前正在访问的SRAM地址和硬件正在接收的数据;(2)根据字节对齐的要求,计算出当前访问地址和上一个字节对齐地址之间的偏移;(3)记录所述读出的当前访问地址、正在接收的数据,以及地址偏移;(4)中断处理结束要返回中断前的连续访问时,利用已记录的所述当前访问地址,根据字节对齐的要求,计算出当前访问地址的上一个字节对齐地址;(5)将所述上一个字节对齐地址设置为当前起始访问地址,向硬件连续写入与所述地址偏移量相等的正在接收的数据。
本发明进而提供一种连续访问环境下的中断恢复方法,包括如下步骤(1)中断出现时,从硬件读出当前正在访问的SRAM地址和硬件正在接收的数据;(2)利用所述当前访问地址,根据字节对齐的要求,计算出当前访问地址的上一个字节对齐地址;(3)根据所述上一个字节对齐地址,计算出当前访问地址与上一个字节对齐地址之间的偏移;(4)记录所述硬件正在接收的数据、上一个字节对齐地址,以及地址偏移;(5)中断处理结束要返回中断前的连续访问时,将已记录的所述上一个字节对齐地址设置为当前起始访问地址,向硬件连续写入与所述地址偏移量相等的正在接收的数据。
本发明提供一种连续访问环境下的中断恢复装置,包括读出模块,用于当中断出现时,从硬件读出当前正在访问的SRAM地址和硬件正在接收的数据;记录模块,用于记录所述读出的当前访问地址与正在接收的数据;计算模块,用于中断处理结束要返回中断前的连续访问时,利用已记录的所述当前访问地址,根据字节对齐的要求,计算出当前访问地址的上一个字节对齐地址;写入模块,用于将所述上一个字节对齐地址设置为当前起始访问地址,向硬件连续写入已记录的所述正在接收的数据。
本发明还提供一种连续访问环境下的中断恢复装置,包括读出模块,用于当中断出现时,从硬件读出当前正在访问的SRAM地址和硬件正在接收的数据;计算模块,用于根据字节对齐的要求,利用所述当前访问地址,计算出当前访问地址的上一个字节对齐地址;记录模块,用于记录所述硬件正在接收的数据与上一个字节对齐地址;写入模块,用于当中断处理结束要返回中断前的连续访问时,将已记录的所述上一个字节对齐地址设置为当前起始访问地址,向硬件连续写入已记录的所述正在接收的数据。
本发明还提供一种连续访问环境下的中断恢复装置,包括读出模块,用于中断出现时,从硬件读出当前正在访问的SRAM地址和硬件正在接收的数据;第一计算模块,用于根据字节对齐的要求,计算出当前访问地址和上一个字节对齐地址之间的偏移;
记录模块,用于记录所述读出的当前访问地址、正在接收的数据,以及地址偏移;第二计算模块,用于中断处理结束要返回中断前的连续访问时,利用已记录的所述当前访问地址,根据字节对齐的要求,计算出当前访问地址的上一个字节对齐地址;写入模块,用于将所述上一个字节对齐地址设置为当前起始访问地址,向硬件连续写入与所述地址偏移量相等的正在接收的数据。
本发明还提供一种连续访问环境下的中断恢复装置,包括读出模块,用于当中断出现时,从硬件读出当前正在访问的SRAM地址和硬件正在接收的数据;第一计算模块,用于根据字节对齐的要求,利用所述当前访问地址,计算出当前访问地址的上一个字节对齐地址;第二计算模块,用于根据所述上一个字节对齐地址,计算出当前访问地址与上一个字节对齐地址之间的偏移;记录模块,用于记录所述硬件正在接收的数据、上一个字节对齐地址,以及地址偏移;写入模块,用于当中断处理结束要返回中断前的连续访问时,将已记录的所述上一个字节对齐地址设置为当前起始访问地址,向硬件连续写入与所述地址偏移量相等的正在接收的数据。
本发明与现有技术相比,运用了保护SRAM访问环境的办法来恢复被中断的连续访问,在中断返回后,对于SRAM连续访问的环境,地址和正在写入的数据和中断出现时的一致,可以继续SRAM的连续访问而不会导致错误的结果。


图1为VC0568系统在端口模式时,访问SRAM的流程图;图2为本发明所述的连续访问环境下的中断恢复方法的第一实施例流程图;
图3为本发明所述的连续访问环境下的中断恢复方法的第二实施例流程图;图4为本发明所述的连续访问环境下的中断恢复方法的第三实施例流程图;以及图5为本发明所述的连续访问环境下的中断恢复方法的第四实施例流程图。
具体实施例方式
针对VC0568等系统的特殊需求,本发明采取了保护SRAM访问环境的办法来恢复被中断的连续访问。例如,在中断出现时,可以从硬件读出当前正在访问的SRAM的地址和硬件正在接收的数据,再根据4字节对齐的要求,计算出当前地址和上一个4字节对齐地址的偏移,然后保存这些数据。中断处理结束要返回SRAM的连续访问时,根据图1描述的步骤,把中断出现前访问的SRAM地址的前一个4字节对齐地址写入硬件寄存器。再根据偏移,向SRAM写入与偏移量相等的字节数的数据。这样,中断返回后,对于SRAM连续访问的环境,地址和正在写入的数据就和中断出现时的一致,可以继续SRAM的连续访问而不会导致错误的结果。
如图2所示,为本发明所述的连续访问环境下的中断恢复方法的第一实施例流程图,首先在中断出现时,从硬件读出当前正在访问的寄存器地址和硬件正在接收的数据(步骤201);然后记录所述读出的当前访问地址与正在接收的数据(步骤202);中断处理结束要返回中断前的连续访问时,利用已记录的所述当前访问地址,根据4字节对齐的要求,计算出当前访问地址的上一个4字节对齐地址(步骤203);将所述上一个4字节对齐地址设置为当前起始访问地址,向硬件连续写入已记录的所述正在接收的数据(步骤204)。
例如,对于实际的SRAM连续访问在中断处理中的恢复,从地址0x20000开始,向SRAM写入0x1000个byte数据。软件设置访问起始地址为0x20000后,连续向硬件写数据,写到0x103个数据时,被中断打断。访问进行时,硬件内部递增访问地址,用寄存器x记录当前的访问地址,此时为0x20103,同时也用寄存器Y记录了从0x101到0x103三个byte的数据a,b,c。
根据本发明,在中断处理程序入口处,软件首先从寄存器X读出当前访问地址0x20103,用变量A记录它,然后从寄存器Y读出从0x101到0x103三个byte的数据a,b,c,用变量x,y,z做记录。假设,在中断处理程序中,从地址0x10000开始,向SRAM写入0x2000个byte数据,那么,硬件寄存器X,Y的值都被改变。在中断处理程序出口处,软件设置访问起始地址为0x20100,向硬件写入三个byte的数据x,Y,z。这样,硬件寄存器X,Y的内容就恢复到中断出现时的值。中断处理程序退出后,访问地址恢复到0x20103,软件继续向SRAM发送数据,不会影响访问结果。
如图3所示,为本发明所述的连续访问环境下的中断恢复方法的第二实施例流程图,首先中断出现时,从硬件读出当前正在访问的寄存器地址和硬件正在接收的数据(步骤301);然后利用所述当前访问地址,根据4字节对齐的要求,计算出当前访问地址的上一个4字节对齐地址(步骤302);记录所述硬件正在接收的数据与上一个4字节对齐地址(步骤303);中断处理结束要返回中断前的连续访问时,将已记录的所述上一个4字节对齐地址设置为当前起始访问地址,向硬件连续写入已记录的所述正在接收的数据(步骤304)。
如图4所示,为本发明所述的连续访问环境下的中断恢复方法的第三实施例流程图,首先中断出现时,从硬件读出当前正在访问的寄存器地址和硬件正在接收的数据(步骤401);根据4字节对齐的要求,计算出当前访问地址和上一个4字节对齐地址之间的偏移(步骤402);记录所述读出的当前访问地址、正在接收的数据,以及地址偏移(步骤403);中断处理结束要返回中断前的连续访问时,利用已记录的所述当前访问地址,根据4字节对齐的要求,计算出当前访问地址的上一个4字节对齐地址(步骤404);将所述上一个4字节对齐地址设置为当前起始访问地址,向硬件连续写入与所述地址偏移量相等的正在接收的数据(步骤405)。
如图5所示,为本发明所述的连续访问环境下的中断恢复方法的第四实施例流程图,首先中断出现时,从硬件读出当前正在访问的寄存器地址和硬件正在接收的数据(步骤501);利用所述当前访问地址,根据4字节对齐的要求,计算出当前访问地址的上一个4字节对齐地址(步骤502);根据所述上一个4字节对齐地址,计算出当前访问地址与上一个4字节对齐地址之间的偏移(步骤503);记录所述硬件正在接收的数据、上一个4字节对齐地址,以及地址偏移(步骤504);中断处理结束要返回中断前的连续访问时,将已记录的所述上一个4字节对齐地址设置为当前起始访问地址,向硬件连续写入与所述地址偏移量相等的正在接收的数据(步骤505)。
本发明提供的连续访问环境下的中断恢复装置的第一实施例,包括读出模块,对应于图2中的步骤201,用于当中断出现时,从硬件读出当前正在访问的SRAM地址和硬件正在接收的数据;记录模块,对应于图2中的步骤202,用于记录所述读出的当前访问地址与正在接收的数据;计算模块,对应于图2中的步骤203,用于中断处理结束要返回中断前的连续访问时,利用已记录的所述当前访问地址,根据字节对齐的要求,计算出当前访问地址的上一个字节对齐地址;写入模块,对应于图2中的步骤204,用于将所述上一个字节对齐地址设置为当前起始访问地址,向硬件连续写入已记录的所述正在接收的数据。
本发明提供的连续访问环境下的中断恢复装置的第二实施例,包括读出模块,对应于图3中的步骤301,用于当中断出现时,从硬件读出当前正在访问的SRAM地址和硬件正在接收的数据;计算模块,对应于图3中的步骤302,用于根据字节对齐的要求,利用所述当前访问地址,计算出当前访问地址的上一个字节对齐地址;记录模块,对应于图3中的步骤303,用于记录所述硬件正在接收的数据与上一个字节对齐地址;写入模块,对应于图3中的步骤304,用于当中断处理结束要返回中断前的连续访问时,将已记录的所述上一个字节对齐地址设置为当前起始访问地址,向硬件连续写入已记录的所述正在接收的数据。
本发明提供的连续访问环境下的中断恢复装置的第三实施例,包括
读出模块,对应于图4中的步骤401,用于中断出现时,从硬件读出当前正在访问的SRAM地址和硬件正在接收的数据;第一计算模块,对应于图4中的步骤402,用于根据字节对齐的要求,计算出当前访问地址和上一个字节对齐地址之间的偏移;记录模块,对应于图4中的步骤403,用于记录所述读出的当前访问地址、正在接收的数据,以及地址偏移;第二计算模块,对应于图4中的步骤404,用于中断处理结束要返回中断前的连续访问时,利用已记录的所述当前访问地址,根据字节对齐的要求,计算出当前访问地址的上一个字节对齐地址;写入模块,对应于图4中的步骤405,用于将所述上一个字节对齐地址设置为当前起始访问地址,向硬件连续写入与所述地址偏移量相等的正在接收的数据。
本发明提供的连续访问环境下的中断恢复装置的第四实施例,包括读出模块,对应于图5中的步骤501,用于当中断出现时,从硬件读出当前正在访问的SRAM地址和硬件正在接收的数据;第一计算模块,对应于图5中的步骤502,用于根据字节对齐的要求,利用所述当前访问地址,计算出当前访问地址的上一个字节对齐地址;第二计算模块,对应于图5中的步骤503,用于根据所述上一个字节对齐地址,计算出当前访问地址与上一个字节对齐地址之间的偏移;记录模块,对应于图5中的步骤504,用于记录所述硬件正在接收的数据、上一个字节对齐地址,以及地址偏移;写入模块,对应于图5中的步骤505,用于当中断处理结束要返回中断前的连续访问时,将已记录的所述上一个字节对齐地址设置为当前起始访问地址,向硬件连续写入与所述地址偏移量相等的正在接收的数据。
尽管上述实施例是以4字节对齐方式为例进行说明,但根据实际情况,还可以其他对齐标准实施,例如8字节对齐等。因此,本发明所述的一种连续访问环境下的中断恢复方法,并不仅仅限于说明书和实施方式中所列运用,它完全可以被适用于各种适合本发明的领域,对于熟悉本领域的人员而言,可容易地实现另外的修改,因此在不背离权利要求及等同范围所限定的一般概念下,本发明并不限于特定的细节和这里示出与描述的图例。
权利要求
1.一种连续访问环境下的中断恢复方法,其特征在于包括如下步骤(1)中断出现时,从硬件读出当前正在访问的SRAM地址和硬件正在接收的数据;(2)记录所述读出的当前访问地址与正在接收的数据;(3)中断处理结束要返回中断前的连续访问时,利用已记录的所述当前访问地址,根据字节对齐的要求,计算出当前访问地址的上一个字节对齐地址;(4)将所述上一个字节对齐地址设置为当前起始访问地址,向硬件连续写入已记录的所述正在接收的数据。
2.如权利要求1所述的方法,其特征在于所述的字节对齐方式为4字节对齐。
3.一种连续访问环境下的中断恢复方法,其特征在于包括如下步骤(1)中断出现时,从硬件读出当前正在访问的SRAM地址和硬件正在接收的数据;(2)利用所述当前访问地址,根据字节对齐的要求,计算出当前访问地址的上一个字节对齐地址;(3)记录所述硬件正在接收的数据与上一个字节对齐地址;(4)中断处理结束要返回中断前的连续访问时,将已记录的所述上一个字节对齐地址设置为当前起始访问地址,向硬件连续写入已记录的所述正在接收的数据。
4.如权利要求3所述的方法,其特征在于所述的字节对齐方式为4字节对齐。
5.一种连续访问环境下的中断恢复方法,其特征在于包括如下步骤(1)中断出现时,从硬件读出当前正在访问的SRAM地址和硬件正在接收的数据;(2)根据字节对齐的要求,计算出当前访问地址和上一个字节对齐地址之间的偏移;(3)记录所述读出的当前访问地址、正在接收的数据,以及地址偏移;(4)中断处理结束要返回中断前的连续访问时,利用已记录的所述当前访问地址,根据字节对齐的要求,计算出当前访问地址的上一个字节对齐地址;(5)将所述上一个字节对齐地址设置为当前起始访问地址,向硬件连续写入与所述地址偏移量相等的正在接收的数据。
6.如权利要求5所述的方法,其特征在于所述的字节对齐方式为4字节对齐。
7.一种连续访问环境下的中断恢复方法,其特征在于包括如下步骤(1)中断出现时,从硬件读出当前正在访问的SRAM地址和硬件正在接收的数据;(2)利用所述当前访问地址,根据字节对齐的要求,计算出当前访问地址的上一个字节对齐地址;(3)根据所述上一个字节对齐地址,计算出当前访问地址与上一个字节对齐地址之间的偏移;(4)记录所述硬件正在接收的数据、上一个字节对齐地址,以及地址偏移;(5)中断处理结束要返回中断前的连续访问时,将已记录的所述上一个字节对齐地址设置为当前起始访问地址,向硬件连续写入与所述地址偏移量相等的正在接收的数据。
8.如权利要求7所述的方法,其特征在于所述的字节对齐方式为4字节对齐。
9.一种连续访问环境下的中断恢复装置,其特征在于包括读出模块,用于当中断出现时,从硬件读出当前正在访问的SRAM地址和硬件正在接收的数据;记录模块,用于记录所述读出的当前访问地址与正在接收的数据;计算模块,用于中断处理结束要返回中断前的连续访问时,利用已记录的所述当前访问地址,根据字节对齐的要求,计算出当前访问地址的上一个字节对齐地址;写入模块,用于将所述上一个字节对齐地址设置为当前起始访问地址,向硬件连续写入已记录的所述正在接收的数据。
10.一种连续访问环境下的中断恢复装置,其特征在于包括读出模块,用于当中断出现时,从硬件读出当前正在访问的SRAM地址和硬件正在接收的数据;计算模块,用于根据字节对齐的要求,利用所述当前访问地址,计算出当前访问地址的上一个字节对齐地址;记录模块,用于记录所述硬件正在接收的数据与上一个字节对齐地址;写入模块,用于当中断处理结束要返回中断前的连续访问时,将已记录的所述上一个字节对齐地址设置为当前起始访问地址,向硬件连续写入已记录的所述正在接收的数据。
11.一种连续访问环境下的中断恢复装置,其特征在于包括读出模块,用于中断出现时,从硬件读出当前正在访问的SRAM地址和硬件正在接收的数据;第一计算模块,用于根据字节对齐的要求,计算出当前访问地址和上一个字节对齐地址之间的偏移;记录模块,用于记录所述读出的当前访问地址、正在接收的数据,以及地址偏移;第二计算模块,用于中断处理结束要返回中断前的连续访问时,利用已记录的所述当前访问地址,根据字节对齐的要求,计算出当前访问地址的上一个字节对齐地址;写入模块,用于将所述上一个字节对齐地址设置为当前起始访问地址,向硬件连续写入与所述地址偏移量相等的正在接收的数据。
12.一种连续访问环境下的中断恢复装置,其特征在于包括读出模块,用于当中断出现时,从硬件读出当前正在访问的SRAM地址和硬件正在接收的数据;第一计算模块,用于根据字节对齐的要求,利用所述当前访问地址,计算出当前访问地址的上一个字节对齐地址;第二计算模块,用于根据所述上一个字节对齐地址,计算出当前访问地址与上一个字节对齐地址之间的偏移;记录模块,用于记录所述硬件正在接收的数据、上一个字节对齐地址,以及地址偏移;写入模块,用于当中断处理结束要返回中断前的连续访问时,将已记录的所述上一个字节对齐地址设置为当前起始访问地址,向硬件连续写入与所述地址偏移量相等的正在接收的数据。
全文摘要
本发明公开了一种连续访问环境下的中断恢复方法及装置,中断出现时首先从硬件读出当前正在访问的SRAM地址和硬件正在接收的数据,然后记录所述读出的当前访问地址与正在接收的数据,在中断处理结束要返回中断前的连续访问时,利用已记录的所述当前访问地址,根据字节对齐的要求,计算出当前访问地址的上一个字节对齐地址,再将所述上一个字节对齐地址设置为当前起始访问地址,向硬件连续写入已记录的所述正在接收的数据。本发明运用了保护SRAM访问环境的办法来恢复被中断的连续访问,在中断返回后,对于SRAM连续访问的环境,地址和正在写入的数据和中断出现时的一致,可以继续SRAM的连续访问而不会导致错误的结果。
文档编号G06F13/24GK1687910SQ20051007064
公开日2005年10月26日 申请日期2005年5月17日 优先权日2005年5月17日
发明者张军琪, 刘勇 申请人:北京中星微电子有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1