微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI无线射频设计 > 关于Z-Stack分时任务的问题

关于Z-Stack分时任务的问题

时间:12-22 整理:3721RD 点击:

大家都知道Z-Stack采取时间片轮询任务调度算法,然而Z-Stack2.3.0的时间片长度为320us,也就是说每隔320us协议栈的 OSAL就开始切换Task。废话不刷了,直入正题吧,我的问题是,假如我有一个传感器,每次读取的时间远大于320us假设读取时间为5ms,我该怎么做才能保证读取过程不被打断呢?刚开始想到中断,后来有觉得不妥,因为5ms中有很多个320us了已经被打断很多次了,纠结啊....  有哪位大神弄过这类的问题的啊?坐等OutMan

osal并不具备时间片调度功能,任务都是执行完一个再执行下一个的,只是它的最小轮询时间可以达到320us而已

xiao dong jia,能详细的说一下吗?

这个怎么才算详细?你说的那种叫抢先式实时操作系统,就是任务在执行时如果有更高级任务产生,则保存现在任务的现场转去执行高级任务,执行完后恢复现场回到被中断的任务继续执行。OSAL就是不停查询有没有任务需要执行,如果有就执行,执行完了再查询,就这么转着圈的查,一个循环的时间取决于每个任务执行的时间。这要求对每个任务编程时需要注意不要执行太耗时的工作,否则会影响其它任务的执行效果

在osal_start_system( void )中的for死循环中osalTimeUpdate()函数不是更新时间的吗,产生中断的吗,这个又如何解释呢

osalTimeUpdate()函数是用来更新系统时钟的,而且这里面也不产生中断。你没有仔细看代码吧

你说的没错,刚刚看了下,的确是更新系统时间的,至于OSAL能不能处理多任务并发,我明天做实验试试

谢谢你啊,我做了实验验证过你说的是对的,OSAL的任务调度算法是FIFO

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top