baron · 3月31日 · 四川

有关中断唤醒源的思考

快速连接

👉👉👉【精选】ARMv8/ARMv9架构入门到精通-目录 👈👈👈


 title=

各位大佬好,如下是关于中断唤醒系统的一个流程上的总结,由于这方面知识过于复杂,又牵扯到SOC厂商的设计,而且我也没有做过这方面工作,所以一半来自文档一半靠猜测,都不一定对,反正自己给自己解释得通了。希望大佬们不小心刷到了本文,如果觉得是不合理的,请给个赞(然后,赞同本文思想的人数 = 阅读量 - 点赞数),如果看出明显的错误,也帮忙指出下,不胜感激,多谢!

当一个蓝牙中断(如NS group 1中断)做为唤醒源产生中断时,此时的流程应当是这样的:

  • Redistribute发生一个Wake Request给Power controller,Power controller给PE上电,即reset
  • 此时PE为最高异常级别,即EL3,PC指针指向RVBAR_EL3中的地址,也就是之前写入的bl31_warm_entrypoint
  • 然后PE在ATF中继续执行,在ATF(EL3)中, PE不会taken该蓝牙中断,因为SCR_EL3.IRQ=0,当前有处于EL3级别,所以中断不会被taken,中断保持remains pending
  • 当ATF相关逻辑执行完毕后,退出ATF,返回到REE侧时,此时异常级别不再是EL3,变成了EL1,该中断则会变为pending状态,继而再根据中断优先级排序置为Active,然后检查PSTATE,从而中断被taken
  • 此时跳转到REE侧的中断向量表,然后跳转到蓝牙中断注册的handler函数

在这里插入图片描述
在这里插入图片描述


关注"Arm精选"公众号,备注进ARM交流讨论区。
图片1.png

推荐阅读
关注数
9438
内容数
191
以易懂、渐进、有序的方式,深入探讨ARMv8/ARMv9架构的核心概念。我们将从基础知识开始,逐步深入,覆盖最新的架构,不再纠缠于过时技术。本系列内容包含但不限于ARM基础、SOC芯片基础、Trustzone、gic、异常和中断、AMBA、Cache、MMU等内容,并将持续更新。
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息