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