<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 電源與新能源 > 設計應用 > 基于WinCE5.0的嵌入式設備休眠喚醒技術(shù)研究

基于WinCE5.0的嵌入式設備休眠喚醒技術(shù)研究

作者: 時(shí)間:2012-05-25 來(lái)源:網(wǎng)絡(luò ) 收藏

系統應用中降低設備功耗以提高續航能力是其設計的熱點(diǎn)。在休眠狀態(tài),系統處于最低電流消耗狀態(tài),同時(shí)仍維持存儲區中的內容,為了減少能量消耗和延長(cháng)電池壽命,需要讓處理器定期進(jìn)入或退出休眠模式。Windows CE 作為一個(gè)廣泛應用于設備上的操作系統,提供了完善的電源管理功能。其中,便是一個(gè)重要的功能。本文在結合S3C2440硬件基礎上分析過(guò)程,分別采用外部中斷喚醒和RTC中斷喚醒兩種方法實(shí)現了,并給出了具體實(shí)現代碼。根據相應喚醒需求,將這兩種方法應用于北京化工大學(xué)診斷與自愈工程研究中心的一款基于S3C2440和WindowsCE 5.0的智能巡檢分析診斷儀,結果表明能準確達到實(shí)際的設置要求,效果良好。

本文引用地址:http://dyxdggzs.com/article/230445.htm

1 休眠喚醒過(guò)程分析

對于電源控制邏輯模塊,S3C2440 有多種電源管理方案以針對須執行的任務(wù)保持最優(yōu)的電源消耗。S3C2440 中的電源管理模塊對應 4 種模式:NORMAL 模式、SLOW 模式、IDLE 模式和SLEEP模式。

在SLEEP模式下,電源管理模塊關(guān)閉內部電源,因此,CPU 和內部邏輯模塊都沒(méi)有電源消耗,但除了此模式下的喚醒模塊。激活SLEEP模式需要2個(gè)獨立的電源,其中一個(gè)為喚醒模塊供電,另一個(gè)為包括CPU的其他邏輯模塊供電,并且可以由power on/off控制。在SLEEP模式下,給CUP和內部邏輯單元供電的第二個(gè)電源被關(guān)閉,只有喚醒模塊是工作的。這種狀態(tài)下,可以通過(guò)外部中斷EINT[15:0]或定時(shí)器的RTC(real time control)中斷將系統從睡眠狀態(tài)中喚醒[3],如圖1所示。

在睡眠模式下,VDDi、VDDiam、VDDMPLL以及VDDUPLL會(huì )被關(guān)閉,其由PWREN引腳來(lái)控制,如PWREN信號被置位,VDDi和VDDiam則由一個(gè)外部變壓器供電。當PWREN=0時(shí),VDDi和VDDiam被關(guān)閉。

有多種方法可以使系統進(jìn)入休眠,例如在Windows CE的桌面上,點(diǎn)左下角的開(kāi)始圖標,然后選擇 “掛起”;或者,在應用程序或驅動(dòng)中調用SetSystemPowerState()函數,都可以讓系統進(jìn)入休眠狀態(tài)。實(shí)際上,這兩種方法殊途同歸,最終都需要通過(guò)OEM層OEMPowerOff()函數依次調用BSPPowerOff()函數,以關(guān)閉板級的相關(guān)電源,保存所有寄存器的值,關(guān)閉背光;調用 ConfigStopGPIO()函數,設置各IO休眠后的狀態(tài);如果支持KITL,調用OALKitlPowerOff()函數關(guān)閉KITL功能;調用OALCPUPoweroff()函數,使得CPU進(jìn)入休眠模式。OALCPUPoweroff()函數保存當前系統的狀態(tài),把CPU上一些寄存器里的數據保存到RAM里去,然后禁止RAM自刷新的功能,加入喚醒中斷源,最后使CPU進(jìn)入休眠模式。當CPU處于Sleep狀態(tài)時(shí),RAM不會(huì )斷電,這樣RAM中的數據就不會(huì )丟失,當CPU被喚醒后使用RAM里的數據恢復系統。

當相應的中斷源觸發(fā)時(shí),CPU就會(huì )被喚醒,電流消耗變大了,需要說(shuō)明的是,此處僅喚醒CPU,之后才喚醒WINCE系統。當系統由SLEEP到NORMAL切換期間需經(jīng)過(guò)一個(gè)RESET過(guò)程,這個(gè)過(guò)程稱(chēng)為 Power On Reset 。在S3C2440 CPU中,寄存器GSTATUS2專(zhuān)門(mén)用以判斷發(fā)生Reset原因。Power On Reset后,在之前SLEEP過(guò)程中保存下來(lái)的RAM中的系統數據是不會(huì )丟失的。本文需要設計的喚醒子系統,就是把這些數值恢復到它們休眠前應處的地址。

