首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

自行开发兼容目前常用的MCU/DSP的superRTOS实时操作系统!

标准的DSP结构属于“OS不友好”的,虽然我认为DSP最终会大量支持OS,但是目前主流DSP做OS移植难度实在不小。唯一的例外是Blackfin,那是在设计时就考虑了支持OS的。
TI的解决方案是DSP+(ARM)MCU,优势是分工明确,缺点是开发需要学习两套系统,而且存在DSP和MCU间的通信、同步等问题。我个人觉得DSP+FPGA/CPLD倒是一种可以解决硬件构成和软件移植复用的方案。这个方案可行的前提主要近来FPGA/CPLD工艺、技术的提高和成本的大幅度降低。毕竟现在不论是MCU还是DSP,不用到FPGA/CPLD的地方不多了。
DSP的结构不适合OS的主要原因是DSP一般是RISC加流水线结构,尤其是高端的DSP。比如说吧,X86上跑OS在切换任务的时候只需要压栈比较少的寄存器,而即使是ARM这样的RISC CPU需要压栈的寄存器数量也不是太多。但是DSP一般为了提高运算速度,都作了比较多的寄存器,这些寄存器的压栈需要的时间就比较多了,当然现在DSP的主频比较高,这也是能接受的,但更大的问题是流水线被打断,这样浪费的时间就比较多了,DSP的工作特点是保证数据流的高速输入、运算、输出,所以DSP做硬件全寄存器压栈结构的都不多。通常OS的工作特点是以定时地中断来切换任务,可是DSP怕的就是中断,当然并非DSP不可中断,一般DSP都有中断机制,可是一旦用OS的时间片轮转的方式来定时中断DSP,其性能将大打折扣。所以我说在DSP上跑OS必定是未来的方向,但现在还有一些困难。这者转折点就在软件成本高于硬件成本的时候,这基本上和通用CPU的发展历程是一样的。我个人对在DSP,尤其是高端的DSP上跑OS非常感兴趣,但每当考虑到细节问题是,总是觉得困难多多。我曾经请教过邵贝贝(清华大学翻译uCOS/-II的那个教授),因为我认为象uCOS/-II这样的OS是很适合向DSP移植的。实际上uCOS/-II也确实支持TI以及ADI的一些DSP,但是效果呢?问题还是存在的。所以当时邵贝贝的回答基本上也和我上面所表达的看法类似。
对,这样OS可以跑在ARM里面,而DSP用于密集型运算任务。一般DSP都有个主机接口,也是这个原因。
我总的意思是:DSP并非不能跑OS,DSP也是个CPU,当然能跑,但跑了OS的DSP性能要下降,这是我们不愿意看到的结果。但是为了提高软件开发效率和降低软件成本,我们又希望DSP系统有OS支持。
这就让我们必须要来考虑各种可能的方案。ARM+DSP是一个比较经典的方案,象TI已经将其做到一个芯片里面了。ARM在这个系统里主要是做控制密集型任务,比如人机界面,任务调度什么的,DSP则作语音、图像等运算。从保证数据流的连续性来看,ARM也不适合作数据中转,FPGA更合适。比如TS201,IO带宽达到了40G bps,少有ARM芯片能胜任这个中转任务。DSP最重要的是保证进出数据流的流畅,所以现在ADI将TS201的IO口做成了DDR的LVDS(这是现在的FPGA直接支持的),而TI的64系列还采用总线方式,在BDTI的评测可以看到,TI的高端芯片最大的问题是IO带宽相对小了。对于ARM+DSP系统,我认为最大的问题还不是硬件成本问题,现在的ARM芯片价格已经很低了,而且这个系统已经有了DSP这个运算引擎,也不需要ARM又很大的运算能力,所以硬件成本增加很少,但有了ARM后就需要增加一套开发调试的系统以及掌握相关技术的工程人员,这主要是软件成本。这个方案未来的前途如何取决于ARM的发展,如果ARM最后一统天下,掌握ARM相关技术成了每一个搞嵌入式设计的工程师必备的技能,那这个方案是比较有前途的。当然现在看来,出现这种情况的可能性很大。
我的另外一个考虑是,现在用DSP,系统中不用FPGA的可能性很小,而FPGA是不但可以支持各种接口转换,更重要的是在FPGA中可以做一个小的CPU出来(当然也可以在其中做出DSP,但考虑性能价格比,那不是我们考虑的范畴),在这个小CPU中跑个小OS来做任务调度,又如何呢?嵌入式设计工作现在离不开FPGA/CPLD,未来更是可以肯定的预见不能离开,那么为什么不考虑用IP核的方式来支持OS呢?这样还可以完全根据系统需求来订制。现在100万门的Spartan-3也就12美刀,完全可以考虑呀。
很高兴和两位在这里讨论问题,希望更多一些交流。
C51是Intel open了的,可以做成FPGA软核。实际这样做的也有。但C51对高端DSP来说数据宽度小了。对中端DSP系统比较合适。OS的目的是建立一个统一的系统平台,全部或部分的隔离硬件细节,提供标准化的开发和应用接口。在嵌入式领域里,涵盖的CPU/MCU体系至少ARM,C51,96,X86,POWERPC这几个体系是必须包括的吧。这可是个不小的工程。而且此前还必须有个硬件平台体系标准,嵌入式OS当然必须是可剪裁,但也要先规定一个上下限,个人认为这个OS应该是主要针对DSP系统的吧,MCU/MPU的硬件平台和OS、软件中间件都已经非常的成熟了,比X86+Windows当然不行,但至少很多有实力的公司已经付诸实施,并且有了很多现成的产品。DSP方面的工作也有人在做,由于上面已经谈到的一些原因,没有人能走多远。我们要想走出第一步首先是要定义硬件平台规范,想直接作软件支持全部体系不怎么现实。所以如果大家想把事情推进,就先来迈出第一步吧。
这种浩瀚的大工程,如果不是open的可能愿意参加的人不多哦。这种事情作为爱好来做比较简单,如果是以产品的方式来做,我估计组织起来会有困难。当然我会提供我力所能及的帮助。
返回列表