enable_irq_wake
2015-06-25 19:18
239 查看
低功耗模式
实现你所有驱动的supend和resume函数.注册一个中断唤醒源,一般是GPIO,RTC中断 .然后调用echo mem > state将系统挂起到内存中,这时候SDRAM在进行self-refresh的动作.基本电源的消耗在这里了
目前2.6.kernel已经为你作好了。你只需要在你每个驱动里按照接口函数suspend(...),和resume()将这个驱动的suspend 和resume完成.因为调用apm命令后,kernel会依次调用你注册驱动里的suspend函数,将各种外设都进入节电模式.最后CPU进入power down 模式 相同的,当用RTC或者GPIO中的一个将cpu从power down 模式唤醒.依次也会调用各个驱动里的resume函数将外设唤醒,进入正常工作状态. 当然这个中断唤醒源你必须自己定义enable_irq_wake(irq);
另外,在2.6里,要对驱动的suspend里面添加相应设备进入节电状态的代码,在resume里添加相应设备从低功耗返回正常工作模式的代码.
键盘驱动初始化时加入enable_irq_wake,当按键中断来时,就可以唤醒贪睡的内核
在编写驱动时有关中断的操作是经常要用到的,内核驱动中已经编写了一些中断配置函数可以方便的供使用,其与gpio操作配置函数配合使用效果更好。
void disable_irq(unsigned int); //关闭相应中断号中断
void enable_irq(unsigned int);//开启相应中断号中断
int set_irq_type(unsigned int irq, unsigned int type);//设置中断为何种触发模式
void disable_irq_wake(unsigned int irq); //禁止中断唤醒功能
void enable_irq_wake(unsigned int irq);//使能中断唤醒功能
外部中断的驱动初始化时应该完成以下几个步骤:
1.把对应的引脚设置成中断功能
2.设置中断类型(IRQ或者FIQ)
3.设置触发方式
4.使能此中断
设置触发方式的函数接口
int set_irq_type(unsigned int irq, unsigned int type);
中断pending寄存器,主要是用来标识哪个中断产生了
实现你所有驱动的supend和resume函数.注册一个中断唤醒源,一般是GPIO,RTC中断 .然后调用echo mem > state将系统挂起到内存中,这时候SDRAM在进行self-refresh的动作.基本电源的消耗在这里了
目前2.6.kernel已经为你作好了。你只需要在你每个驱动里按照接口函数suspend(...),和resume()将这个驱动的suspend 和resume完成.因为调用apm命令后,kernel会依次调用你注册驱动里的suspend函数,将各种外设都进入节电模式.最后CPU进入power down 模式 相同的,当用RTC或者GPIO中的一个将cpu从power down 模式唤醒.依次也会调用各个驱动里的resume函数将外设唤醒,进入正常工作状态. 当然这个中断唤醒源你必须自己定义enable_irq_wake(irq);
另外,在2.6里,要对驱动的suspend里面添加相应设备进入节电状态的代码,在resume里添加相应设备从低功耗返回正常工作模式的代码.
键盘驱动初始化时加入enable_irq_wake,当按键中断来时,就可以唤醒贪睡的内核
在编写驱动时有关中断的操作是经常要用到的,内核驱动中已经编写了一些中断配置函数可以方便的供使用,其与gpio操作配置函数配合使用效果更好。
void disable_irq(unsigned int); //关闭相应中断号中断
void enable_irq(unsigned int);//开启相应中断号中断
int set_irq_type(unsigned int irq, unsigned int type);//设置中断为何种触发模式
void disable_irq_wake(unsigned int irq); //禁止中断唤醒功能
void enable_irq_wake(unsigned int irq);//使能中断唤醒功能
外部中断的驱动初始化时应该完成以下几个步骤:
1.把对应的引脚设置成中断功能
2.设置中断类型(IRQ或者FIQ)
3.设置触发方式
4.使能此中断
设置触发方式的函数接口
int set_irq_type(unsigned int irq, unsigned int type);
中断pending寄存器,主要是用来标识哪个中断产生了
相关文章推荐
- C#读取文件路径
- TangIDE开发技巧之GridView控件布局
- [ShortCut] IE10快捷键
- Weakself的一种写法(转)
- java byte 与 int float转换
- Oracle:杀死死锁进程
- HTML 常用标签
- 简单的一个php验证登陆代码
- 51单片机 学习之旅[3] 中断-定时器
- C++ Primer学习6:const指针 和 指针与const限定符区别
- 数据结构和算法系列 - 跳跃表 SkipList
- CreateCompatibleDC工作原理
- 典型场景
- iOS网络篇---使用NSConnection 实现post和get发送和接收(同步和异步模式)
- java对象与json对象间的相互转换
- 对其它组的评价
- MySQL详解(5)-----------函数超全总结
- 部队->运维->分享->讲师历程
- MapReduce中作业调度器
- Android Material Design 5.0 PickerDialog