亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于S3C2440和Windows CE5.0的嵌入式設(shè)備休眠喚醒技術(shù)研究

        2010-08-14 01:11:52王延慧江志農(nóng)
        關(guān)鍵詞:嵌入式設(shè)置系統(tǒng)

        王延慧,江志農(nóng)

        (北京化工大學(xué) 診斷與自愈工程研究中心,北京 100029)

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

        1休眠喚醒過程分析

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

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

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

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

        圖1 SLEEP模式

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

        在Bootloader中實(shí)現(xiàn)數(shù)據(jù)恢復(fù)的具體步驟如下:

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

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

        (3)通過設(shè)置 MISCCR[19:17]=000b,釋放 SDRAM 的信號(hào)保護(hù);

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

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

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

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

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

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

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

        (1)把對(duì)應(yīng)的GPIO設(shè)置為中斷功能;

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

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

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

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

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

        實(shí)驗(yàn)一:按下按鍵 K1,使系統(tǒng)立即重新啟動(dòng),重新進(jìn)入Windows CE操作系統(tǒng);

        實(shí)驗(yàn)二:按下按鍵 K2,使系統(tǒng)立即重新啟動(dòng),重新進(jìn)入Windows CE操作系統(tǒng);

        實(shí)驗(yàn)結(jié)果表明:即按即啟,沒有延遲,達(dá)到了外部中斷-按鍵喚醒系統(tǒng)的理想效果。

        圖2 S3C2440內(nèi)部RTC模塊結(jié)構(gòu)圖

        3基于RTC中斷的休眠喚醒

        S3C2440內(nèi)部RTC模塊結(jié)構(gòu)框圖如圖2所示。RTC模塊的有3種功能:產(chǎn)生時(shí)鐘滴答、實(shí)時(shí)計(jì)時(shí)和作為系統(tǒng)的觸發(fā)喚醒器[4]。RTC模塊可以在處理器的掉電模式或普通模式在設(shè)定時(shí)間(由BCD數(shù)據(jù)給出)和當(dāng)前時(shí)間相同時(shí)發(fā)生報(bào)警。在普通模式下,ALM INT(報(bào)警中斷)處于激活狀態(tài)。在掉電模式下,PMWKUP(電源管理喚醒信號(hào))與ALM INT一起處于報(bào)警狀態(tài)[5]。

        相關(guān)的寄存器有RTCCON、RTCALM和ALMSEC等,設(shè)置代碼如下:

        此段代碼,首先設(shè)置RTC控制的可用,然后設(shè)置RTC報(bào)警中斷中,秒中斷可用,因?yàn)楸疚囊詥拘褧r(shí)間10 s為例,所以僅用到了秒級(jí)中斷,最后設(shè)定喚醒時(shí)間10 s。

        當(dāng)Windows CE操作系統(tǒng)在基于S3C2440的智能巡檢分析診斷儀完全啟動(dòng)后,按下“掛起”鍵,在“掛起”動(dòng)作的實(shí)現(xiàn)代碼中設(shè)置串口打印語句,顯示“Start”標(biāo)志,在系統(tǒng)被喚醒時(shí)設(shè)置串口打印語句,顯示“End”標(biāo)志,通過DNW軟件,觀察串口打印信息,記錄 “Start”和“End”之間的用時(shí),即為喚醒時(shí)間,10次實(shí)驗(yàn)結(jié)果可知平均用時(shí)10.04 s,與預(yù)計(jì)用時(shí)10.0 s的相對(duì)誤差為0.4%,在工程應(yīng)用上,基本達(dá)到操作要求。

        研究過程后期,在確認(rèn)相應(yīng)設(shè)置正確的前提下,系統(tǒng)仍無法正常喚醒,在重新分析整個(gè)流程設(shè)計(jì)和代碼實(shí)現(xiàn)后,發(fā)現(xiàn)在 S3C2440的官方 BSP(板級(jí)支持包)中存在一個(gè)BUG:系統(tǒng)休眠時(shí)保存數(shù)據(jù)的虛擬地址設(shè)置錯(cuò)誤,SLEEPDATA_BASE_VIRTUAL設(shè)置為 0xAC028000,而此處和Bootloader中的SLEEPDATA_BASE_PHYSICAL都設(shè)定為0x30028000。根據(jù)地址映射表里面的設(shè)置是:DCD 0x80000000,0x30000000,64;32 MB DRAM BANK 6,因此虛擬地址是0xA0028000。將虛擬地址修改后,即可正常喚醒。

        本文通過深入分析休眠喚醒過程,在基于S3C2440和WindowsCE5.0的平臺(tái)上分別通過外部中斷喚醒和RTC中斷喚醒兩種方法實(shí)現(xiàn)了休眠喚醒。文中所述的原理和方法不僅適用于上述指定的硬件平臺(tái),還適用于其他使用Windows CE嵌入式操作系統(tǒng)的硬件平臺(tái)。應(yīng)用表明,這兩種方法實(shí)現(xiàn)了不同情況下的喚醒,達(dá)到了理想的效果,該儀器工作穩(wěn)定,性能良好,已進(jìn)入小規(guī)模量產(chǎn)階段。

        [1]張煒,韓進(jìn).低功耗嵌入式系統(tǒng)的分析與應(yīng)用[J].計(jì)算機(jī)系 統(tǒng) 應(yīng) 用 ,2009(11):109:113.

        [2]KATZ D,GENTILE R.低功耗嵌入式實(shí)現(xiàn)的方方面面[J]. 電 子產(chǎn)品世 界 ,2009(1):63-66.

        [3]Samsung Electronics,Samsung 2440A datasheet,2004.

        [4]田澤.嵌入式開發(fā)與應(yīng)用[M].北京:北京航空航天大學(xué)出 版 社,2004:22-24.

        [5]田澤,曹慶年,劉天時(shí),等.嵌入式處理器 S3C2440 Windows CE的RTC模塊驅(qū)動(dòng)設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用與軟件,2007(3):31-33.

        猜你喜歡
        嵌入式設(shè)置系統(tǒng)
        Smartflower POP 一體式光伏系統(tǒng)
        中隊(duì)崗位該如何設(shè)置
        WJ-700無人機(jī)系統(tǒng)
        ZC系列無人機(jī)遙感系統(tǒng)
        搭建基于Qt的嵌入式開發(fā)平臺(tái)
        連通與提升系統(tǒng)的最后一塊拼圖 Audiolab 傲立 M-DAC mini
        嵌入式軟PLC在電鍍生產(chǎn)流程控制系統(tǒng)中的應(yīng)用
        本刊欄目設(shè)置說明
        中俄臨床醫(yī)學(xué)專業(yè)課程設(shè)置的比較與思考
        Altera加入嵌入式視覺聯(lián)盟
        日韩在线不卡一区在线观看 | 内射人妻视频国内| 亚洲精品久久久无码av片软件| 色吊丝中文字幕| 精品久久人人妻人人做精品| 91产精品无码无套在线| 人妻少妇看A偷人无码电影| 色婷婷亚洲一区二区三区在线| 人妻丝袜中文无码av影音先锋专区| 午夜精品久久久久成人| 亚洲精品123区在线观看| 最全精品自拍视频在线| 日韩综合无码一区二区| av香港经典三级级 在线| 亚洲嫩草影院久久精品| 国产精品久久夜伦鲁鲁| 日本二一三区免费在线| 国产亚洲精品久久久ai换| 国产精品爆乳在线播放| 日本办公室三级在线看| 丰满少妇高潮惨叫久久久| 国产成人亚洲精品无码h在线| 色噜噜狠狠色综合欧洲| 今井夏帆在线中文字幕| 又粗又大又硬毛片免费看| 欧美精品一区二区性色a+v| 国产三级在线看完整版| 日韩一区av二区三区| 2019最新中文字幕在线观看| 久久精品人成免费| 人妖熟女少妇人妖少妇| av天堂网手机在线观看| 日产精品久久久一区二区| 精品久久久久久国产| 人妻少妇无乱码中文字幕| 一个人看的视频在线观看| 男受被做哭激烈娇喘gv视频| 亚洲性无码av在线| 白白色发布的在线视频| 男女裸交无遮挡啪啪激情试看| 三级国产女主播在线观看|