血流檢測儀的動態(tài)電源管理模塊設計
uClinux啟動時調用module_init(Power_44b0_init)函數,進而power_44b0_init被調用,進行相關的初始化:
本文引用地址:http://www.ex-cimer.com/article/86126.htm◆ power0_44b0_reg_init()初始化硬件寄存器;
◆ power_44b0_device_register()注冊power_44b0_fops以及中斷處理函數power_key_44b0_interrupt(),并且初始化定時器power_down_timer;
◆ 用戶程序通過power_44b0_open()函數打開/dev/power設備,通過power_44b0_release()函數釋放/dev/power設備,通過power_44b0_ioctl()函數實現對設備的各種操作;
◆ 關機進入stop模式,通過中斷處理函數power_key_44b0_interrupt()處理關機鍵對應的中斷,按下關機鍵后用power_down_timer計時,當3s后,power_down_timer對應的動作power_down_timer_call()發(fā)生,從而進入stop模式。
1.2.3 接口設計與接口函數實現
?。?)數據結構說明
電源和設備狀態(tài)由power_status_t的結果表示。
?。?)file_operations的值
電源管理模塊驅動的file_operations具體值為:
(3)power_44b0_ioctl()函數設計
函數原形:static int power_44b0_ioctl (struct inode *inode, struct file *filp,unsigned int cmd, unsigned int arg)。
功能說明:設備ioctl的操作函數。
參數說明:inode,文件指針,執(zhí)行操作類型,根據操作類型指定不同參數。
返回值:0表示成功,否則返回ENOTTY。
判斷cmd的值,根據cmd的不同值進行不同的操作,電源設備的ioctl主要實現以下14種操作:
?。?)power_key_44b0_interrupt
函數原形:static void power_key_44b0_interrupt(int irq, void *dev_id, struct pt_regs *regs) 。
功能說明:響應關機鍵,進入stop模式。
參數說明:中斷號,設備id,寄存器結構。
下面介紹函數的算法描述。
在正常狀態(tài)下:
2 總結
儀器配置2200mAh的鎳氫電池,經過測試,電源管理模塊使整個系統(tǒng)的功耗降低了60%。系統(tǒng)在數據采集狀態(tài)下,由電池的輸出電流為220mA左右;如果處于IDLE狀態(tài),則電流總消耗為80mA;在STOP狀態(tài)(關閉ARM和所有設備,維持一個32768 Hz的時鐘),電流可降到10mA。實驗表明,利用動態(tài)電源管理,可對便攜式醫(yī)療儀器實現有效電源管理。
參考文獻
1 馬忠梅. ARM嵌入式處理器結構與應用基礎. 北京:北京航空航天大學出版社,2002
2 許海燕. 嵌入式系統(tǒng)技術與應用. 北京:機械工業(yè)出版社,2002
評論