資料介紹
嵌入式系統應用中降低設備功耗以提高續航能力是其設計的熱點[1]。在休眠狀態,系統處于最低電流消耗狀態,同時仍維持存儲區中的內容,為了減少能量消耗和延長電池壽命,需要讓處理器定期進入或退出休眠模式[2]。Windows CE 作為一個廣泛應用于嵌入式設備上的操作系統,提供了完善的電源管理功能。其中,休眠喚醒便是一個重要的功能。本文在結合S3C2440硬件基礎上分析休眠喚醒過程,分別采用外部中斷喚醒和RTC中斷喚醒兩種方法實現了休眠喚醒,并給出了具體實現代碼。根據相應喚醒需求,將這兩種方法應用于北京化工大學診斷與自愈工程研究中心的一款基于S3C2440和WindowsCE 5.0的嵌入式智能巡檢分析診斷儀,結果表明能準確達到實際的設置要求,效果良好。
1 休眠喚醒過程分析
對于電源控制邏輯模塊,S3C2440 有多種電源管理方案以針對須執行的任務保持最優的電源消耗。S3C2440 中的電源管理模塊對應 4 種模式:NORMAL 模式、SLOW 模式、IDLE 模式和SLEEP模式。
在SLEEP模式下,電源管理模塊關閉內部電源,因此,CPU 和內部邏輯模塊都沒有電源消耗,但除了此模式下的喚醒模塊。激活SLEEP模式需要2個獨立的電源,其中一個為喚醒模塊供電,另一個為包括CPU的其他邏輯模塊供電,并且可以由power on/off控制。在SLEEP模式下,給CUP和內部邏輯單元供電的第二個電源被關閉,只有喚醒模塊是工作的。這種狀態下,可以通過外部中斷EINT[15:0]或定時器的RTC(real time control)中斷將系統從睡眠狀態中喚醒[3],如圖1所示。
在睡眠模式下,VDDi、VDDiam、VDDMPLL以及VDDUPLL會被關閉,其由PWREN引腳來控制,如PWREN信號被置位,VDDi和VDDiam則由一個外部變壓器供電。當PWREN=0時,VDDi和VDDiam被關閉。
有多種方法可以使系統進入休眠,例如在Windows CE的桌面上,點左下角的開始圖標,然后選擇 “掛起”;或者,在應用程序或驅動中調用SetSystemPowerState()函數,都可以讓系統進入休眠狀態。實際上,這兩種方法殊途同歸,最終都需要通過OEM層OEMPowerOff()函數依次調用BSPPowerOff()函數,以關閉板級的相關電源,保存所有寄存器的值,關閉背光;調用 ConfigStopGPIO()函數,設置各IO休眠后的狀態;如果支持KITL,調用OALKitlPowerOff()函數關閉KITL功能;調用OALCPUPoweroff()函數,使得CPU進入休眠模式。OALCPUPoweroff()函數保存當前系統的狀態,把CPU上一些寄存器里的數據保存到RAM里去,然后禁止RAM自刷新的功能,加入喚醒中斷源,最后使CPU進入休眠模式。當CPU處于Sleep狀態時,RAM不會斷電,這樣RAM中的數據就不會丟失,當CPU被喚醒后使用RAM里的數據恢復系統。
當相應的中斷源觸發時,CPU就會被喚醒,電流消耗變大了,需要說明的是,此處僅喚醒CPU,之后才喚醒WINCE系統。當系統由SLEEP到NORMAL切換期間需經過一個RESET過程,這個過程稱為 Power On Reset 。在S3C2440 CPU中,寄存器GSTATUS2專門用以判斷發生Reset原因。Power On Reset后,在之前SLEEP過程中保存下來的RAM中的系統數據是不會丟失的。本文需要設計的喚醒子系統,就是把這些數值恢復到它們休眠前應處的地址。
在Bootloader中實現數據恢復的具體步驟如下:
(1)如果有喚醒源被觸發,內部的復位信號就會動作。這和外部的 nReset引腳觸發非常相似。復位持續時間由內部的 16 bit計數器邏輯決定,通過reset 復位決斷時間可以計算tRST=(65535/XTAL_frequency);
(2)通過檢測GSTATUS2[2],判斷是否是由SLEEP模式喚醒引起的電源開啟;
(3)通過設置 MISCCR[19:17]=000b,釋放 SDRAM 的信號保護;
(4)配置 SDRAM 內存控制器;
(5)等待,直到 SDRAM 自刷新被釋放,結束等待。大部分SDRAM需要等待所有 SDRAM 行的自刷新周期;
(6)GSTATUS[3:4]的信息可用于保存用戶自定義數據,因為在 GSTATUS[3:4]中的值在睡眠模式下被保留;
(7)對 EINT[3:0],檢查 SRCPND 寄存器;對EINT[15:4],查看 EINTPEND 寄存器而不是SRCPND寄存器。
(盡管EINTPEND寄存器的一些位被置位,SRCPND 寄存器不會被置位)。
以上是一個通用的休眠喚醒過程,在實際應用中,可根據不同情況使用不同的喚醒方式。例如,以休眠模式待機,在需要使用儀器時才喚醒系統的情況下,就需要一個諸如按鍵的外部中斷來喚醒系統;而對于僅做一個保存掛起動作的情況,即刻自動喚醒系統則更為便捷。S3C2440就提供了兩種喚醒實現方式:外部中斷實現方式和RTC中斷實現方式。
2 基于外部中斷的休眠喚醒
正如之前提到的,在OALCPUPoweroff里,系統進入休眠前,正確設置外部喚醒中斷,才能夠喚醒CPU。正確設置喚醒中斷源,有3個要點:
(1)把對應的GPIO設置為中斷功能;
(2)明確外部中斷觸發條件,如將某種喚醒使用的中斷源所對應的IO接到一個按鍵上,需要通過按下按鍵實現喚醒,需要明確當按下這個按鍵時,IO接口上的電平會如何變化;
(3)根據按鍵按下時IO電平的變化條件設置EXTINTn寄存器。當按下按鍵時,IO口上的電平會發生從高到低的變化,那么就設置對應的EXTINTn,使得中斷觸發條件為Falling edge triggered即下降沿觸發。
通過如下代碼實現了通過按鍵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的中斷功能,接著設置了中斷的觸發方式:下降沿觸發方式。
當Windows CE操作系統在基于S3C2440的智能巡檢分析診斷儀完全啟動后,按下“掛起”鍵,待屏幕顯示消失后,開始實驗。
實驗一:按下按鍵K1,使系統立即重新啟動,重新進入Windows CE操作系統;
實驗二:按下按鍵K2,使系統立即重新啟動,重新進入Windows CE操作系統;
實驗結果表明:即按即啟,沒有延遲,達到了外部中斷-按鍵喚醒系統的理想效果
1 休眠喚醒過程分析
對于電源控制邏輯模塊,S3C2440 有多種電源管理方案以針對須執行的任務保持最優的電源消耗。S3C2440 中的電源管理模塊對應 4 種模式:NORMAL 模式、SLOW 模式、IDLE 模式和SLEEP模式。
在SLEEP模式下,電源管理模塊關閉內部電源,因此,CPU 和內部邏輯模塊都沒有電源消耗,但除了此模式下的喚醒模塊。激活SLEEP模式需要2個獨立的電源,其中一個為喚醒模塊供電,另一個為包括CPU的其他邏輯模塊供電,并且可以由power on/off控制。在SLEEP模式下,給CUP和內部邏輯單元供電的第二個電源被關閉,只有喚醒模塊是工作的。這種狀態下,可以通過外部中斷EINT[15:0]或定時器的RTC(real time control)中斷將系統從睡眠狀態中喚醒[3],如圖1所示。
在睡眠模式下,VDDi、VDDiam、VDDMPLL以及VDDUPLL會被關閉,其由PWREN引腳來控制,如PWREN信號被置位,VDDi和VDDiam則由一個外部變壓器供電。當PWREN=0時,VDDi和VDDiam被關閉。
有多種方法可以使系統進入休眠,例如在Windows CE的桌面上,點左下角的開始圖標,然后選擇 “掛起”;或者,在應用程序或驅動中調用SetSystemPowerState()函數,都可以讓系統進入休眠狀態。實際上,這兩種方法殊途同歸,最終都需要通過OEM層OEMPowerOff()函數依次調用BSPPowerOff()函數,以關閉板級的相關電源,保存所有寄存器的值,關閉背光;調用 ConfigStopGPIO()函數,設置各IO休眠后的狀態;如果支持KITL,調用OALKitlPowerOff()函數關閉KITL功能;調用OALCPUPoweroff()函數,使得CPU進入休眠模式。OALCPUPoweroff()函數保存當前系統的狀態,把CPU上一些寄存器里的數據保存到RAM里去,然后禁止RAM自刷新的功能,加入喚醒中斷源,最后使CPU進入休眠模式。當CPU處于Sleep狀態時,RAM不會斷電,這樣RAM中的數據就不會丟失,當CPU被喚醒后使用RAM里的數據恢復系統。
當相應的中斷源觸發時,CPU就會被喚醒,電流消耗變大了,需要說明的是,此處僅喚醒CPU,之后才喚醒WINCE系統。當系統由SLEEP到NORMAL切換期間需經過一個RESET過程,這個過程稱為 Power On Reset 。在S3C2440 CPU中,寄存器GSTATUS2專門用以判斷發生Reset原因。Power On Reset后,在之前SLEEP過程中保存下來的RAM中的系統數據是不會丟失的。本文需要設計的喚醒子系統,就是把這些數值恢復到它們休眠前應處的地址。
在Bootloader中實現數據恢復的具體步驟如下:
(1)如果有喚醒源被觸發,內部的復位信號就會動作。這和外部的 nReset引腳觸發非常相似。復位持續時間由內部的 16 bit計數器邏輯決定,通過reset 復位決斷時間可以計算tRST=(65535/XTAL_frequency);
(2)通過檢測GSTATUS2[2],判斷是否是由SLEEP模式喚醒引起的電源開啟;
(3)通過設置 MISCCR[19:17]=000b,釋放 SDRAM 的信號保護;
(4)配置 SDRAM 內存控制器;
(5)等待,直到 SDRAM 自刷新被釋放,結束等待。大部分SDRAM需要等待所有 SDRAM 行的自刷新周期;
(6)GSTATUS[3:4]的信息可用于保存用戶自定義數據,因為在 GSTATUS[3:4]中的值在睡眠模式下被保留;
(7)對 EINT[3:0],檢查 SRCPND 寄存器;對EINT[15:4],查看 EINTPEND 寄存器而不是SRCPND寄存器。
(盡管EINTPEND寄存器的一些位被置位,SRCPND 寄存器不會被置位)。
以上是一個通用的休眠喚醒過程,在實際應用中,可根據不同情況使用不同的喚醒方式。例如,以休眠模式待機,在需要使用儀器時才喚醒系統的情況下,就需要一個諸如按鍵的外部中斷來喚醒系統;而對于僅做一個保存掛起動作的情況,即刻自動喚醒系統則更為便捷。S3C2440就提供了兩種喚醒實現方式:外部中斷實現方式和RTC中斷實現方式。
2 基于外部中斷的休眠喚醒
正如之前提到的,在OALCPUPoweroff里,系統進入休眠前,正確設置外部喚醒中斷,才能夠喚醒CPU。正確設置喚醒中斷源,有3個要點:
(1)把對應的GPIO設置為中斷功能;
(2)明確外部中斷觸發條件,如將某種喚醒使用的中斷源所對應的IO接到一個按鍵上,需要通過按下按鍵實現喚醒,需要明確當按下這個按鍵時,IO接口上的電平會如何變化;
(3)根據按鍵按下時IO電平的變化條件設置EXTINTn寄存器。當按下按鍵時,IO口上的電平會發生從高到低的變化,那么就設置對應的EXTINTn,使得中斷觸發條件為Falling edge triggered即下降沿觸發。
通過如下代碼實現了通過按鍵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的中斷功能,接著設置了中斷的觸發方式:下降沿觸發方式。
當Windows CE操作系統在基于S3C2440的智能巡檢分析診斷儀完全啟動后,按下“掛起”鍵,待屏幕顯示消失后,開始實驗。
實驗一:按下按鍵K1,使系統立即重新啟動,重新進入Windows CE操作系統;
實驗二:按下按鍵K2,使系統立即重新啟動,重新進入Windows CE操作系統;
實驗結果表明:即按即啟,沒有延遲,達到了外部中斷-按鍵喚醒系統的理想效果
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- 基于S3C2440的裂紋實時測量系統的設計
- (1)電源管理-S3C2440芯片電源管理模塊解析
- 如何使用ARM9與WindowsCE進行車輛GPS定位信息采集系統的資料說明 10次下載
- s3c2440用戶資料手冊 27次下載
- 裸機學習s3c2440 29次下載
- s3c2440全套中文手冊 61次下載
- S3C2440A全套中文手冊 15次下載
- s3c2440芯片中文手冊 4次下載
- 基于S3C2440和μC%2fOS的FAT文件系統的設計與實現 5次下載
- 基于ARM處理器S3C2440的VGA顯示技術 234次下載
- s3c2440整套中文手冊 datasheet
- 基于S3C2440檢測系統的設計與應用
- 基于S3C2440的無線物流終端機的設計與應用
- S3C2440應用電路圖
- s3c2440 pdf datasheet
- 在飛凌嵌入式T113-i開發板實現休眠及喚醒操作 1094次閱讀
- ECU系統休眠后通過診斷報文喚醒ECU且喚醒網絡后快發NM報文 4778次閱讀
- 基于S3C2440A嵌入式微處理器實現高速接入網絡的設計 2491次閱讀
- 基于S3C2440A和WinCE 4.2操作系統實現數字尋北儀的應用方案 3162次閱讀
- 基于S3C2410處理器對Windows CE 5.0操作系統實現BSP移植 977次閱讀
- 飛凌嵌入式FL2440開發板簡介 1.1w次閱讀
- 友善之臂Mini2451平臺介紹 4070次閱讀
- 友善之臂Tiny2451規格 2715次閱讀
- 友善之臂Tiny2416簡介 4699次閱讀
- 友善之臂Micro2440簡介 5972次閱讀
- 基于一種可以用按鍵進行調節LCD背光亮度的解決方案 7827次閱讀
- 基于S3c2440的I2C驅動與測試程序追蹤交叉分析 1337次閱讀
- 以嵌入式處理器S3C2440為核心的多任務機器人控制系統設計詳解 1723次閱讀
- 介紹arm9時鐘與定時器 8228次閱讀
- ARM的發展史以及架構解析 1.5w次閱讀
下載排行
本周
- 1TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 2開關電源基礎知識
- 5.73 MB | 6次下載 | 免費
- 3100W短波放大電路圖
- 0.05 MB | 4次下載 | 3 積分
- 4嵌入式linux-聊天程序設計
- 0.60 MB | 3次下載 | 免費
- 5基于FPGA的光纖通信系統的設計與實現
- 0.61 MB | 2次下載 | 免費
- 6基于FPGA的C8051F單片機開發板設計
- 0.70 MB | 2次下載 | 免費
- 751單片機窗簾控制器仿真程序
- 1.93 MB | 2次下載 | 免費
- 8基于51單片機的RGB調色燈程序仿真
- 0.86 MB | 2次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應用800例(新編版)
- 0.00 MB | 33564次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關電源設計實例指南
- 未知 | 21548次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數字電路基礎pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅動電路設計》 溫德爾著
- 0.00 MB | 6653次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537796次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191185次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183278次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論
查看更多