本帖最后由 Simon21ic 于 2015-12-23 13:33 编辑
之前使用PendSV来实现一个可以抢占的事件队列,但是PendSV毕竟只有一个,如果要实现更高优先级的事件队列的话,按要如何处理呢?
最新的VSF构架中,事件队列增加了一个activate接口,通过这个接口,用户可以自己定义事件队列的运行位置,运行位置决定了优先级。activate就是在事件发到事件队列之后,激活事件队列的接口。
比如,PendSV事件队列运行在PendSV,那么PendSV的优先级设置,就决定了这个事件队列的优先级。
activate接口,就应该是激活PendSV。
如果,有事件队列运行在syscall里的话,那么syscall的优先级,就一样,决定了事件队列的优先级。
activate接口,就是调用相应的syscall。
脑洞再开大的话,用一个GPIO控制EINT中断,也可以实现一个优先级的事件队列。activate就只是设置响应的IO口,处理完后释放。
其他各种可控的中断,都可以实现一个事件队列,当然,应用中还是看实际是否需要这么多。
|