電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>嵌入式開發(fā)>基于S3C2440和WindowsCE5.0的平臺休眠喚醒方案

基于S3C2440和WindowsCE5.0的平臺休眠喚醒方案

2017-10-31 | rar | 0.3 MB | 次下載 | 1積分

資料介紹

 嵌入式系統(tǒng)應(yīng)用中降低設(shè)備功耗以提高續(xù)航能力是其設(shè)計的熱點[1]。在休眠狀態(tài),系統(tǒng)處于最低電流消耗狀態(tài),同時仍維持存儲區(qū)中的內(nèi)容,為了減少能量消耗和延長電池壽命,需要讓處理器定期進入或退出休眠模式[2]。Windows CE 作為一個廣泛應(yīng)用于嵌入式設(shè)備上的操作系統(tǒng),提供了完善的電源管理功能。其中,休眠喚醒便是一個重要的功能。本文在結(jié)合S3C2440硬件基礎(chǔ)上分析休眠喚醒過程,分別采用外部中斷喚醒和RTC中斷喚醒兩種方法實現(xiàn)了休眠喚醒,并給出了具體實現(xiàn)代碼。根據(jù)相應(yīng)喚醒需求,將這兩種方法應(yīng)用于北京化工大學(xué)診斷與自愈工程研究中心的一款基于S3C2440和WindowsCE 5.0的嵌入式智能巡檢分析診斷儀,結(jié)果表明能準(zhǔn)確達到實際的設(shè)置要求,效果良好。
  1 休眠喚醒過程分析
  對于電源控制邏輯模塊,S3C2440 有多種電源管理方案以針對須執(zhí)行的任務(wù)保持最優(yōu)的電源消耗。S3C2440 中的電源管理模塊對應(yīng) 4 種模式:NORMAL 模式、SLOW 模式、IDLE 模式和SLEEP模式。
  在SLEEP模式下,電源管理模塊關(guān)閉內(nèi)部電源,因此,CPU 和內(nèi)部邏輯模塊都沒有電源消耗,但除了此模式下的喚醒模塊。激活SLEEP模式需要2個獨立的電源,其中一個為喚醒模塊供電,另一個為包括CPU的其他邏輯模塊供電,并且可以由power on/off控制。在SLEEP模式下,給CUP和內(nèi)部邏輯單元供電的第二個電源被關(guān)閉,只有喚醒模塊是工作的。這種狀態(tài)下,可以通過外部中斷EINT[15:0]或定時器的RTC(real time control)中斷將系統(tǒng)從睡眠狀態(tài)中喚醒[3],如圖1所示。
  基于S3C2440和WindowsCE5.0的平臺休眠喚醒方案
  在睡眠模式下,VDDi、VDDiam、VDDMPLL以及VDDUPLL會被關(guān)閉,其由PWREN引腳來控制,如PWREN信號被置位,VDDi和VDDiam則由一個外部變壓器供電。當(dāng)PWREN=0時,VDDi和VDDiam被關(guān)閉。
  有多種方法可以使系統(tǒng)進入休眠,例如在Windows CE的桌面上,點左下角的開始圖標(biāo),然后選擇 “掛起”;或者,在應(yīng)用程序或驅(qū)動中調(diào)用SetSystemPowerState()函數(shù),都可以讓系統(tǒng)進入休眠狀態(tài)。實際上,這兩種方法殊途同歸,最終都需要通過OEM層OEMPowerOff()函數(shù)依次調(diào)用BSPPowerOff()函數(shù),以關(guān)閉板級的相關(guān)電源,保存所有寄存器的值,關(guān)閉背光;調(diào)用 ConfigStopGPIO()函數(shù),設(shè)置各IO休眠后的狀態(tài);如果支持KITL,調(diào)用OALKitlPowerOff()函數(shù)關(guān)閉KITL功能;調(diào)用OALCPUPoweroff()函數(shù),使得CPU進入休眠模式。OALCPUPoweroff()函數(shù)保存當(dāng)前系統(tǒng)的狀態(tài),把CPU上一些寄存器里的數(shù)據(jù)保存到RAM里去,然后禁止RAM自刷新的功能,加入喚醒中斷源,最后使CPU進入休眠模式。當(dāng)CPU處于Sleep狀態(tài)時,RAM不會斷電,這樣RAM中的數(shù)據(jù)就不會丟失,當(dāng)CPU被喚醒后使用RAM里的數(shù)據(jù)恢復(fù)系統(tǒng)。
  當(dāng)相應(yīng)的中斷源觸發(fā)時,CPU就會被喚醒,電流消耗變大了,需要說明的是,此處僅喚醒CPU,之后才喚醒WINCE系統(tǒng)。當(dāng)系統(tǒng)由SLEEP到NORMAL切換期間需經(jīng)過一個RESET過程,這個過程稱為 Power On Reset 。在S3C2440 CPU中,寄存器GSTATUS2專門用以判斷發(fā)生Reset原因。Power On Reset后,在之前SLEEP過程中保存下來的RAM中的系統(tǒng)數(shù)據(jù)是不會丟失的。本文需要設(shè)計的喚醒子系統(tǒng),就是把這些數(shù)值恢復(fù)到它們休眠前應(yīng)處的地址。
  在Bootloader中實現(xiàn)數(shù)據(jù)恢復(fù)的具體步驟如下:
 ?。?)如果有喚醒源被觸發(fā),內(nèi)部的復(fù)位信號就會動作。這和外部的 nReset引腳觸發(fā)非常相似。復(fù)位持續(xù)時間由內(nèi)部的 16 bit計數(shù)器邏輯決定,通過reset 復(fù)位決斷時間可以計算tRST=(65535/XTAL_frequency);
  (2)通過檢測GSTATUS2[2],判斷是否是由SLEEP模式喚醒引起的電源開啟;
 ?。?)通過設(shè)置 MISCCR[19:17]=000b,釋放 SDRAM 的信號保護;
 ?。?)配置 SDRAM 內(nèi)存控制器;
  (5)等待,直到 SDRAM 自刷新被釋放,結(jié)束等待。大部分SDRAM需要等待所有 SDRAM 行的自刷新周期;
 ?。?)GSTATUS[3:4]的信息可用于保存用戶自定義數(shù)據(jù),因為在 GSTATUS[3:4]中的值在睡眠模式下被保留;
  (7)對 EINT[3:0],檢查 SRCPND 寄存器;對EINT[15:4],查看 EINTPEND 寄存器而不是SRCPND寄存器。
 ?。ūM管EINTPEND寄存器的一些位被置位,SRCPND 寄存器不會被置位)。
  以上是一個通用的休眠喚醒過程,在實際應(yīng)用中,可根據(jù)不同情況使用不同的喚醒方式。例如,以休眠模式待機,在需要使用儀器時才喚醒系統(tǒng)的情況下,就需要一個諸如按鍵的外部中斷來喚醒系統(tǒng);而對于僅做一個保存掛起動作的情況,即刻自動喚醒系統(tǒng)則更為便捷。S3C2440就提供了兩種喚醒實現(xiàn)方式:外部中斷實現(xiàn)方式和RTC中斷實現(xiàn)方式。
  2 基于外部中斷的休眠喚醒
  正如之前提到的,在OALCPUPoweroff里,系統(tǒng)進入休眠前,正確設(shè)置外部喚醒中斷,才能夠喚醒CPU。正確設(shè)置喚醒中斷源,有3個要點:
 ?。?)把對應(yīng)的GPIO設(shè)置為中斷功能;
 ?。?)明確外部中斷觸發(fā)條件,如將某種喚醒使用的中斷源所對應(yīng)的IO接到一個按鍵上,需要通過按下按鍵實現(xiàn)喚醒,需要明確當(dāng)按下這個按鍵時,IO接口上的電平會如何變化;
  (3)根據(jù)按鍵按下時IO電平的變化條件設(shè)置EXTINTn寄存器。當(dāng)按下按鍵時,IO口上的電平會發(fā)生從高到低的變化,那么就設(shè)置對應(yīng)的EXTINTn,使得中斷觸發(fā)條件為Falling edge triggered即下降沿觸發(fā)。
  通過如下代碼實現(xiàn)了通過按鍵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]
  此段代碼,首先設(shè)置了外部中斷0和外部中斷2的中斷功能,接著設(shè)置了中斷的觸發(fā)方式:下降沿觸發(fā)方式。
  當(dāng)Windows CE操作系統(tǒng)在基于S3C2440的智能巡檢分析診斷儀完全啟動后,按下“掛起”鍵,待屏幕顯示消失后,開始實驗。
  實驗一:按下按鍵K1,使系統(tǒng)立即重新啟動,重新進入Windows CE操作系統(tǒng);
  實驗二:按下按鍵K2,使系統(tǒng)立即重新啟動,重新進入Windows CE操作系統(tǒng);
  實驗結(jié)果表明:即按即啟,沒有延遲,達到了外部中斷-按鍵喚醒系統(tǒng)的理想效果
