dong_abc 发表于 2013-10-5 20:53
再出道题,来试试。
John Lee 17:38:32
系统中有2个事件:E1、E2,和一个共享设备。
ucos中ISR平面优先级都比任务平面高,先不用管,通过信号量和对应任务同步和通讯即可。
E1的死线为10ms,比E2的最短处理时间都要长,所以E1的优先级必须比E2高。E2最短处理时间
20ms加上E1的最短处理时间5ms,依然不会超过50ms的限制。
使用互斥体管理共享设备,独占共享设备的时间比较短,只需要0.5ms,当E2占用共享设备的时候,
如果E1的ISR发送信号量 激活任务E1,当E1申请共享设备的时候,引发优先级继承 优先处理E2,
也就是说E1申请共享设备的等待时间 最多0.5ms,应该不会出现问题。
裸机环境,假设所用调度器没有优先级概念,类似于时间触发模式的调度器,系统时标2ms
并只有E1 E2两个任务,它们通过状态机切碎。如果E1 E2切开的程序段都是等大的话,那么最恶劣的情况下
E1 E2同时被触发,那么E1将不能在10ms内完成。
设备共享倒是好说,只要用一个标志位来管理就好了,任务之间优先级是一样的,没有所谓的优先级反转的问题。
如果能将访问设备的任务分离出来称为独立任务就更好了,这样任务之间的耦合度又可以进一步降低。 |