專利名稱:連續(xù)訪問環(huán)境下的中斷恢復(fù)方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種中斷恢復(fù)方法及裝置,尤其涉及一種連續(xù)訪問環(huán)境下的中斷恢復(fù)方法及裝置。
背景技術(shù):
嵌入式實時系統(tǒng)(Real-Time System)是一個能夠在指定或者確定的時間內(nèi)對外部事件作出響應(yīng)的系統(tǒng),其重要的特性是實時響應(yīng)性。嵌入式實時系統(tǒng)對外部事件的響應(yīng)一般都是通過中斷來處理的,其對中斷的處理方式,直接影響到系統(tǒng)的實時性能。
實時多任務(wù)操作系統(tǒng)是嵌入式應(yīng)用開發(fā)的基礎(chǔ)平臺。早期的嵌入式實時應(yīng)用軟件直接在處理器上運行,沒有操作系統(tǒng)的支持,現(xiàn)在的大多嵌入式應(yīng)用開發(fā)都需要嵌入式操作系統(tǒng)的支持。實際上,此時的嵌入式操作系統(tǒng)相當(dāng)于一個通用而復(fù)雜的主控程序,為嵌入式應(yīng)用軟件提供更強大的開發(fā)平臺和運行環(huán)境。
在嵌入式系統(tǒng)中,軟件程序的執(zhí)行經(jīng)常會被中斷打斷。CPU通常會提供中斷處理機(jī)制,在中斷出現(xiàn)時,記錄當(dāng)前執(zhí)行程序的上下文,在退出中斷處理時,利用記錄的程序上下文來恢復(fù)中斷出現(xiàn)前的程序執(zhí)行環(huán)境。這種機(jī)制保證了程序的連續(xù)運行。
但是在一些有特定要求的系統(tǒng)中,只有這種機(jī)制是不夠的。如圖1所示,描述了VC0568系統(tǒng)在端口(port)模式時,訪問靜態(tài)隨機(jī)存取存儲器(SRAM)的過程。
第一步,軟件設(shè)置訪問操作是讀或者寫(步驟101);第二步,軟件設(shè)置訪問的SRAM的地址(步驟102);第三步,軟件設(shè)置訪問SRAM的端口地址(步驟103);
以上步驟過程必須是猝發(fā)(burst)的。完成以上過程后,軟件就連續(xù)向端口寫數(shù)據(jù),完成第四步直至第n步(步驟104、105)。
硬件通過端口得到數(shù)據(jù),每收到4個字節(jié)(byte)數(shù)據(jù)后,一次寫入設(shè)定的SRAM地址。在寫的過程中,硬件根據(jù)設(shè)置的初始SRAM地址,會自動增加SRAM的訪問地址。
在連續(xù)向端口發(fā)送數(shù)據(jù)的過程中,如果中斷出現(xiàn),并且在中斷處理過程中,進(jìn)行了SRAM的訪問。根據(jù)前面SRAM的訪問描述,可以知道,在現(xiàn)有的中斷處理機(jī)制下,盡管根據(jù)記錄的執(zhí)行程序上下文,寫數(shù)據(jù)的動作得以恢復(fù),但SRAM的訪問地址會被更改。而且,如果中斷出現(xiàn)在硬件等待4byte數(shù)據(jù)的過程中,已經(jīng)送入的前幾個數(shù)據(jù)(1,2或者3個)會被扔掉。中斷處理返回后,再繼續(xù)進(jìn)行SRAM的連續(xù)訪問會造成錯誤的結(jié)果。
因此,如何針對某些特定的系統(tǒng)要求,提供一種新的中斷恢復(fù)機(jī)制,以保證中斷前后的訪問地址與寫入數(shù)據(jù)的一致,正確恢復(fù)中斷前的連續(xù)訪問,已經(jīng)成為業(yè)內(nèi)亟待解決的問題。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題在于提供一種連續(xù)訪問環(huán)境下的中斷恢復(fù)方法及裝置,以保證中斷前后的訪問地址與寫入數(shù)據(jù)的一致。
本發(fā)明提供一種連續(xù)訪問環(huán)境下的中斷恢復(fù)方法,包括如下步驟(1)中斷出現(xiàn)時,從硬件讀出當(dāng)前正在訪問的SRAM地址和硬件正在接收的數(shù)據(jù);(2)記錄所述讀出的當(dāng)前訪問地址與正在接收的數(shù)據(jù);(3)中斷處理結(jié)束要返回中斷前的連續(xù)訪問時,利用已記錄的所述當(dāng)前訪問地址,根據(jù)字節(jié)對齊的要求,計算出當(dāng)前訪問地址的上一個字節(jié)對齊地址;(4)將所述上一個字節(jié)對齊地址設(shè)置為當(dāng)前起始訪問地址,向硬件連續(xù)寫入已記錄的所述正在接收的數(shù)據(jù)。
本發(fā)明還提供一種連續(xù)訪問環(huán)境下的中斷恢復(fù)方法,包括如下步驟
(1)中斷出現(xiàn)時,從硬件讀出當(dāng)前正在訪問的SRAM地址和硬件正在接收的數(shù)據(jù);(2)利用所述當(dāng)前訪問地址,根據(jù)字節(jié)對齊的要求,計算出當(dāng)前訪問地址的上一個字節(jié)對齊地址;(3)記錄所述硬件正在接收的數(shù)據(jù)與上一個字節(jié)對齊地址;(4)中斷處理結(jié)束要返回中斷前的連續(xù)訪問時,將已記錄的所述上一個字節(jié)對齊地址設(shè)置為當(dāng)前起始訪問地址,向硬件連續(xù)寫入已記錄的所述正在接收的數(shù)據(jù)。
本發(fā)明另提供一種連續(xù)訪問環(huán)境下的中斷恢復(fù)方法,包括如下步驟(1)中斷出現(xiàn)時,從硬件讀出當(dāng)前正在訪問的SRAM地址和硬件正在接收的數(shù)據(jù);(2)根據(jù)字節(jié)對齊的要求,計算出當(dāng)前訪問地址和上一個字節(jié)對齊地址之間的偏移;(3)記錄所述讀出的當(dāng)前訪問地址、正在接收的數(shù)據(jù),以及地址偏移;(4)中斷處理結(jié)束要返回中斷前的連續(xù)訪問時,利用已記錄的所述當(dāng)前訪問地址,根據(jù)字節(jié)對齊的要求,計算出當(dāng)前訪問地址的上一個字節(jié)對齊地址;(5)將所述上一個字節(jié)對齊地址設(shè)置為當(dāng)前起始訪問地址,向硬件連續(xù)寫入與所述地址偏移量相等的正在接收的數(shù)據(jù)。
本發(fā)明進(jìn)而提供一種連續(xù)訪問環(huán)境下的中斷恢復(fù)方法,包括如下步驟(1)中斷出現(xiàn)時,從硬件讀出當(dāng)前正在訪問的SRAM地址和硬件正在接收的數(shù)據(jù);(2)利用所述當(dāng)前訪問地址,根據(jù)字節(jié)對齊的要求,計算出當(dāng)前訪問地址的上一個字節(jié)對齊地址;(3)根據(jù)所述上一個字節(jié)對齊地址,計算出當(dāng)前訪問地址與上一個字節(jié)對齊地址之間的偏移;(4)記錄所述硬件正在接收的數(shù)據(jù)、上一個字節(jié)對齊地址,以及地址偏移;(5)中斷處理結(jié)束要返回中斷前的連續(xù)訪問時,將已記錄的所述上一個字節(jié)對齊地址設(shè)置為當(dāng)前起始訪問地址,向硬件連續(xù)寫入與所述地址偏移量相等的正在接收的數(shù)據(jù)。
本發(fā)明提供一種連續(xù)訪問環(huán)境下的中斷恢復(fù)裝置,包括讀出模塊,用于當(dāng)中斷出現(xiàn)時,從硬件讀出當(dāng)前正在訪問的SRAM地址和硬件正在接收的數(shù)據(jù);記錄模塊,用于記錄所述讀出的當(dāng)前訪問地址與正在接收的數(shù)據(jù);計算模塊,用于中斷處理結(jié)束要返回中斷前的連續(xù)訪問時,利用已記錄的所述當(dāng)前訪問地址,根據(jù)字節(jié)對齊的要求,計算出當(dāng)前訪問地址的上一個字節(jié)對齊地址;寫入模塊,用于將所述上一個字節(jié)對齊地址設(shè)置為當(dāng)前起始訪問地址,向硬件連續(xù)寫入已記錄的所述正在接收的數(shù)據(jù)。
本發(fā)明還提供一種連續(xù)訪問環(huán)境下的中斷恢復(fù)裝置,包括讀出模塊,用于當(dāng)中斷出現(xiàn)時,從硬件讀出當(dāng)前正在訪問的SRAM地址和硬件正在接收的數(shù)據(jù);計算模塊,用于根據(jù)字節(jié)對齊的要求,利用所述當(dāng)前訪問地址,計算出當(dāng)前訪問地址的上一個字節(jié)對齊地址;記錄模塊,用于記錄所述硬件正在接收的數(shù)據(jù)與上一個字節(jié)對齊地址;寫入模塊,用于當(dāng)中斷處理結(jié)束要返回中斷前的連續(xù)訪問時,將已記錄的所述上一個字節(jié)對齊地址設(shè)置為當(dāng)前起始訪問地址,向硬件連續(xù)寫入已記錄的所述正在接收的數(shù)據(jù)。
本發(fā)明還提供一種連續(xù)訪問環(huán)境下的中斷恢復(fù)裝置,包括讀出模塊,用于中斷出現(xiàn)時,從硬件讀出當(dāng)前正在訪問的SRAM地址和硬件正在接收的數(shù)據(jù);第一計算模塊,用于根據(jù)字節(jié)對齊的要求,計算出當(dāng)前訪問地址和上一個字節(jié)對齊地址之間的偏移;
記錄模塊,用于記錄所述讀出的當(dāng)前訪問地址、正在接收的數(shù)據(jù),以及地址偏移;第二計算模塊,用于中斷處理結(jié)束要返回中斷前的連續(xù)訪問時,利用已記錄的所述當(dāng)前訪問地址,根據(jù)字節(jié)對齊的要求,計算出當(dāng)前訪問地址的上一個字節(jié)對齊地址;寫入模塊,用于將所述上一個字節(jié)對齊地址設(shè)置為當(dāng)前起始訪問地址,向硬件連續(xù)寫入與所述地址偏移量相等的正在接收的數(shù)據(jù)。
本發(fā)明還提供一種連續(xù)訪問環(huán)境下的中斷恢復(fù)裝置,包括讀出模塊,用于當(dāng)中斷出現(xiàn)時,從硬件讀出當(dāng)前正在訪問的SRAM地址和硬件正在接收的數(shù)據(jù);第一計算模塊,用于根據(jù)字節(jié)對齊的要求,利用所述當(dāng)前訪問地址,計算出當(dāng)前訪問地址的上一個字節(jié)對齊地址;第二計算模塊,用于根據(jù)所述上一個字節(jié)對齊地址,計算出當(dāng)前訪問地址與上一個字節(jié)對齊地址之間的偏移;記錄模塊,用于記錄所述硬件正在接收的數(shù)據(jù)、上一個字節(jié)對齊地址,以及地址偏移;寫入模塊,用于當(dāng)中斷處理結(jié)束要返回中斷前的連續(xù)訪問時,將已記錄的所述上一個字節(jié)對齊地址設(shè)置為當(dāng)前起始訪問地址,向硬件連續(xù)寫入與所述地址偏移量相等的正在接收的數(shù)據(jù)。
本發(fā)明與現(xiàn)有技術(shù)相比,運用了保護(hù)SRAM訪問環(huán)境的辦法來恢復(fù)被中斷的連續(xù)訪問,在中斷返回后,對于SRAM連續(xù)訪問的環(huán)境,地址和正在寫入的數(shù)據(jù)和中斷出現(xiàn)時的一致,可以繼續(xù)SRAM的連續(xù)訪問而不會導(dǎo)致錯誤的結(jié)果。
圖1為VC0568系統(tǒng)在端口模式時,訪問SRAM的流程圖;圖2為本發(fā)明所述的連續(xù)訪問環(huán)境下的中斷恢復(fù)方法的第一實施例流程圖;
圖3為本發(fā)明所述的連續(xù)訪問環(huán)境下的中斷恢復(fù)方法的第二實施例流程圖;圖4為本發(fā)明所述的連續(xù)訪問環(huán)境下的中斷恢復(fù)方法的第三實施例流程圖;以及圖5為本發(fā)明所述的連續(xù)訪問環(huán)境下的中斷恢復(fù)方法的第四實施例流程圖。
具體實施例方式
針對VC0568等系統(tǒng)的特殊需求,本發(fā)明采取了保護(hù)SRAM訪問環(huán)境的辦法來恢復(fù)被中斷的連續(xù)訪問。例如,在中斷出現(xiàn)時,可以從硬件讀出當(dāng)前正在訪問的SRAM的地址和硬件正在接收的數(shù)據(jù),再根據(jù)4字節(jié)對齊的要求,計算出當(dāng)前地址和上一個4字節(jié)對齊地址的偏移,然后保存這些數(shù)據(jù)。中斷處理結(jié)束要返回SRAM的連續(xù)訪問時,根據(jù)圖1描述的步驟,把中斷出現(xiàn)前訪問的SRAM地址的前一個4字節(jié)對齊地址寫入硬件寄存器。再根據(jù)偏移,向SRAM寫入與偏移量相等的字節(jié)數(shù)的數(shù)據(jù)。這樣,中斷返回后,對于SRAM連續(xù)訪問的環(huán)境,地址和正在寫入的數(shù)據(jù)就和中斷出現(xiàn)時的一致,可以繼續(xù)SRAM的連續(xù)訪問而不會導(dǎo)致錯誤的結(jié)果。
如圖2所示,為本發(fā)明所述的連續(xù)訪問環(huán)境下的中斷恢復(fù)方法的第一實施例流程圖,首先在中斷出現(xiàn)時,從硬件讀出當(dāng)前正在訪問的寄存器地址和硬件正在接收的數(shù)據(jù)(步驟201);然后記錄所述讀出的當(dāng)前訪問地址與正在接收的數(shù)據(jù)(步驟202);中斷處理結(jié)束要返回中斷前的連續(xù)訪問時,利用已記錄的所述當(dāng)前訪問地址,根據(jù)4字節(jié)對齊的要求,計算出當(dāng)前訪問地址的上一個4字節(jié)對齊地址(步驟203);將所述上一個4字節(jié)對齊地址設(shè)置為當(dāng)前起始訪問地址,向硬件連續(xù)寫入已記錄的所述正在接收的數(shù)據(jù)(步驟204)。
例如,對于實際的SRAM連續(xù)訪問在中斷處理中的恢復(fù),從地址0x20000開始,向SRAM寫入0x1000個byte數(shù)據(jù)。軟件設(shè)置訪問起始地址為0x20000后,連續(xù)向硬件寫數(shù)據(jù),寫到0x103個數(shù)據(jù)時,被中斷打斷。訪問進(jìn)行時,硬件內(nèi)部遞增訪問地址,用寄存器x記錄當(dāng)前的訪問地址,此時為0x20103,同時也用寄存器Y記錄了從0x101到0x103三個byte的數(shù)據(jù)a,b,c。
根據(jù)本發(fā)明,在中斷處理程序入口處,軟件首先從寄存器X讀出當(dāng)前訪問地址0x20103,用變量A記錄它,然后從寄存器Y讀出從0x101到0x103三個byte的數(shù)據(jù)a,b,c,用變量x,y,z做記錄。假設(shè),在中斷處理程序中,從地址0x10000開始,向SRAM寫入0x2000個byte數(shù)據(jù),那么,硬件寄存器X,Y的值都被改變。在中斷處理程序出口處,軟件設(shè)置訪問起始地址為0x20100,向硬件寫入三個byte的數(shù)據(jù)x,Y,z。這樣,硬件寄存器X,Y的內(nèi)容就恢復(fù)到中斷出現(xiàn)時的值。中斷處理程序退出后,訪問地址恢復(fù)到0x20103,軟件繼續(xù)向SRAM發(fā)送數(shù)據(jù),不會影響訪問結(jié)果。
如圖3所示,為本發(fā)明所述的連續(xù)訪問環(huán)境下的中斷恢復(fù)方法的第二實施例流程圖,首先中斷出現(xiàn)時,從硬件讀出當(dāng)前正在訪問的寄存器地址和硬件正在接收的數(shù)據(jù)(步驟301);然后利用所述當(dāng)前訪問地址,根據(jù)4字節(jié)對齊的要求,計算出當(dāng)前訪問地址的上一個4字節(jié)對齊地址(步驟302);記錄所述硬件正在接收的數(shù)據(jù)與上一個4字節(jié)對齊地址(步驟303);中斷處理結(jié)束要返回中斷前的連續(xù)訪問時,將已記錄的所述上一個4字節(jié)對齊地址設(shè)置為當(dāng)前起始訪問地址,向硬件連續(xù)寫入已記錄的所述正在接收的數(shù)據(jù)(步驟304)。
如圖4所示,為本發(fā)明所述的連續(xù)訪問環(huán)境下的中斷恢復(fù)方法的第三實施例流程圖,首先中斷出現(xiàn)時,從硬件讀出當(dāng)前正在訪問的寄存器地址和硬件正在接收的數(shù)據(jù)(步驟401);根據(jù)4字節(jié)對齊的要求,計算出當(dāng)前訪問地址和上一個4字節(jié)對齊地址之間的偏移(步驟402);記錄所述讀出的當(dāng)前訪問地址、正在接收的數(shù)據(jù),以及地址偏移(步驟403);中斷處理結(jié)束要返回中斷前的連續(xù)訪問時,利用已記錄的所述當(dāng)前訪問地址,根據(jù)4字節(jié)對齊的要求,計算出當(dāng)前訪問地址的上一個4字節(jié)對齊地址(步驟404);將所述上一個4字節(jié)對齊地址設(shè)置為當(dāng)前起始訪問地址,向硬件連續(xù)寫入與所述地址偏移量相等的正在接收的數(shù)據(jù)(步驟405)。
如圖5所示,為本發(fā)明所述的連續(xù)訪問環(huán)境下的中斷恢復(fù)方法的第四實施例流程圖,首先中斷出現(xiàn)時,從硬件讀出當(dāng)前正在訪問的寄存器地址和硬件正在接收的數(shù)據(jù)(步驟501);利用所述當(dāng)前訪問地址,根據(jù)4字節(jié)對齊的要求,計算出當(dāng)前訪問地址的上一個4字節(jié)對齊地址(步驟502);根據(jù)所述上一個4字節(jié)對齊地址,計算出當(dāng)前訪問地址與上一個4字節(jié)對齊地址之間的偏移(步驟503);記錄所述硬件正在接收的數(shù)據(jù)、上一個4字節(jié)對齊地址,以及地址偏移(步驟504);中斷處理結(jié)束要返回中斷前的連續(xù)訪問時,將已記錄的所述上一個4字節(jié)對齊地址設(shè)置為當(dāng)前起始訪問地址,向硬件連續(xù)寫入與所述地址偏移量相等的正在接收的數(shù)據(jù)(步驟505)。
本發(fā)明提供的連續(xù)訪問環(huán)境下的中斷恢復(fù)裝置的第一實施例,包括讀出模塊,對應(yīng)于圖2中的步驟201,用于當(dāng)中斷出現(xiàn)時,從硬件讀出當(dāng)前正在訪問的SRAM地址和硬件正在接收的數(shù)據(jù);記錄模塊,對應(yīng)于圖2中的步驟202,用于記錄所述讀出的當(dāng)前訪問地址與正在接收的數(shù)據(jù);計算模塊,對應(yīng)于圖2中的步驟203,用于中斷處理結(jié)束要返回中斷前的連續(xù)訪問時,利用已記錄的所述當(dāng)前訪問地址,根據(jù)字節(jié)對齊的要求,計算出當(dāng)前訪問地址的上一個字節(jié)對齊地址;寫入模塊,對應(yīng)于圖2中的步驟204,用于將所述上一個字節(jié)對齊地址設(shè)置為當(dāng)前起始訪問地址,向硬件連續(xù)寫入已記錄的所述正在接收的數(shù)據(jù)。
本發(fā)明提供的連續(xù)訪問環(huán)境下的中斷恢復(fù)裝置的第二實施例,包括讀出模塊,對應(yīng)于圖3中的步驟301,用于當(dāng)中斷出現(xiàn)時,從硬件讀出當(dāng)前正在訪問的SRAM地址和硬件正在接收的數(shù)據(jù);計算模塊,對應(yīng)于圖3中的步驟302,用于根據(jù)字節(jié)對齊的要求,利用所述當(dāng)前訪問地址,計算出當(dāng)前訪問地址的上一個字節(jié)對齊地址;記錄模塊,對應(yīng)于圖3中的步驟303,用于記錄所述硬件正在接收的數(shù)據(jù)與上一個字節(jié)對齊地址;寫入模塊,對應(yīng)于圖3中的步驟304,用于當(dāng)中斷處理結(jié)束要返回中斷前的連續(xù)訪問時,將已記錄的所述上一個字節(jié)對齊地址設(shè)置為當(dāng)前起始訪問地址,向硬件連續(xù)寫入已記錄的所述正在接收的數(shù)據(jù)。
本發(fā)明提供的連續(xù)訪問環(huán)境下的中斷恢復(fù)裝置的第三實施例,包括
讀出模塊,對應(yīng)于圖4中的步驟401,用于中斷出現(xiàn)時,從硬件讀出當(dāng)前正在訪問的SRAM地址和硬件正在接收的數(shù)據(jù);第一計算模塊,對應(yīng)于圖4中的步驟402,用于根據(jù)字節(jié)對齊的要求,計算出當(dāng)前訪問地址和上一個字節(jié)對齊地址之間的偏移;記錄模塊,對應(yīng)于圖4中的步驟403,用于記錄所述讀出的當(dāng)前訪問地址、正在接收的數(shù)據(jù),以及地址偏移;第二計算模塊,對應(yīng)于圖4中的步驟404,用于中斷處理結(jié)束要返回中斷前的連續(xù)訪問時,利用已記錄的所述當(dāng)前訪問地址,根據(jù)字節(jié)對齊的要求,計算出當(dāng)前訪問地址的上一個字節(jié)對齊地址;寫入模塊,對應(yīng)于圖4中的步驟405,用于將所述上一個字節(jié)對齊地址設(shè)置為當(dāng)前起始訪問地址,向硬件連續(xù)寫入與所述地址偏移量相等的正在接收的數(shù)據(jù)。
本發(fā)明提供的連續(xù)訪問環(huán)境下的中斷恢復(fù)裝置的第四實施例,包括讀出模塊,對應(yīng)于圖5中的步驟501,用于當(dāng)中斷出現(xiàn)時,從硬件讀出當(dāng)前正在訪問的SRAM地址和硬件正在接收的數(shù)據(jù);第一計算模塊,對應(yīng)于圖5中的步驟502,用于根據(jù)字節(jié)對齊的要求,利用所述當(dāng)前訪問地址,計算出當(dāng)前訪問地址的上一個字節(jié)對齊地址;第二計算模塊,對應(yīng)于圖5中的步驟503,用于根據(jù)所述上一個字節(jié)對齊地址,計算出當(dāng)前訪問地址與上一個字節(jié)對齊地址之間的偏移;記錄模塊,對應(yīng)于圖5中的步驟504,用于記錄所述硬件正在接收的數(shù)據(jù)、上一個字節(jié)對齊地址,以及地址偏移;寫入模塊,對應(yīng)于圖5中的步驟505,用于當(dāng)中斷處理結(jié)束要返回中斷前的連續(xù)訪問時,將已記錄的所述上一個字節(jié)對齊地址設(shè)置為當(dāng)前起始訪問地址,向硬件連續(xù)寫入與所述地址偏移量相等的正在接收的數(shù)據(jù)。
盡管上述實施例是以4字節(jié)對齊方式為例進(jìn)行說明,但根據(jù)實際情況,還可以其他對齊標(biāo)準(zhǔn)實施,例如8字節(jié)對齊等。因此,本發(fā)明所述的一種連續(xù)訪問環(huán)境下的中斷恢復(fù)方法,并不僅僅限于說明書和實施方式中所列運用,它完全可以被適用于各種適合本發(fā)明的領(lǐng)域,對于熟悉本領(lǐng)域的人員而言,可容易地實現(xiàn)另外的修改,因此在不背離權(quán)利要求及等同范圍所限定的一般概念下,本發(fā)明并不限于特定的細(xì)節(jié)和這里示出與描述的圖例。
權(quán)利要求
1.一種連續(xù)訪問環(huán)境下的中斷恢復(fù)方法,其特征在于包括如下步驟(1)中斷出現(xiàn)時,從硬件讀出當(dāng)前正在訪問的SRAM地址和硬件正在接收的數(shù)據(jù);(2)記錄所述讀出的當(dāng)前訪問地址與正在接收的數(shù)據(jù);(3)中斷處理結(jié)束要返回中斷前的連續(xù)訪問時,利用已記錄的所述當(dāng)前訪問地址,根據(jù)字節(jié)對齊的要求,計算出當(dāng)前訪問地址的上一個字節(jié)對齊地址;(4)將所述上一個字節(jié)對齊地址設(shè)置為當(dāng)前起始訪問地址,向硬件連續(xù)寫入已記錄的所述正在接收的數(shù)據(jù)。
2.如權(quán)利要求1所述的方法,其特征在于所述的字節(jié)對齊方式為4字節(jié)對齊。
3.一種連續(xù)訪問環(huán)境下的中斷恢復(fù)方法,其特征在于包括如下步驟(1)中斷出現(xiàn)時,從硬件讀出當(dāng)前正在訪問的SRAM地址和硬件正在接收的數(shù)據(jù);(2)利用所述當(dāng)前訪問地址,根據(jù)字節(jié)對齊的要求,計算出當(dāng)前訪問地址的上一個字節(jié)對齊地址;(3)記錄所述硬件正在接收的數(shù)據(jù)與上一個字節(jié)對齊地址;(4)中斷處理結(jié)束要返回中斷前的連續(xù)訪問時,將已記錄的所述上一個字節(jié)對齊地址設(shè)置為當(dāng)前起始訪問地址,向硬件連續(xù)寫入已記錄的所述正在接收的數(shù)據(jù)。
4.如權(quán)利要求3所述的方法,其特征在于所述的字節(jié)對齊方式為4字節(jié)對齊。
5.一種連續(xù)訪問環(huán)境下的中斷恢復(fù)方法,其特征在于包括如下步驟(1)中斷出現(xiàn)時,從硬件讀出當(dāng)前正在訪問的SRAM地址和硬件正在接收的數(shù)據(jù);(2)根據(jù)字節(jié)對齊的要求,計算出當(dāng)前訪問地址和上一個字節(jié)對齊地址之間的偏移;(3)記錄所述讀出的當(dāng)前訪問地址、正在接收的數(shù)據(jù),以及地址偏移;(4)中斷處理結(jié)束要返回中斷前的連續(xù)訪問時,利用已記錄的所述當(dāng)前訪問地址,根據(jù)字節(jié)對齊的要求,計算出當(dāng)前訪問地址的上一個字節(jié)對齊地址;(5)將所述上一個字節(jié)對齊地址設(shè)置為當(dāng)前起始訪問地址,向硬件連續(xù)寫入與所述地址偏移量相等的正在接收的數(shù)據(jù)。
6.如權(quán)利要求5所述的方法,其特征在于所述的字節(jié)對齊方式為4字節(jié)對齊。
7.一種連續(xù)訪問環(huán)境下的中斷恢復(fù)方法,其特征在于包括如下步驟(1)中斷出現(xiàn)時,從硬件讀出當(dāng)前正在訪問的SRAM地址和硬件正在接收的數(shù)據(jù);(2)利用所述當(dāng)前訪問地址,根據(jù)字節(jié)對齊的要求,計算出當(dāng)前訪問地址的上一個字節(jié)對齊地址;(3)根據(jù)所述上一個字節(jié)對齊地址,計算出當(dāng)前訪問地址與上一個字節(jié)對齊地址之間的偏移;(4)記錄所述硬件正在接收的數(shù)據(jù)、上一個字節(jié)對齊地址,以及地址偏移;(5)中斷處理結(jié)束要返回中斷前的連續(xù)訪問時,將已記錄的所述上一個字節(jié)對齊地址設(shè)置為當(dāng)前起始訪問地址,向硬件連續(xù)寫入與所述地址偏移量相等的正在接收的數(shù)據(jù)。
8.如權(quán)利要求7所述的方法,其特征在于所述的字節(jié)對齊方式為4字節(jié)對齊。
9.一種連續(xù)訪問環(huán)境下的中斷恢復(fù)裝置,其特征在于包括讀出模塊,用于當(dāng)中斷出現(xiàn)時,從硬件讀出當(dāng)前正在訪問的SRAM地址和硬件正在接收的數(shù)據(jù);記錄模塊,用于記錄所述讀出的當(dāng)前訪問地址與正在接收的數(shù)據(jù);計算模塊,用于中斷處理結(jié)束要返回中斷前的連續(xù)訪問時,利用已記錄的所述當(dāng)前訪問地址,根據(jù)字節(jié)對齊的要求,計算出當(dāng)前訪問地址的上一個字節(jié)對齊地址;寫入模塊,用于將所述上一個字節(jié)對齊地址設(shè)置為當(dāng)前起始訪問地址,向硬件連續(xù)寫入已記錄的所述正在接收的數(shù)據(jù)。
10.一種連續(xù)訪問環(huán)境下的中斷恢復(fù)裝置,其特征在于包括讀出模塊,用于當(dāng)中斷出現(xiàn)時,從硬件讀出當(dāng)前正在訪問的SRAM地址和硬件正在接收的數(shù)據(jù);計算模塊,用于根據(jù)字節(jié)對齊的要求,利用所述當(dāng)前訪問地址,計算出當(dāng)前訪問地址的上一個字節(jié)對齊地址;記錄模塊,用于記錄所述硬件正在接收的數(shù)據(jù)與上一個字節(jié)對齊地址;寫入模塊,用于當(dāng)中斷處理結(jié)束要返回中斷前的連續(xù)訪問時,將已記錄的所述上一個字節(jié)對齊地址設(shè)置為當(dāng)前起始訪問地址,向硬件連續(xù)寫入已記錄的所述正在接收的數(shù)據(jù)。
11.一種連續(xù)訪問環(huán)境下的中斷恢復(fù)裝置,其特征在于包括讀出模塊,用于中斷出現(xiàn)時,從硬件讀出當(dāng)前正在訪問的SRAM地址和硬件正在接收的數(shù)據(jù);第一計算模塊,用于根據(jù)字節(jié)對齊的要求,計算出當(dāng)前訪問地址和上一個字節(jié)對齊地址之間的偏移;記錄模塊,用于記錄所述讀出的當(dāng)前訪問地址、正在接收的數(shù)據(jù),以及地址偏移;第二計算模塊,用于中斷處理結(jié)束要返回中斷前的連續(xù)訪問時,利用已記錄的所述當(dāng)前訪問地址,根據(jù)字節(jié)對齊的要求,計算出當(dāng)前訪問地址的上一個字節(jié)對齊地址;寫入模塊,用于將所述上一個字節(jié)對齊地址設(shè)置為當(dāng)前起始訪問地址,向硬件連續(xù)寫入與所述地址偏移量相等的正在接收的數(shù)據(jù)。
12.一種連續(xù)訪問環(huán)境下的中斷恢復(fù)裝置,其特征在于包括讀出模塊,用于當(dāng)中斷出現(xiàn)時,從硬件讀出當(dāng)前正在訪問的SRAM地址和硬件正在接收的數(shù)據(jù);第一計算模塊,用于根據(jù)字節(jié)對齊的要求,利用所述當(dāng)前訪問地址,計算出當(dāng)前訪問地址的上一個字節(jié)對齊地址;第二計算模塊,用于根據(jù)所述上一個字節(jié)對齊地址,計算出當(dāng)前訪問地址與上一個字節(jié)對齊地址之間的偏移;記錄模塊,用于記錄所述硬件正在接收的數(shù)據(jù)、上一個字節(jié)對齊地址,以及地址偏移;寫入模塊,用于當(dāng)中斷處理結(jié)束要返回中斷前的連續(xù)訪問時,將已記錄的所述上一個字節(jié)對齊地址設(shè)置為當(dāng)前起始訪問地址,向硬件連續(xù)寫入與所述地址偏移量相等的正在接收的數(shù)據(jù)。
全文摘要
本發(fā)明公開了一種連續(xù)訪問環(huán)境下的中斷恢復(fù)方法及裝置,中斷出現(xiàn)時首先從硬件讀出當(dāng)前正在訪問的SRAM地址和硬件正在接收的數(shù)據(jù),然后記錄所述讀出的當(dāng)前訪問地址與正在接收的數(shù)據(jù),在中斷處理結(jié)束要返回中斷前的連續(xù)訪問時,利用已記錄的所述當(dāng)前訪問地址,根據(jù)字節(jié)對齊的要求,計算出當(dāng)前訪問地址的上一個字節(jié)對齊地址,再將所述上一個字節(jié)對齊地址設(shè)置為當(dāng)前起始訪問地址,向硬件連續(xù)寫入已記錄的所述正在接收的數(shù)據(jù)。本發(fā)明運用了保護(hù)SRAM訪問環(huán)境的辦法來恢復(fù)被中斷的連續(xù)訪問,在中斷返回后,對于SRAM連續(xù)訪問的環(huán)境,地址和正在寫入的數(shù)據(jù)和中斷出現(xiàn)時的一致,可以繼續(xù)SRAM的連續(xù)訪問而不會導(dǎo)致錯誤的結(jié)果。
文檔編號G06F13/24GK1687910SQ20051007064
公開日2005年10月26日 申請日期2005年5月17日 優(yōu)先權(quán)日2005年5月17日
發(fā)明者張軍琪, 劉勇 申請人:北京中星微電子有限公司