下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1TC358743XBG評估板參考手冊
  2. 1.36 MB  |  330次下載  |  免費
  3. 2開關(guān)電源基礎(chǔ)知識
  4. 5.73 MB  |  6次下載  |  免費
  5. 3100W短波放大電路圖
  6. 0.05 MB  |  4次下載  |  3 積分
  7. 4嵌入式linux-聊天程序設(shè)計
  8. 0.60 MB  |  3次下載  |  免費
  9. 5基于FPGA的光纖通信系統(tǒng)的設(shè)計與實現(xiàn)
  10. 0.61 MB  |  2次下載  |  免費
  11. 6基于FPGA的C8051F單片機開發(fā)板設(shè)計
  12. 0.70 MB  |  2次下載  |  免費
  13. 751單片機窗簾控制器仿真程序
  14. 1.93 MB  |  2次下載  |  免費
  15. 8基于51單片機的RGB調(diào)色燈程序仿真
  16. 0.86 MB  |  2次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費
  3. 2555集成電路應(yīng)用800例(新編版)
  4. 0.00 MB  |  33564次下載  |  免費
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費
  7. 4開關(guān)電源設(shè)計實例指南
  8. 未知  |  21548次下載  |  免費
  9. 5電氣工程師手冊免費下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費
  11. 6數(shù)字電路基礎(chǔ)pdf(下載)
  12. 未知  |  13750次下載  |  免費
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費
  15. 8《LED驅(qū)動電路設(shè)計》 溫德爾著
  16. 0.00 MB  |  6653次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537796次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420026次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191185次下載  |  免費
  13. 7十天學(xué)會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183278次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費