在Bootloader中實(shí)現數據恢復的具體步驟如下:

(1)如果有喚醒源被觸發(fā),內部的復位信號就會(huì )動(dòng)作。這和外部的 nReset引腳觸發(fā)非常相似。復位持續時(shí)間由內部的 16 bit計數器邏輯決定,通過(guò)reset 復位決斷時(shí)間可以計算tRST=(65535/XTAL_frequency);

(2)通過(guò)檢測GSTATUS2[2],判斷是否是由SLEEP模式喚醒引起的電源開(kāi)啟;

(3)通過(guò)設置 MISCCR[19:17]=000b,釋放 SDRAM 的信號保護;

(4)配置 SDRAM 內存控制器;

(5)等待,直到 SDRAM 自刷新被釋放,結束等待。大部分SDRAM需要等待所有 SDRAM 行的自刷新周期;

(6)GSTATUS[3:4]的信息可用于保存用戶(hù)自定義數據,因為在 GSTATUS[3:4]中的值在睡眠模式下被保留;

(7)對 EINT[3:0],檢查 SRCPND 寄存器;對EINT[15:4],查看 EINTPEND 寄存器而不是SRCPND寄存器。(盡管EINTPEND寄存器的一些位被置位,SRCPND 寄存器不會(huì )被置位)。

以上是一個(gè)通用的休眠喚醒過(guò)程,在實(shí)際應用中,可根據不同情況使用不同的喚醒方式。例如,以休眠模式待機,在需要使用儀器時(shí)才喚醒系統的情況下,就需要一個(gè)諸如按鍵的外部中斷來(lái)喚醒系統;而對于僅做一個(gè)保存掛起動(dòng)作的情況,即刻自動(dòng)喚醒系統則更為便捷。S3C2440就提供了兩種喚醒實(shí)現方式:外部中斷實(shí)現方式和RTC中斷實(shí)現方式。

2 基于外部中斷的休眠喚醒

正如之前提到的,在OALCPUPoweroff里,系統進(jìn)入休眠前,正確設置外部喚醒中斷,才能夠喚醒CPU。正確設置喚醒中斷源,有3個(gè)要點(diǎn):

(1)把對應的GPIO設置為中斷功能;

(2)明確外部中斷觸發(fā)條件,如將某種喚醒使用的中斷源所對應的IO接到一個(gè)按鍵上,需要通過(guò)按下按鍵實(shí)現喚醒,需要明確當按下這個(gè)按鍵時(shí),IO接口上的電平會(huì )如何變化;

(3)根據按鍵按下時(shí)IO電平的變化條件設置EXTINTn寄存器。當按下按鍵時(shí),IO口上的電平會(huì )發(fā)生從高到低的變化,那么就設置對應的EXTINTn,使得中斷觸發(fā)條件為Falling edge triggered即下降沿觸發(fā)。

通過(guò)如下代碼實(shí)現了通過(guò)按鍵K1、K2的外部中斷喚醒方式:

; 6. Setting Wakeup External Interrupt(EINT0,1,2) Mode
ldr r0, =vGPIOBASE
ldr r1, =0x5566//按鍵K1,K2(EINT0,EINT2)
str r1, [r0, #oGPFCON]
ldr r1, =0x82
str r1, [r0, #oEXTINT0]

此段代碼,首先設置了外部中斷0和外部中斷2的中斷功能,接著(zhù)設置了中斷的觸發(fā)方式:下降沿觸發(fā)方式。

當Windows CE操作系統在基于S3C2440的智能巡檢分析診斷儀完全啟動(dòng)后,按下“掛起”鍵,待屏幕顯示消失后,開(kāi)始實(shí)驗。

實(shí)驗一:按下按鍵K1,使系統立即重新啟動(dòng),重新進(jìn)入Windows CE操作系統;
實(shí)驗二:按下按鍵K2,使系統立即重新啟動(dòng),重新進(jìn)入Windows CE操作系統;
實(shí)驗結果表明:即按即啟,沒(méi)有延遲,達到了外部中斷-按鍵喚醒系統的理想效果。

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)

上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: 嵌入式 休眠喚醒

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>