armv8平台下sleep函数的实现

sleep函数是比较常用的api,那么在arm平台下它是怎么实现的呢?

要实现sleep函数必须要有三个方面的支持,中断系统,timer和wfi指令。这是无需多言的,sleep需要有时间参数,能够准确定位时间的就只有timer了,要让timer工作中断又是必不可少的。那么wfi是什么呢?其实wfi是arm的一条指令,全称是wait for interrupt。这个指令的作用是一旦执行就进入睡眠低功耗模式,等待中断的到来,一旦中断到来就会,在处理完中断后就会从中断中醒来。

那么sleep函数的逻辑就很明显了。

1, 传入时长参数

2 将时长参数加上现在的时刻得到醒来的时刻

3 判断现在是否到达醒来的时间点,如果到达就退出

4 将时间点转换为tick,并将此值设定比较定时寄存器

5 打开中断

6 进入wfi

7 中断到来并处理完毕后转入3

猜你喜欢

转载自blog.csdn.net/wujianyongw4/article/details/84666396