时间触发式调度器使用心得
2018.1229-2019.0101 时间触发OS 心得
时间触发式调度器的前提是
1.任务的运行时间必须小于调度器时标间隔
比如调试时建立了1ms的时标,在单独2ms点亮数码管时无闪烁,此时的闪烁频率为1000/(2*8),但当加入读取DS1302时间后
闪烁明显,切闪烁频率与读取DS1302的频率相同,由此判断是读取DS1302的任务运行时间太长,导致刷新数码管的任务不能及时运行导致。
软件仿真读取DS1302的任务运行时间为7ms,远远大于1ms.
对于如上的大于时标间隔的任务,《时间触发嵌入式系统设计模式——8051系列微控制器开发可靠应用.pdf》书中16章提到了两种方式;
多级任务和多状态任务,简单的说就是将一个长时间的任务分解为多个子任务(数码管扫描中已经用了多状态任务,将一个8位数码管分解成8个,每次只点亮一个),
然后burst读取时间也可以分解为每次多一部分,读取秒,分,时,单独读取秒花费1.4ms左右(软件仿真),也是超过了时标1ms,若设定时标为2ms,则数码管闪烁频率不够高,能看到闪烁
若再细分,就要把一个字节分成8次读,每次花费时间大概在0.1xms左右,合作式系统完全可以接收,但代码改动比较大,且不能直接使用别人写好的底层驱动代码,不太适合二次开发
另外想到的一种方式是将高频的任务比如数码管扫描放在单独的定时器中断中处理,这样时标就可以扩大了,10ms都可以,但数码管显示的内容是全局变量的内容,代码比较混乱
再就是不用时间触发式系统,而是还是利用事件触发事系统
浙公网安备 33010602011771号