緩存數(shù)據(jù)的處理方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于通信技術(shù)領(lǐng)域,尤其涉及緩存數(shù)據(jù)的處理方法及裝置。
【背景技術(shù)】
[0002]穿戴式智能設(shè)備為了提高續(xù)航時間,通常采用低功耗工作模式,即MCU(Microcontroller Unit,微控制單元)在沒有工作任務(wù)時盡可能長時間地處于睡眠狀態(tài),在進(jìn)入工作狀態(tài)后盡可能快速地處理完工作任務(wù),接著立即進(jìn)入睡眠狀態(tài)。例如,穿戴式智能設(shè)備通常采用FIFO (First Input First Output,先入先出)存儲器緩存三軸加速度值,當(dāng)FIFO存儲器存滿時三軸加速度傳感器產(chǎn)生中斷,使MCU讀取FIFO存儲器中緩存的三軸加速度值。
[0003]然而,穿戴式智能設(shè)備中的MCU不僅要處理三軸加速度傳感器產(chǎn)生的中斷,還要處理串口中斷和按鍵中斷等。因此,MCU在睡眠狀態(tài)下不僅會由三軸加速度傳感器產(chǎn)生的中斷喚醒,還會由串口中斷和/或按鍵中斷喚醒。MCU從睡眠狀態(tài)被按鍵中斷等非三軸加速度傳感器產(chǎn)生的中斷喚醒并處理完中斷事件后,恢復(fù)到睡眠狀態(tài),如果在MCU執(zhí)行進(jìn)入睡眠狀態(tài)的指令的過程中,F(xiàn)IFO存儲器剛好存滿,則會導(dǎo)致MCU不能及時處理三軸加速度傳感器產(chǎn)生的中斷,從而在FIFO存儲器存滿后MCU無法及時讀取FIFO存儲器中的三軸加速度值,導(dǎo)致從FIFO存儲器存滿到MCU讀取FIFO存儲器之間的時間段內(nèi)的三軸加速度值丟失。
[0004]綜上,現(xiàn)有的緩存數(shù)據(jù)的處理方式可能導(dǎo)致緩存數(shù)據(jù)丟失。
【發(fā)明內(nèi)容】
[0005]鑒于此,本發(fā)明實施例提供了一種緩存數(shù)據(jù)的處理方法及裝置,以解決現(xiàn)有的緩存數(shù)據(jù)的處理方式可能導(dǎo)致緩存數(shù)據(jù)丟失的問題。
[0006]第一方面,本發(fā)明實施例提供了一種緩存數(shù)據(jù)的處理方法,包括:
[0007]當(dāng)接收到進(jìn)入睡眠狀態(tài)的指令時,獲取先入先出存儲器中緩存數(shù)據(jù)的當(dāng)前存儲量;
[0008]若所述當(dāng)前存儲量大于第一預(yù)設(shè)值且小于第二預(yù)設(shè)值,則持續(xù)查詢是否存在所述先入先出存儲器對應(yīng)的中斷請求,其中,所述第二預(yù)設(shè)值小于所述先入先出存儲器的最大存儲量;
[0009]在查詢到所述先入先出存儲器對應(yīng)的中斷請求后,讀取所述先入先出存儲器中的緩存數(shù)據(jù)。
[0010]第二方面,本發(fā)明實施例提供了一種緩存數(shù)據(jù)的處理裝置,包括:
[0011]當(dāng)前存儲量獲取單元,用于當(dāng)接收到進(jìn)入睡眠狀態(tài)的指令時,獲取先入先出存儲器中緩存數(shù)據(jù)的當(dāng)前存儲量;
[0012]中斷請求查詢單元,用于若所述當(dāng)前存儲量大于第一預(yù)設(shè)值且小于第二預(yù)設(shè)值,則持續(xù)查詢是否存在所述先入先出存儲器對應(yīng)的中斷請求,其中,所述第二預(yù)設(shè)值小于所述先入先出存儲器的最大存儲量;
[0013]讀取單元,用于在查詢到所述先入先出存儲器對應(yīng)的中斷請求后,讀取所述先入先出存儲器中的緩存數(shù)據(jù)。
[0014]本發(fā)明實施例與現(xiàn)有技術(shù)相比存在的有益效果是:本發(fā)明實施例通過當(dāng)接收到進(jìn)入睡眠狀態(tài)的指令時,判斷先入先出存儲器中緩存數(shù)據(jù)的當(dāng)前存儲量是否達(dá)到臨界值,若先入先出存儲器中緩存數(shù)據(jù)的當(dāng)前存儲量已達(dá)到臨界值,則持續(xù)等待先入先出存儲器對應(yīng)的中斷請求,并在查詢到先入先出存儲器對應(yīng)的中斷請求后立即讀取先入先出存儲器中的緩存數(shù)據(jù),由此避免在執(zhí)行進(jìn)入睡眠狀態(tài)的指令的過程中不能及時處理先入先出存儲器對應(yīng)的中斷請求,保證了先入先出存儲器中的緩存數(shù)據(jù)能夠被及時讀取,從而保證先入先出存儲器對應(yīng)的緩存數(shù)據(jù)不丟失。
【附圖說明】
[0015]為了更清楚地說明本發(fā)明實施例中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0016]圖1是本發(fā)明實施例提供的緩存數(shù)據(jù)的處理方法的實現(xiàn)流程圖;
[0017]圖2是本發(fā)明另一實施例提供的緩存數(shù)據(jù)的處理方法的實現(xiàn)流程圖;
[0018]圖3是本發(fā)明實施例提供的緩存數(shù)據(jù)的處理裝置的結(jié)構(gòu)框圖。
【具體實施方式】
[0019]為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合附圖及實施例,對本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0020]圖1示出了本發(fā)明實施例提供的緩存數(shù)據(jù)的處理方法的實現(xiàn)流程圖,詳述如下:
[0021]在步驟SlOl中,當(dāng)接收到進(jìn)入睡眠狀態(tài)的指令時,獲取先入先出存儲器中緩存數(shù)據(jù)的當(dāng)前存儲量。
[0022]需要說明的是,本發(fā)明實施例的執(zhí)行主體可以為穿戴式智能設(shè)備,也可以為內(nèi)置于穿戴式智能設(shè)備中的裝置,還可以為其他緩存數(shù)據(jù)的處理裝置,在此不作限定。緩存數(shù)據(jù)可以為三軸加速度值,在此不作限定。
[0023]當(dāng)接收到進(jìn)入睡眠狀態(tài)的指令時,獲取先入先出存儲器中緩存數(shù)據(jù)的當(dāng)前存儲量,并判斷先入先出存儲器中緩存數(shù)據(jù)的當(dāng)前存儲量是否達(dá)到臨界值。在這里,臨界值大于第一預(yù)設(shè)值且小于第二預(yù)設(shè)值。
[0024]在步驟S102中,若所述當(dāng)前存儲量大于第一預(yù)設(shè)值且小于第二預(yù)設(shè)值,則持續(xù)查詢是否存在所述先入先出存儲器對應(yīng)的中斷請求,其中,所述第二預(yù)設(shè)值小于所述先入先出存儲器的最大存儲量。
[0025]在本發(fā)明實施例中,第二預(yù)設(shè)值小于先入先出存儲器的最大存儲量,第一預(yù)設(shè)值小于第二預(yù)設(shè)值。假設(shè)先入先出存儲器最多可存儲32組緩存數(shù)據(jù),即先入先出存儲器的最大存儲量為32組,則第二預(yù)設(shè)值可以為25組,第一預(yù)設(shè)值可以為23組,在此不作限定。若第二預(yù)設(shè)值為25組,第一預(yù)設(shè)值為23組,則臨界值為24組。若先入先出存儲器中緩存數(shù)據(jù)的當(dāng)前存儲量達(dá)到臨界值,則不執(zhí)行進(jìn)入睡眠狀態(tài)的指令,而持續(xù)查詢是否存在先入先出存儲器對應(yīng)的中斷請求,從而避免在執(zhí)行進(jìn)入睡眠狀態(tài)的指令的過程中延遲了對于先入先出存儲器對應(yīng)的中斷請求的處理。
[0026]在步驟S103中,在查詢到所述先入先出存儲器對應(yīng)的中斷請求后,讀取所述先入先出存儲器中的緩存數(shù)據(jù)。
[0027]由于當(dāng)先入先出存儲器中緩存數(shù)據(jù)的當(dāng)前存儲量達(dá)到臨界值后持續(xù)查詢先入先出存儲器對應(yīng)的中斷請求,因此,在產(chǎn)生先入先出存儲器對應(yīng)的中斷請求后,可以第一時間查詢到。在查詢到先入先出存儲器對應(yīng)的中斷請求后,立即讀取先入先出存儲器中的緩存數(shù)據(jù),由此保證了先入先出存儲器中的緩存數(shù)據(jù)能夠被及時讀取。
[0028]進(jìn)一步地,在所述獲取先入先出存儲器中緩存數(shù)據(jù)的當(dāng)前存儲量之后,所述方法還包括:
[0029]若所述當(dāng)前存儲量小于或等于所述第一預(yù)設(shè)值,則進(jìn)入所述睡眠狀態(tài)。
[0030]在本發(fā)明實施例中,若當(dāng)前存儲量小于或等于第一預(yù)設(shè)值,則進(jìn)入睡眠狀態(tài),以降低系統(tǒng)功耗。
[0031 ] 進(jìn)一步地,所述方法還包括:
[0032]當(dāng)所述當(dāng)前存儲量大于或等于所述第二預(yù)設(shè)值時,生成所述先入先出存儲器對應(yīng)的中斷請求。
[0033]在本發(fā)明實施例中,當(dāng)先入先出存儲器中緩存數(shù)據(jù)的當(dāng)前存儲量達(dá)到第二預(yù)設(shè)值時,生成先入先出存儲器對應(yīng)的中斷請求,而不等到先入先出存儲器中緩存數(shù)據(jù)的當(dāng)前存儲量達(dá)到先入先出存儲器的最大存儲量時才產(chǎn)生先入先出存儲器對應(yīng)的中斷請求,由此避免由于不能及時處理先入先出存儲器對應(yīng)的中斷請求而產(chǎn)生的數(shù)據(jù)丟失。
[0034]圖2示出了本發(fā)明另一實施例提供的緩存數(shù)據(jù)的處理方法的實現(xiàn)流程圖,參照圖2:
[0035]在步驟S201中,當(dāng)接收到進(jìn)入睡眠狀態(tài)的指令時,獲取先入先出存儲器中緩存數(shù)據(jù)的當(dāng)前存儲量;
[0036]在步驟S202中,判斷當(dāng)前存儲量是否大于或等于第二預(yù)設(shè)值,若是,則執(zhí)行步驟S203 ;若否,則執(zhí)行步驟S205 ;
[0037]在步驟S203中,生成先入先出存儲器對應(yīng)的中斷請求;
[0038]在步驟S204中,讀取先入先出存儲器中的緩存數(shù)據(jù);
[0039]在步驟S205中,判斷當(dāng)前存儲量是否大于第一預(yù)設(shè)值且小于第二預(yù)設(shè)值,若是,則執(zhí)行步驟S206 ;若否,則執(zhí)行步驟S207 ;
[0040]在步驟S206中,持續(xù)查詢是否存在先入先出存儲器對應(yīng)的中斷請求;
[0041 ] 在步驟S207中,進(jìn)入睡眠狀態(tài)。
[0042]優(yōu)選地,所述方法還包括:
[0043]設(shè)置一定時器;
[0044]當(dāng)所述定時器的計時時長大于或等于第三預(yù)設(shè)值時,生成所述先入先出存儲器對應(yīng)的中斷請求,所述第三預(yù)設(shè)值等于所述先入先出存儲器從空狀態(tài)至滿狀態(tài)所需的時長。
[0045]作為本發(fā)明的一個實施例,為了避免在先入先出存儲器存滿后還未讀取先入先出存儲器中的緩存數(shù)據(jù),設(shè)置一定時器,該定時器的定時時長等于先入先出存儲器從空狀態(tài)至滿狀態(tài)所需的時長。在這里,定時器的定時時長當(dāng)定時器的計時時長大于或等于第三預(yù)設(shè)值時,定時器產(chǎn)生中斷請求,以使主程序立即讀取先入先出存儲器中的緩存數(shù)據(jù)。
[0046]進(jìn)一步地,在所述讀取所述先入先出存儲器中的緩存數(shù)據(jù)之后,所述方法還包括:
[0047]對所述定時器執(zhí)行清零操作。
[0048]在本發(fā)明實施例中,在讀取先入先出存儲器中的緩存數(shù)據(jù)后,對定時器執(zhí)行清零操作,從而保證定時器只在先入先出存儲器