打印

TI DSP这种程序架构的好处是什么?

[复制链接]
1777|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 electricter 于 2019-2-18 10:27 编辑

小弟最近刚学DSP,看过很多DSP的例程和文档,发现程序架构基本是以下这种结构:


这种结构的好处是什么,好像用一个super loop不停轮询,不需要定时器也可以啊,
用定时器唯一我能想到的好处是具有时间确定性,不过这需要计算每个任务的运行时间,合理分配好定时的值,也是挺麻烦的。。。不知道大家有何高见?

/**************************补充说明 20190218*******************************/
看大家的回答可能都理解成是使用定时器中断了,其实TI这种结构不是使用中断,而是在super loop里不停轮询定时器的溢出标志,溢出了就执行相应任务,然后再次定时等待溢出。
我原来想的是就算不用定时器定时,直接使用最普遍的方式,在super loop里不停的轮询各个任务,不也可以吗,定时器结构的好处在哪呢?
我也在TI的论坛上发问,得到的回答还是挺满意的,就是这种结构能区分任务的紧急程度,不停的轮询不紧急的任务会影响紧急任务的反应时间,使用这种结构能加快紧急任务的反应时间,又不影响整个系统的功能。





相关帖子

沙发
electricter|  楼主 | 2019-1-13 20:58 | 只看该作者
自顶,就没人想过这个问题么

使用特权

评论回复
板凳
kiklkmkj| | 2019-1-14 14:54 | 只看该作者
这其实可以说是一个简化的系统,这个系统搭建起来之后,首先一个就是你说的时间固定,另外就是增加或者删除任务很简单,而且人物之间可以做到差不多互不影响。
如果按照你说的直接放一个大循环,如果某一个任务需要等很久,其他任务就没法进行了。而定制器这个架构的话,可以定一个标志位,然后直接运行其他任务,等时间到了再回来处理即可。

使用特权

评论回复
地板
electricter|  楼主 | 2019-1-14 16:30 | 只看该作者
kiklkmkj 发表于 2019-1-14 14:54
这其实可以说是一个简化的系统,这个系统搭建起来之后,首先一个就是你说的时间固定,另外就是增加或者删除 ...

任务时间长的话,定时器时间也得相应加长,感觉跟super loop里轮询没什么差别,而且super loop也可以设置标志位。。。
用这种定时器架构,需要计算好任务时间,时间不能不够,所以定时时间一般会超过任务执行时间,那么在超过的这段空余时间里,CPU相当于是处于空闲状态了,而super loop则能够时时刻刻轮询,这样看来似乎super loop的CPU使用率更高呀。
感觉除了任务执行时间不确定之外,其他的super loop结构都不会比这种定时器架构差。。。

使用特权

评论回复
评论
kiklkmkj 2019-2-15 20:18 回复TA
任务时间长,是说需要一直处理该任务很长时间还是需要等待很长时间?如果有等待时间,那就把任务拆分成几个状态,通过状态机来转换,并不需要一次就处理很久。一次需要连续处理很久的任务很少吧,总是可以分解的。 
5
zhangmangui| | 2019-2-8 14:16 | 只看该作者
很多处理器都是这样的吧    如果是硬件架构  可能还涉及到一下专利等要求

使用特权

评论回复
6
electricter|  楼主 | 2019-2-11 15:53 | 只看该作者
zhangmangui 发表于 2019-2-8 14:16
很多处理器都是这样的吧    如果是硬件架构  可能还涉及到一下专利等要求

不是硬件架构  而是软件架构   我在TI的中文论坛上提问了  得到的回答还挺满意
网址:https://e2echina.ti.com/question_answer/microcontrollers/c2000/f/56/t/168722?tisearch=e2e-sitesearch&keymatch=%20user%3A91365

使用特权

评论回复
7
zhangmangui| | 2019-2-12 22:21 | 只看该作者
electricter 发表于 2019-2-11 15:53
不是硬件架构  而是软件架构   我在TI的中文论坛上提问了  得到的回答还挺满意
网址:https://e2echina.t ...

