本發(fā)明涉及一種基于雙cpu架構(gòu)的智能pos安卓同步低功耗方法。
背景技術(shù):
現(xiàn)有采用雙cpu架構(gòu)的智能pos的低功耗策略,主要通過(guò)雙向通知實(shí)現(xiàn)在soc端進(jìn)入低功耗狀態(tài)的時(shí)候,通過(guò)串口等通訊手段告知mcu同步進(jìn)入低功耗狀態(tài),并且在主soc喚醒之后,再通過(guò)對(duì)應(yīng)的通訊手段喚醒mcu恢復(fù)正常的工作功耗。
這種策略有兩個(gè)缺點(diǎn):
一、在soc短時(shí)間內(nèi)反復(fù)進(jìn)入和退出低功耗模式的情況下,有可能受限于mcu的響應(yīng)速度無(wú)法快速的同步雙cpu的狀態(tài),可能導(dǎo)致soc一端已經(jīng)退出低功耗模式,另外一端mcu仍然在低功耗模式中,一般的做法是此時(shí)檢測(cè)mcu是否有響應(yīng),如果規(guī)定時(shí)間內(nèi)沒(méi)有響應(yīng)則通過(guò)額外手段(一般是預(yù)留硬件外部中斷)喚醒mcu,實(shí)現(xiàn)雙cpu狀態(tài)同步;
二、同樣在soc短時(shí)間內(nèi)反復(fù)進(jìn)入和退出低功耗模式的情況下,還有可能出現(xiàn)soc已經(jīng)休眠,但是mcu不處于低功耗模式中,這種情況下會(huì)導(dǎo)致整機(jī)待機(jī)功耗顯著提高。
本專利則是解決的這個(gè)問(wèn)題,在除去硬件問(wèn)題的前提下,能夠保證在指定時(shí)間內(nèi)雙cpu的低功耗模式進(jìn)出狀態(tài)同步。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的在于提供一種基于雙cpu架構(gòu)的智能pos安卓同步低功耗方法,該方法能夠穩(wěn)定同步雙cpu的低功耗狀態(tài)及喚醒狀態(tài),從而規(guī)避多余的指令響應(yīng),避免幾率性出現(xiàn)的雙cpu狀態(tài)不同步,從而導(dǎo)致soc低功耗模式下待機(jī)功耗偏高問(wèn)題或者soc退出低功耗后mcu管控的外設(shè)模塊無(wú)響應(yīng)問(wèn)題。
為實(shí)現(xiàn)上述目的,本發(fā)明的技術(shù)方案是:一種基于雙cpu架構(gòu)的智能pos安卓同步低功耗方法,包括如下步驟,
s1、系統(tǒng)正常運(yùn)行:soc端的中間件和mcu均處于正常工作狀態(tài)下,soc端的中間件每隔一預(yù)定時(shí)間發(fā)送心跳包給mcu,同時(shí)mcu收到任意數(shù)據(jù)包都會(huì)重置定時(shí)器,保證定時(shí)器中斷事件不會(huì)被觸發(fā);
s2、系統(tǒng)進(jìn)入低功耗模式:soc進(jìn)入低功耗模式,soc端的中間件停止發(fā)送心跳包,mcu由于在一預(yù)設(shè)閾值時(shí)間內(nèi)未收到心跳包,觸發(fā)mcu內(nèi)對(duì)應(yīng)定時(shí)器中斷也進(jìn)入低功耗模式;
s3、系統(tǒng)從低功耗模式退出:soc被喚醒,soc端的中間件繼續(xù)每隔一預(yù)定時(shí)間發(fā)送心跳包給mcu,使得mcu被喚醒。
在本發(fā)明一實(shí)施例中,在所述步驟s2中,soc端的中間件停止發(fā)送心跳包的同時(shí),還拒絕應(yīng)用對(duì)mcu的訪問(wèn),并停止和mcu相關(guān)的操作。
在本發(fā)明一實(shí)施例中,在所述步驟s2中,在mcu進(jìn)入低功耗模式時(shí),mcu會(huì)依次記錄下由其控制的各個(gè)模塊的當(dāng)前使用狀態(tài),同時(shí)關(guān)閉其控制的各個(gè)模塊的供電,并降低mcu頻率,僅留下外部中斷以外部通知喚醒mcu。
在本發(fā)明一實(shí)施例中,在所述步驟s3中,mcu被喚醒后,mcu會(huì)按mcu進(jìn)入低功耗模式時(shí)記錄的各個(gè)模塊的使用狀態(tài)恢復(fù)各個(gè)模塊的對(duì)應(yīng)狀態(tài)。
在本發(fā)明一實(shí)施例中,所述外部中斷包括串口或gpio口。
在本發(fā)明一實(shí)施例中,所述預(yù)定時(shí)間為10s。
在本發(fā)明一實(shí)施例中,所述預(yù)設(shè)閾值時(shí)間為30s。
相較于現(xiàn)有技術(shù),本發(fā)明具有以下有益效果:本發(fā)明方法能夠穩(wěn)定同步雙cpu的低功耗狀態(tài)及喚醒狀態(tài),從而規(guī)避多余的指令響應(yīng),避免幾率性出現(xiàn)的雙cpu狀態(tài)不同步,從而導(dǎo)致soc低功耗模式下待機(jī)功耗偏高問(wèn)題或者soc退出低功耗后mcu管控的外設(shè)模塊無(wú)響應(yīng)問(wèn)題。
附圖說(shuō)明
圖1為本發(fā)明系統(tǒng)整體框架圖。
圖2為本發(fā)明中間件的心跳包發(fā)送流程圖。
圖3為本發(fā)明mcu處理到達(dá)數(shù)據(jù)包的流程圖。
圖4為本發(fā)明mcu進(jìn)入低功耗模式的流程圖。
圖5為本發(fā)明系統(tǒng)進(jìn)入低功耗模式同步雙cpu狀態(tài)的流程圖。
圖6為本發(fā)明系統(tǒng)退出低功耗模式同步雙cpu狀態(tài)的流程圖。
具體實(shí)施方式
下面結(jié)合附圖,對(duì)本發(fā)明的技術(shù)方案進(jìn)行具體說(shuō)明。
如圖2-4所示,本發(fā)明的一種基于雙cpu架構(gòu)的智能pos安卓同步低功耗方法,包括如下步驟,
s1、系統(tǒng)正常運(yùn)行:soc端的中間件和mcu均處于正常工作狀態(tài)下,soc端的中間件每隔一預(yù)定時(shí)間發(fā)送心跳包給mcu,同時(shí)mcu收到任意數(shù)據(jù)包都會(huì)重置定時(shí)器,保證定時(shí)器中斷事件不會(huì)被觸發(fā);
s2、系統(tǒng)進(jìn)入低功耗模式:soc進(jìn)入低功耗模式,soc端的中間件停止發(fā)送心跳包,mcu由于在一預(yù)設(shè)閾值時(shí)間內(nèi)未收到心跳包,觸發(fā)mcu內(nèi)對(duì)應(yīng)定時(shí)器中斷也進(jìn)入低功耗模式;
s3、系統(tǒng)從低功耗模式退出:soc被喚醒,soc端的中間件繼續(xù)每隔一預(yù)定時(shí)間發(fā)送心跳包給mcu,使得mcu被喚醒。
在所述步驟s2中,soc端的中間件停止發(fā)送心跳包的同時(shí),還拒絕應(yīng)用對(duì)mcu的訪問(wèn),并停止和mcu相關(guān)的操作。在所述步驟s2中,在mcu進(jìn)入低功耗模式時(shí),mcu會(huì)依次記錄下由其控制的各個(gè)模塊的當(dāng)前使用狀態(tài),同時(shí)關(guān)閉其控制的各個(gè)模塊的供電,并降低mcu頻率,僅留下外部中斷以外部通知喚醒mcu。
在所述步驟s3中,mcu被喚醒后,mcu會(huì)按mcu進(jìn)入低功耗模式時(shí)記錄的各個(gè)模塊的使用狀態(tài)恢復(fù)各個(gè)模塊的對(duì)應(yīng)狀態(tài)。
所述外部中斷包括串口或gpio口。
所述預(yù)定時(shí)間為10s。所述預(yù)設(shè)閾值時(shí)間為30s。
以下為本發(fā)明的具體實(shí)現(xiàn)過(guò)程。
本發(fā)明的基于雙cpu架構(gòu)的智能pos安卓同步低功耗方法,基于如下系統(tǒng)(如圖1所示)實(shí)現(xiàn):
1.soc端內(nèi)核/android端內(nèi)核
a)soc端主要依賴于原生android的低功耗管控機(jī)制,在用戶應(yīng)用空閑且長(zhǎng)時(shí)間沒(méi)有操作后或者用戶主動(dòng)按下電源鍵后熄滅屏幕,同時(shí)在屏幕熄滅后一段時(shí)間內(nèi)逐步關(guān)閉包括藍(lán)牙、wifi、移動(dòng)數(shù)據(jù)網(wǎng)絡(luò)等其他相關(guān)基礎(chǔ)外設(shè),同時(shí)掛起系統(tǒng)中正在運(yùn)行的應(yīng)用程序和后臺(tái)服務(wù)(中間件會(huì)稍微延后被關(guān)閉,保證能夠同步雙cpu的狀態(tài)),并且降低cpu和ddr內(nèi)存頻率,實(shí)現(xiàn)進(jìn)入低功耗模式。(實(shí)際過(guò)程中android會(huì)定期喚醒連通網(wǎng)絡(luò)以供部分有申請(qǐng)權(quán)限的應(yīng)用進(jìn)行短暫的數(shù)據(jù)交互,避免用戶錯(cuò)過(guò)一些重要通知和信息,如郵件、電話或者短信)
b)當(dāng)機(jī)器喚醒之后,機(jī)器依次喚醒各個(gè)應(yīng)用和服務(wù),還原到進(jìn)入低功耗之前的狀態(tài)。
2.soc端中間件
a)中間件主要工作是用來(lái)管控所有應(yīng)用對(duì)mcu的各個(gè)模塊或者外設(shè)的使用,同時(shí)負(fù)責(zé)和mcu之間的協(xié)議交互。
b)在此基礎(chǔ)上,soc會(huì)維護(hù)和mcu端的持續(xù)數(shù)據(jù)通訊(如保證每10秒至少有一次數(shù)據(jù)交互,類似tcp通訊中常見(jiàn)的心跳包),而在系統(tǒng)內(nèi)核進(jìn)入低功耗之后,會(huì)停止維護(hù)和mcu端的持續(xù)數(shù)據(jù)通訊,并且拒絕任何應(yīng)用繼續(xù)訪問(wèn)和mcu相關(guān)的模塊。
c)系統(tǒng)退出低功耗狀態(tài)時(shí),中間件亦會(huì)被喚醒,此時(shí)通過(guò)發(fā)送心跳包或者gpio喚醒mcu,以此來(lái)同步雙cpu狀態(tài)。
3.mcu端/安全支付相關(guān)外設(shè)及模塊
a)mcu端主要包括了磁卡讀卡器、接觸和非接觸式卡讀卡器、打印機(jī)、led燈、蜂鳴器、硬加密模塊和emv安全模塊等安全支付相關(guān)外設(shè)。
b)開(kāi)機(jī)之后在soc端送入第一個(gè)心跳包開(kāi)始,每到來(lái)一個(gè)心跳包便會(huì)重置一個(gè)指定定時(shí)器,如果超過(guò)指定時(shí)間(如30秒)定時(shí)器沒(méi)有被重置過(guò),則會(huì)觸發(fā)定時(shí)器中斷,mcu自動(dòng)進(jìn)入低功耗狀態(tài)
c)在進(jìn)入低功耗模式的時(shí)候,mcu依次記錄下各個(gè)模塊的當(dāng)前使用狀態(tài),同時(shí)關(guān)閉各個(gè)模塊的供電(其中l(wèi)ed可能會(huì)在充電狀態(tài)下亮起,就不會(huì)被下電),并降低mcu頻率,僅留下串口或者gpio等極少的外部中斷用來(lái)外部通知喚醒mcu。
d)退出低功耗模式的時(shí)候,mcu會(huì)按之前各個(gè)模塊的使用情況恢復(fù)各個(gè)模塊的對(duì)應(yīng)狀態(tài)。
具體的本發(fā)明方法的實(shí)現(xiàn)方式如下:
這里主要分為三個(gè)策略,即系統(tǒng)正常運(yùn)行時(shí)的策略,系統(tǒng)進(jìn)入低功耗模式的策略,以及系統(tǒng)從低功耗模式退出的策略。
1.系統(tǒng)正常運(yùn)行時(shí),中間件和mcu都在正常狀態(tài)下,中間件每隔一段時(shí)間便會(huì)發(fā)送心跳包給mcu,同時(shí)mcu收到任意數(shù)據(jù)包都會(huì)重置定時(shí)器,保證定時(shí)器中斷事件不會(huì)被觸發(fā)。
2.如圖5所示,系統(tǒng)進(jìn)入低功耗模式的策略,主要依賴于soc端先行進(jìn)入低功耗模式,同時(shí)中間件停止發(fā)送心跳包,并拒絕其他應(yīng)用對(duì)mcu的訪問(wèn),停止任何和mcu相關(guān)的操作。mcu端由于在指定時(shí)間內(nèi)沒(méi)有收到任意數(shù)據(jù)包,則會(huì)觸發(fā)對(duì)應(yīng)的定時(shí)器中斷也進(jìn)入低功耗模式。在進(jìn)入低功耗模式的時(shí)候,mcu依次記錄下各個(gè)模塊的當(dāng)前使用狀態(tài),同時(shí)關(guān)閉各個(gè)模塊的供電(其中l(wèi)ed可能會(huì)在充電狀態(tài)下亮起,就不會(huì)被下電),并降低mcu頻率,僅留下串口或者gpio等極少的外部中斷用來(lái)外部通知喚醒mcu。
3.如圖6所示,系統(tǒng)從低功耗模式退出的策略,主要是用戶、應(yīng)用程序或者后臺(tái)服務(wù)有關(guān)鍵操作時(shí)主動(dòng)喚醒soc端。此時(shí)中間件亦會(huì)被喚醒,此時(shí)通過(guò)發(fā)送心跳包或者gpio喚醒mcu,以此來(lái)同步雙cpu狀態(tài)。mcu在被喚醒之后,mcu會(huì)按之前各個(gè)模塊的使用情況恢復(fù)各個(gè)模塊的對(duì)應(yīng)狀態(tài)。
以上是本發(fā)明的較佳實(shí)施例,凡依本發(fā)明技術(shù)方案所作的改變,所產(chǎn)生的功能作用未超出本發(fā)明技術(shù)方案的范圍時(shí),均屬于本發(fā)明的保護(hù)范圍。