潮声隔雨深 · 2020年03月15日

cm3清掉wic pending中断的方式

系统进入deepsleep后,整个cm3会处于断电复位状态,外部中断通过wic唤醒cm3。由于wic会将会中断信息一直pending,导致cm3醒来后,enable中断,马上进入wakeup中断服务程序,并且无法清除中断;想请教一般情况下,wic输出给cm3的中断用什么方式清除?

1 个回答 得票排序 · 时间排序
一知半解 · 2020年03月15日

WIC有一个叫做WICCLEAR的input信号线,驱动这个线的时候会清楚WIC输出给CM3的中断。

Arm设计CM3时,与WIC配合的deepsleep是指M3进入retention模式保存CPU所有状态,所以当CPU退出deepsleep模式时,CM3会assert WICCLEAR ouput清除WIC pending的中断。如果你的系统deepsleep采用CM3断电的模式,那么CM3的WICCLEAR output不会被assert,造成你说的情况。一个简单的办法是系统里添加一个控制寄存器,在CM3上电复位的程序里用软件assert WIC的WICCLEAR input。

你的回答