在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<abbr id="27omo"></abbr>

<menu id="27omo"><dl id="27omo"></dl></menu>
    • <label id="27omo"><tt id="27omo"></tt></label>

      新聞中心

      EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于Linux的便攜嵌入式設(shè)備電源管理解決方案

      基于Linux的便攜嵌入式設(shè)備電源管理解決方案

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


      通過(guò)Linux機(jī)制及上層應(yīng)用實(shí)現(xiàn)對(duì)iPAQ和耗電量調(diào)節(jié)

      確定了要調(diào)控的對(duì)象和方法后,需要通過(guò)L inux的機(jī)制和上層應(yīng)用軟件來(lái)實(shí)現(xiàn)對(duì)這些硬件設(shè)備的控制。這包括編寫(xiě)CPU電源管理代碼、外設(shè)驅(qū)動(dòng)程序及電源管理代碼、電源管理設(shè)備實(shí)現(xiàn)代碼和用戶空間控制應(yīng)用代碼。

      (1)實(shí)現(xiàn)SA - 1110進(jìn)入Sleep電源模式的代碼

      SA -1110有Normal, Idle, Sleep 等幾種電源模式,其中在Sleep模式下, SA -1110具有最小的電力消耗。由于SA -1110 進(jìn)入Sleep 模式后,到外設(shè)和SDRAM的時(shí)鐘將停止,多數(shù)的寄存器信息將丟失。因此需要事先將重要的寄存器值保存到內(nèi)存中,并將SDRAM設(shè)置為自刷新模式,以保持 SDRAM中的數(shù)據(jù)。當(dāng)SA -1110 收到硬件中斷等喚醒源退出Sleep模式后不會(huì)接著執(zhí)行先前未執(zhí)行的指令,而是回到初始狀態(tài)去執(zhí)行啟動(dòng)代碼。因此為了讓CPU在喚醒后能夠持續(xù)的工作,需要將返回代碼的地址保存到PowerManager Scratch Pad Register ( PSPR)寄存器中,使得啟動(dòng)代碼能讓CPU重新跳到返回代碼的地址處,執(zhí)行返回代碼從而回到睡眠前的工作。

      SA - 1110進(jìn)入Sleep模式的代碼片斷如下:
      extern void cpu_sa1110_resume ( void) ; /3 SA - 1110返回函
      數(shù)3 /
      extern int cpu_sa1110_do_suspend ( void) ; /3 SA - 1110睡眠
      函數(shù)3 /
      int sa1110_suspend ( void)
      {
      . . .
      cli ( ) ; /3 關(guān)閉中斷3 /
      sys_ctx. osmr0 = OSMR0; /3 保存重要的寄存器3 /
      . . .
      sys_ctx. p sdr = PSDR;
      . . .
      PSPR = virt_to_phys ( cpu_sa1100_resume) ; /3 設(shè)置返回函
      數(shù)地址3 /
      cpu_sa1110_do_suspend ( ) ; /3 進(jìn)入睡眠3 /
      /3 退出睡眠3 /
      GPDR = sys_ctx. gpdr; /3 恢復(fù)寄存器3 /
      GRER = sys_ctx. grer;
      GFER = sys_ctx. gfer;
      GAFR = sys_ctx. gafr;
      . . .
      sti ( ) ; /3 啟動(dòng)中斷3 /
      return 0;
      }

      (2)實(shí)現(xiàn)各個(gè)外設(shè)的電源管理代碼

      利用Linux內(nèi)核提供電源管理子系統(tǒng),可以將iPAQ中的每個(gè)需要實(shí)現(xiàn)電源管理的外部設(shè)備納入統(tǒng)一的管理。這需要在各個(gè)設(shè)備的驅(qū)動(dòng)程序中使用電源管理子系統(tǒng)的接口函數(shù)(如2. 1所描述)和實(shí)際的硬件操作代碼,這里將以顯示設(shè)備為例:
      /3 SA - 1110 frame buffer電源管理請(qǐng)求處理函數(shù)3 /
      static int sa1110fb_pm_callback ( struct pm_dev 3 pm_dev, pm
      _request_t req, void 3 data)
      {
      struct sa1110fb_info 3 fbi = pm_dev - > data;
      if ( req = = PM_SUSPEND | | req = = PM_RESUME) {
      int state = ( int) data;
      if ( state = = 0) {
      set_ctrlr_ state ( fbi, C_ENABLE) ; /3 進(jìn)入D0 模式,開(kāi)啟
      LCD控制器3 /
      } else {
      set_ctrlr_state ( fbi, C_D ISABLE) ; /3 進(jìn)入D1 - D3模式關(guān)
      閉LCD 控制器. 3 /
      } }
      return 0;
      }
      /3 SA - 1110 frame buffer驅(qū)動(dòng)初始化函數(shù)3 /
      int __init sa1110fb_init ( void)
      {
      struct sa1110fb_info 3 fbi;
      int ret;
      . . .
      /3 在電源管理子系統(tǒng)中注冊(cè)3 /
      fbi - > pm = pm _ register ( PM _SYS_DEV, PM _SYS_VGA,
      sa1110fb_pm_callback) ;
      if ( fbi - > pm)
      fbi - > pm - > data = fbi; /3 設(shè)置私有數(shù)據(jù)3 / . . .
      return ret;
      }



      評(píng)論


      相關(guān)推薦

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

      關(guān)閉
      ×

      “芯”朋友见面大会
      珠海|11.14|泰克“芯”朋友见面大会珠海站|泰克带您从测试角度看半导体的整条产业链,快来报名抢位吧>>