新闻中心

EEPW首页>嵌入式系统>设计应用> 基于Linux的便携嵌入式设备电源管理解决方案

基于Linux的便携嵌入式设备电源管理解决方案

作者: 时间:2012-04-05 来源:网络 收藏


(3)实现设备

这个设备实际是用于接受用户空间程序的控制所用,所以只需要简单的实现“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: {
pm_send_all ( PM_SUSPEND, ( void 3 ) 2) ; /3 外设挂起3 /
sa1110_suspend ( ) ; /3 CPU进入休眠模式3 /
/3 CPU醒来,继续执行3 /
pm_send_all ( PM_RESUME, ( void 3 ) 0) ; /3 唤醒外设3 /
} break;
default:
return - EINVAL;
}
return 0;
}

最后,使用命令“mknod /dev/ apm c 254 0”,可以在文件系统中建立起该设备的访问节点。该节点名为/dev/ apm,是一个字符设备( c) ,主设备号为254,此设备号为0。

(4)编写用户空间程序

用户可以在适当的时候选择是否改变CPU的时钟频率和显示刷新率,是否关闭某些外部设备,是否使整个系统进入睡眠模式等等。这只需要使用“ioctl”对设备( /dev/ apm)发送命令就可以了。
int fd;
. . .
fd = open ( " /dev/ apm" , O_RDONLY) ; /3 打开电源管理设
备3 /
ioctl ( fd, APM_ IOC_SUSPEND,NULL) ; /3 发送电源管理命
令3 /
close ( fd) ; /3 关闭电源管理设备3 /

实现iPAQ电源管理前后耗电量比较

实现电源管理以前:开启LCD, CPU 处于空闲状态,大多数其他芯片关闭,功耗为470mW。实现电源管理以后:在电源管理前的基础上开启SDRAM 的自动节能模式,功耗下降到280mW。然后降低LCD刷新率到30Hz, 功耗下降到238mW。再把CPU频率降低到57. 3MHz,功耗下降到172mW。最后关闭LCD,功耗下降到98mW。可见,通过本文方案的调节和优化, iPAQ的耗电量确实可以得到有效地改善,最大优化后的耗电量仅为优化前的五分之一,从而大大提高了iPAQ的电池使用时间。

结 论

在嵌入式设备中,电源管理是一个硬件和软件相结合的系统工程。本文介绍了已有的节能方法和Linux电源管理的机制, 并且以iPAQ 为例通过Linux的电源管理机制和上层应用软件,设计和实现了一个较完整和有效的电源管理方案,为众多基于的嵌入式设备的电源管理提供了一个有用的参考。


上一页 1 2 3 4 下一页

评论


相关推荐

技术专区

关闭