<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于S3C2440和Windows CE5.0的嵌入式設(shè)備休眠喚醒技術(shù)研究

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

          作者: 時間:2010-10-22 來源:網(wǎng)絡(luò) 收藏

          2 基于外部中斷的
           正如之前提到的,在OALCPUPoweroff里,系統(tǒng)進入前,正確設(shè)置外部中斷,才能夠CPU。正確設(shè)置喚醒中斷源,有3個要點:
           (1)把對應(yīng)的GPIO設(shè)置為中斷功能;
           (2)明確外部中斷觸發(fā)條件,如將某種喚醒使用的中斷源所對應(yīng)的IO接到一個按鍵上,需要通過按下按鍵實現(xiàn)喚醒,需要明確當按下這個按鍵時,IO接口上的電平會如何變化;
            (3)根據(jù)按鍵按下時IO電平的變化條件設(shè)置EXTINTn寄存器。當按下按鍵時,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ā)方式。
           當 CE操作系統(tǒng)在基于的智能巡檢分析診斷儀完全啟動后,按下“掛起”鍵,待屏幕顯示消失后,開始實驗。
           實驗一:按下按鍵K1,使系統(tǒng)立即重新啟動,重新進入 CE操作系統(tǒng);
           實驗二:按下按鍵K2,使系統(tǒng)立即重新啟動,重新進入 CE操作系統(tǒng);
          實驗結(jié)果表明:即按即啟,沒有延遲,達到了外部中斷-按鍵喚醒系統(tǒng)的理想效果。
          3 基于RTC中斷的喚醒
           內(nèi)部RTC模塊結(jié)構(gòu)框圖如圖2所示。RTC模塊的有3種功能:產(chǎn)生時鐘滴答、實時計時和作為系統(tǒng)的觸發(fā)喚醒器[4]。RTC模塊可以在處理器的掉電模式或普通模式在設(shè)定時間(由BCD數(shù)據(jù)給出)和當前時間相同時發(fā)生報警。在普通模式下,ALM INT(報警中斷)處于激活狀態(tài)。在掉電模式下, PMWKUP (電源管理喚醒信號)與ALM INT一起處于報警狀態(tài)[5]。

          本文引用地址:http://www.ex-cimer.com/article/151411.htm

          相關(guān)的寄存器有RTCCON、RTCALM和ALMSEC等,設(shè)置代碼如下:
          ldr r0,=vRTCBASE ;;;RTC alarm
          ldr r1,=0x01
          str r1,[r0,#oRTCCON]
          ldr r1,=0x41
          str r1,[r0,#oRTCALM]
          ldr r1,=0x10 ;;10s喚醒
          str r1,[r0,#oALMSEC]
           此段代碼,首先設(shè)置RTC控制的可用,然后設(shè)置RTC報警中斷中,秒中斷可用,因為本文以喚醒時間10 s為例,所以僅用到了秒級中斷,最后設(shè)定喚醒時間10 s。
          當Windows CE操作系統(tǒng)在基于的智能巡檢分析診斷儀完全啟動后,按下“掛起”鍵,在“掛起”動作的實現(xiàn)代碼中設(shè)置串口打印語句,顯示“Start”標志,在系統(tǒng)被喚醒時設(shè)置串口打印語句,顯示“End”標志,通過DNW軟件,觀察串口打印信息,記錄“Start”和“End”之間的用時,即為喚醒時間,10次實驗結(jié)果可知平均用時10.04 s,與預(yù)計用時10.0 s的相對誤差為0.4%,在工程應(yīng)用上,基本達到操作要求。
          過程后期,在確認相應(yīng)設(shè)置正確的前提下,系統(tǒng)仍無法正常喚醒,在重新分析整個流程設(shè)計和代碼實現(xiàn)后,發(fā)現(xiàn)在S3C2440的官方BSP(板級支持包)中存在一個BUG:系統(tǒng)休眠時保存數(shù)據(jù)的虛擬地址設(shè)置錯誤,SLEEPDATA_BASE_VIRTUAL設(shè)置為0xAC028000,而此處和Bootloader中的SLEEPDATA_BASE_PHYSICAL 都設(shè)定為0x30028000。根據(jù)地址映射表里面的設(shè)置是:DCD 0x80000000, 0x30000000, 64; 32 MB DRAM BANK 6,因此虛擬地址是0xA0028000。將虛擬地址修改后,即可正常喚醒。
          本文通過深入分析休眠喚醒過程,在基于S3C2440和Windows的平臺上分別通過外部中斷喚醒和RTC中斷喚醒兩種方法實現(xiàn)了休眠喚醒。文中所述的原理和方法不僅適用于上述指定的硬件平臺,還適用于其他使用Windows CE操作系統(tǒng)的硬件平臺。應(yīng)用表明,這兩種方法實現(xiàn)了不同情況下的喚醒,達到了理想的效果,該儀器工作穩(wěn)定,性能良好,已進入小規(guī)模量產(chǎn)階段。
          參考文獻
          [1] 張煒,韓進.低功耗系統(tǒng)的分析與應(yīng)用[J].計算機系統(tǒng)應(yīng)用,2009(11):109:113.
          [2] KATZ D,GENTILE R. 低功耗實現(xiàn)的方方面面[J]. 電子產(chǎn)品世界,2009(1):63-66.
          [3] Samsung Electronics,Samsung 2440A datasheet,2004.
          [4] 田澤.嵌入式開發(fā)與應(yīng)用[M]. 北京:北京航空航天大學出版社,2004:22-24.
          [5] 田澤,曹慶年,劉天時,等. 嵌入式處理器S3C2440 Windows CE的RTC模塊驅(qū)動設(shè)計與實現(xiàn)[J]. 計算機應(yīng)用與軟件,2007(3):31-33.

          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

          上一頁 1 2 下一頁

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();