好的   学习一下  

使用特权

评论回复
8
kiklkmkj| | 2019-2-15 20:19 | 只看该作者
electricter 发表于 2019-1-14 16:30
任务时间长的话,定时器时间也得相应加长,感觉跟super loop里轮询没什么差别,而且super loop也可以设置 ...

任务时间长,是说需要一直处理该任务很长时间还是需要等待很长时间?如果有等待时间,那就把任务拆分成几个状态,通过状态机来转换,并不需要一次就处理很久。一次需要连续处理很久的任务很少吧,总是可以分解的。

使用特权

评论回复
9
electricter|  楼主 | 2019-2-16 08:44 | 只看该作者
kiklkmkj 发表于 2019-2-15 20:19
任务时间长,是说需要一直处理该任务很长时间还是需要等待很长时间?如果有等待时间,那就把任务拆分成几 ...

是呀  可以分解   但是首先定时器数量得够     其次super loop也能实现这样的功能
我觉得这个答案说得有道理:https://e2echina.ti.com/question_answer/microcontrollers/c2000/f/56/t/168722?tisearch=e2e-sitesearch&keymatch=%20user%3A91365    你可以看看

使用特权

评论回复
10
vivilzb1985| | 2019-2-17 14:18 | 只看该作者
这个主要是依靠中断的处理来实现的

使用特权

评论回复
11
shenmu2012| | 2019-2-17 14:20 | 只看该作者
这个都是软件系统的通用设计的啦,主要是为了多线程运行的

使用特权

评论回复
12
firstblood| | 2019-2-17 22:33 | 只看该作者
后台程序之间的设计的蛀牙是通过不同定时器的设计切换实现的

使用特权

评论回复
13
comeon201208| | 2019-2-17 23:03 | 只看该作者
一般的操作系统的都是这样设计的,采用不同定时器的分时工作原理

使用特权

评论回复
14
electricter|  楼主 | 2019-2-18 10:03 | 只看该作者
vivilzb1985 发表于 2019-2-17 14:18
这个主要是依靠中断的处理来实现的

不是的   只是轮询定时器的溢出标志   并没有使用定时器中断

使用特权

评论回复
15
kiklkmkj| | 2019-2-20 18:43 | 只看该作者
electricter 发表于 2019-2-16 08:44
是呀  可以分解   但是首先定时器数量得够     其次super loop也能实现这样的功能
我觉得这个答案说得有 ...

不一定需要很多定时器,可以用一个定时器,固定的时间间隔,但是任务处理可以采用不一样的间隔累加之后再处理,就可以处理不同时间间隔的任务了。

使用特权

评论回复
16
electricter|  楼主 | 2019-2-21 10:54 | 只看该作者
kiklkmkj 发表于 2019-2-20 18:43
不一定需要很多定时器,可以用一个定时器,固定的时间间隔,但是任务处理可以采用不一样的间隔累加之后再 ...

嗯嗯   其实是同样的架构   不同的实现方法

使用特权

评论回复
17
kiklkmkj| | 2019-2-25 18:03 | 只看该作者
electricter 发表于 2019-2-21 10:54
嗯嗯   其实是同样的架构   不同的实现方法

是的,这种架构其实也就是个伪多线程

使用特权

评论回复
18
lvyunzeng| | 2019-2-27 09:03 | 只看该作者
这个问题,您要是深入研究的话。先了解一下冯诺依曼结构与哈佛结构、增强型哈佛结构是怎么玩的。你就知道单片机、计算机、与DSP的区别了。

使用特权

评论回复
19
electricter|  楼主 | 2019-2-27 11:07 | 只看该作者
lvyunzeng 发表于 2019-2-27 09:03
这个问题,您要是深入研究的话。先了解一下冯诺依曼结构与哈佛结构、增强型哈佛结构是怎么玩的。你就知道 ...

看起来挺复杂了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

46

帖子

0

粉丝