免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2082 | 回复: 8
打印 上一主题 下一主题

电源管理的一点疑问? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-08-20 12:27 |只看该作者 |倒序浏览
在系统进入suspend的时候,在suspend_enter函数中会调用arch_suspend_disable_irqs函数,该函数禁掉当前cpu的中断,
我的疑问是,如果把当前cpu中断禁掉,系统如何唤醒呢?它应该把具有唤醒功能的中断打开才对啊?

论坛徽章:
0
2 [报告]
发表于 2013-08-20 12:43 |只看该作者
可能平台有区别
我就说说我用的s3c2440
进入睡眠的2、3步
2.  屏蔽 INTMSK 寄存器中所有中断。
3.  合理配置包括RTC 闹钟在内的唤醒源。(不需要屏蔽唤醒源在EINTMASK 中的对应位,目的是使得SRCPND
或 EINTPEND 的对应位能置位。然而引发了唤醒源并且屏蔽了 EINTMASK 的对应位,唤醒也将发生但
SRCPND 或EINTPEND的对应位将不会被置位。 )
看清楚了吧,清除的是INTMSK的。不需要屏蔽唤醒源在EINTMASK 中的对应位,就算屏蔽唤醒也将发生但
SRCPND 或EINTPEND的对应位将不会被置位。

论坛徽章:
0
3 [报告]
发表于 2013-08-20 13:21 |只看该作者
非常感谢,能把该平台的arch_suspend_disable_irqs函数贴一下吗?

论坛徽章:
0
4 [报告]
发表于 2013-08-20 14:44 |只看该作者
你说的意思是屏蔽了INTMSK也会发生唤醒,但是屏蔽了唤醒源对应的EINTMSK,就不会产生唤醒,对吧

论坛徽章:
0
5 [报告]
发表于 2013-08-21 08:59 |只看该作者
不是,屏蔽了 EINTMASK 的对应位,唤醒也将发生但SRCPND 或EINTPEND的对应位将不会被置位。
看datasheet
我的微博:
http://blog.csdn.net/xxxxxlllllxl/article/details/9452763
mini2440平台的睡眠

论坛徽章:
0
6 [报告]
发表于 2013-08-21 10:01 |只看该作者
信号进入的顺序应该是EINT->EINTPEND->EINTMASK->SRCPND->INTMASK->INTPND->IRQ
这个路径中有两个开关来控制整个路径通断,EINTMASK和INTMASK
系统睡眠时,外部信号来的话能走到EINTMASK之后就可以发生唤醒,但是要走到INTMASK之后才能发生中断。
我的理解对吗?

论坛徽章:
0
7 [报告]
发表于 2013-08-21 11:52 |只看该作者
不对。
首先s3c2440没有叫INTMASK,只有叫INTMSK的
它们对应的中断源不一样,
不过INTMSK也可以控制外部中断。你仔细看看寄存器
你没理解这句话吗?屏蔽了 EINTMASK 的对应位,唤醒也将发生但SRCPND 或EINTPEND的对应位将不会被置位。
标志置位和唤醒是两件事,正常的中断受EINTMASK控制,唤醒不受它控制
如果是正常的应用外部中断那肯定不能屏蔽。
如果有条件,你就改改代码,运行看看结果。我的微博说了睡眠过程,应该可以找到在那改。当然我的是linux-3.2.36
主要版本

论坛徽章:
0
8 [报告]
发表于 2013-09-04 17:26 |只看该作者
每种系统都会有设置唤醒事件的register,可以参考一下芯片说明,被注册的事件一旦触发,系统自动回到运行状态。

论坛徽章:
0
9 [报告]
发表于 2013-10-12 09:40 |只看该作者
看相关平台的资料吧,这部分一般比较详细
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP