色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 便攜嵌入式設備電源管理解決方案

          便攜嵌入式設備電源管理解決方案

          作者: 時間:2012-03-16 來源:網(wǎng)絡 收藏

          SA - 1110進入Sleep模式的代碼片斷如下:

          extern void cpu_sa1110_resume ( voi
          d) ; /3 SA - 1110返回函數(shù)3 /
          extern int cpu_sa1110_do_suspend ( void) ; /3 SA - 1110睡眠函數(shù)3 /
          int sa1110_suspend ( void)
          {
          . . .
          cli ( ) ; /3 關閉中斷3 /
          sys_ctx. osmr0 = OSMR0; /3 保存重要的寄存器3 /
          . . .
          sys_ctx. p sdr = PSDR;
          . . .
          PSPR = virt_to_phys ( cpu_sa1100_resume) ; /3 設置返回函數(shù)地址3 /
          cpu_sa1110_do_suspend ( ) ; /3 進入睡眠3 //3 退出睡眠3 /
          GPDR = sys_ctx. gpdr; /3 恢復寄存器3 /
          GRER = sys_ctx. grer;
          GFER = sys_ctx. gfer;
          GAFR = sys_ctx. gafr;
          . . .
          sti ( ) ; /3 啟動中斷3 /
          return 0;
          }

          (2)實現(xiàn)各個外設的代碼

          利用Linux內核提供子系統(tǒng),可以將iPAQ中的每個需要實現(xiàn)的外部納入統(tǒng)一的管理。這需要在各個的驅動程序中使用電源管理子系統(tǒng)的接口函數(shù)(如2. 1所描述)和實際的硬件操作代碼,這里將以顯示為例:

            /3 SA - 1110 frame buffer電源管理請求處理函數(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 進入D0 模式,開啟LCD控制器3 /
          } else {

          set_ctrlr_state ( fbi, C_D ISABLE) ; /3 進入D1 - D3模式關閉LCD 控制器. 3 /
          } }
          return 0;
          }
          /3 SA - 1110 frAME buffer驅動初始化函數(shù)3 /
          int __init sa1110fb_init ( void)
          {
          struct sa1110fb_info 3 fbi;
          int ret;
          . . .
          /3 在電源管理子系統(tǒng)中注冊3 /
          fbi - > pm = pm _ register ( PM _SYS_DEV, PM _SYS_VGA,
          sa1110fb_pm_callback) ;
          if ( fbi - > pm)
          fbi - > pm - > data = fbi; /3 設置私有數(shù)據(jù)3 / . . .
          return ret;
          }

          3)實現(xiàn)電源管理設備

          這個設備實際是用于接受用戶空間程序的控制所用,所以只需要簡單的實現(xiàn)“ioctl”調用就可以了。

            /3 ioctl調用方法3 /
          static int do_ioctl ( struct inode 3 inode, struct file 3 filp, u_int
          cmd, u_long arg)
          { . . .
          switch ( cmd) {
          case APM_ IOC_STANDBY: {
          pm_send_all ( PM_SUSPEND, ( void 3 ) 2) ; /3 外設掛起3 /

          ; } break;
          case APM_ IOC_RESUME: {
          pm_send_all ( PM_RESUME, ( void 3 ) 0) ; /3 外設喚醒3 /
          } break;
          case APM_ IOC_SUSPEND: {

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


          評論


          相關推薦

          技術專區(qū)

          關閉