TI-DSP多核技术及实时软件开发(txt+pdf+epub+mobi电子书下载)


发布时间:2020-10-02 16:55:14

点击下载

作者:潘晔

出版社:电子工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

TI-DSP多核技术及实时软件开发

TI-DSP多核技术及实时软件开发试读:

前言

随着数字信号处理(DSP)技术的发展,其应用无处不在。各种丰富多彩的多媒体智能终端带给人们方便快捷的应用体验,人们可以随时访问网络、处理音频和视频、规划交通路线等。除了上述消费类电子设备,工业控制、安防系统、通信系统、医疗设备、航天航空、军事装备等各方面都离不开DSP。因此,DSP软硬件开发以及系统集成等成为人们关注的问题。在通常情况下,开发一个DSP嵌入式系统,80%的努力及80%的复杂度均取决于软件;如何提高DSP软件的开发速度、降低开发难度和成本至关重要。

目前,DSP芯片的功能越来越复杂,多核片上系统(SOC)普遍应用,外设种类越来越多,大量新技术标准、新算法、新应用层出不穷。开发人员要花很长的时间来熟悉各种标准,而这些标准又在不停地改变。已有的设备和系统往往和特定的软硬件紧紧地联系在一起,很难升级和维护。开发人员常常面临不同方面的技术难题,还要重复开发类似的算法,既耗时又使成本增加。有些看似细节的问题,所涉及的处理方案可能影响整个系统,解决起来也较为复杂。用户所期待的是不用考虑产品所采用技术的不同,开发者也不希望陷入耗时费力的技术细节之中。因此,DSP芯片的主要供应商(如TI公司)提供了一系列可重用的实时软件开发框架、组件、库,以及适应SOC的多核通信组件、编解码算法、网络开发包等。

而且,对于DSP工程师而言,选择一个优秀的软件开发工具将大大地加快整个开发的进度,成为帮助开发和调试的有利手段。Code Composer Studio(CCS)是TI公司嵌入式处理器系列的集成开发环境(IDE),也是目前使用最为广泛的DSP开发软件之一。CCS以Eclipse开源软件框架为基础。CCS将Eclipse软件框架的优点和TI先进的嵌入式调试功能相结合,为嵌入式开发人员提供了功能丰富的开发环境。

由以上讨论可知,现代复杂的DSP嵌入式系统的开发已经不再是开发人员从头开始编写所有的软件,而是以成熟的框架和算法库为基础,充分利用开发工具,才能又快又好地完成;开发人员也不是独立完成整个系统,而是分工合作,可分成算法开发人员、系统集成开发人员,以及底层驱动开发人员等。

本书的目的就是从DSP软件开发的各个角度阐述TI公司提供的DSP软件和开发工具,为DSP软件开发人员理清思路,以简化和加快DSP系统的软件开发。本书系统地阐述了德州仪器(TI)公司的数字信号处理器(DSP)和多核片上系统(SOC)的相关软件技术,包括可重用的软件开发框架、实时操作系统内核、算法和多媒体库,以及适应SOC的多核通信组件,网络开发包等。全书分为五章,第1章讨论DSP嵌入式软件开发应注意的要素;第2章从XDAIS算法标准和三种参考编程框架等方面讨论DSP可重用实时软件技术;第3章从DSP/BIOS实时内核、网络开发包(NDK)、设备驱动包(DDK)和多核通信组件等方面讨论多核嵌入式软件开发;第4章讨论了优化的DSP库,包括算法库、数学库、图像处理库以及音视频编解码;第5章介绍了DSP软件开发工具——Code Composer Studio(CCS)。

本书所涉及的材料,是截止到2014年的最新资料。在全面整理TI公司相关资料的基础上,结合编者的项目开发经验,增加了实现的例子,有利于读者理解和应用。

本书是在彭启琮教授的主导下,由潘晔和廖昌俊完成的。两位编著者均完成过大量的DSP软硬件工程项目,对TI公司的DSP软件和开发工具十分熟悉。其中潘晔编写了第1、2章和第3章的3.1、3.2节,并对全书统稿;廖昌俊编写了第4、5章和第3章的3.3、3.4节。管庆教授提供了第5章的实例和重要参考意见,教研室多位研究生同学参加的项目也作为本书的应用举例,在此表示感谢。

DSP技术发展日新月异,应用广泛,新的软件技术和开发工具层出不穷。本书选择介绍的内容难免存在不当和错误,敬请读者反馈意见和批评指正。编著者2015年11月于电子科技大学第1章绪论

数字信号处理(DSP)的应用无处不在,包括消费类电子设备、工业控制、安防系统、通信系统、医疗设备、航天航空、军事装备等方方面面,而且DSP芯片以及多核片上系统(SOC)的功能越来越复杂,外设种类越来越多,大量新技术标准、新算法、新应用层出不穷。因此,开发一个DSP嵌入式系统,应以成熟的框架和算法库为基础,充分利用开发工具,才能降低开发难度和成本。

本章首先从宏观上讨论DSP嵌入式系统软件开发应注意的要素,然后简介TI公司的eXpressDSP实时软件组件和开发工具。1.1 DSP嵌入式软件开发要素

DSP嵌入式系统的软件开发是一项极具挑战性的任务,需要考虑大量相互关联的要素,才能做出优化与权衡。只有事先做好规划,才能完成这一挑战;否则很容易造成开发时效率低下,甚至推倒重来。开发人员首先应明确一个基本问题:此项目的目标是什么?然而这一问题并不容易回答。明确了项目的目标意味着完全理解了影响此项目的各方面要素,最终产品就会在市场上取得成功。实际上,这些要素直接决定了开发人员的多数决策。例如,产品上市的时间和利润点决定了开发人员选用何种开发工具,是否将开源代码或商业软件集成到系统中,是否采用以及采用哪种操作系统等。下面将讨论以下几方面要素:操作系统、图形化与人机交互、安全性、开发工具与开源代码、代码结构、中间件和软件框架、多媒体编程、多处理器或多核SOC等。1.1.1 操作系统

DSP嵌入式系统软件开发的首要问题是考虑是否采用操作系统。有的系统很简单、功能有限,就不需要操作系统;有些微控制器也不采用操作系统,而是采用一些简单的编程接口。TI公司为自己的ARM处理器DSP处理器提供了名为StarterWare的开发套件。StarterWare是基于C语言的,不需要操作系统的支持;包括设备抽象层库以及外设编程的例子,例如网络、图形、USB等。

如果需要操作系统,可选择的种类也很广泛。到底是选择购买Windows CE,还是选择开源的Linux,或者选择免版税但封闭的Android?是选择高层操作系统(HLOS)还是实时操作系统(RTOS)?选择操作系统是首要任务,因为操作系统直接影响其他部分软件的开发。

1. 商业OS、开源OS及免版税OS

采用商业OS需要向所有者付版税,购买了商业OS可以得到该OS所有者公司的技术支持和培训,从而缩短学习路线,克服不可避免的困难,加快软件开发过程。而且,由于商业OS完全由其所有者公司控制,第三方工具和插件等通常是经过该公司评估和认证的,可以方便地集成到大型软件系统中。

开源OS可以免费获得,其中Linux是最著名的。开发者社区为开源OS提供支持和插件。如果开发人员采用了开源OS,就需要自己负责集成、评估和测试操作系统以及第三方工具和插件,以保证所有软件能在一起正确工作。采用开源OS的好处是可以免费从开发者社区获得创新的软件模块,许多有创造力的开发者会定期向开发者社区贡献自己的成果。另外,许多操作系统厂商,如MontaVista、Red Hat、RidgeRun、Timesys、Wind River等开发了商业版的Linux。

Android是免版税OS,可以从Google免费获得,但其内容和架构仍然是Google控制的,例如,Android也基于Linux,但Google决定集成哪些内容和插件以及多媒体处理软件等。Android的封闭虽然限制了开发的灵活性,但简化和无缝集成了第三方代码,从而加快了系统开发过程。

2. RTOS与HLOS

选择操作系统需要考虑的另一个重要方面是待开发的应用系统是否是实时系统。RTOS是专门为实时系统设计的,可以满足确定的响应时间。实际上,确定的响应时间对一些实时系统至关重要,甚至关乎生死。例如,汽车的刹车系统必须在踩下刹车时立即响应,否则就会有生命危险。

通用的HLOS一般把命令放到队列中,然后在适当的时候再响应;而RTOS必须能识别紧急命令并立即响应。正是由于RTOS主要关注响应的实时性,通常RTOS不能支持类似Windows系统的通用HLOS的广泛功能;RTOS支持的一般局限于实时系统中最主要的时间敏感性任务。

通用HLOS的关注重点是便于使用,故HLOS比RTOS有覆盖面更宽和更深的抽象层,以隔离用户和硬件处理器或通信系统等。而且HLOS通常假定用户要处理很多任务,因此HLOS比RTOS功能复杂得多,代码量也大很多。反过来,这也使得HLOS不适合对响应时间有确定要求的实时处理应用。1.1.2 图形化与人机交互

人机交互也是DSP嵌入式系统软件项目需要考虑的问题。在项目的最初设计阶段,就要考虑是否需要图形化用户接口(GUI)。人机接口(HMI)或GUI在消费电子系统中很流行。在嵌入式系统中用户也希望有条件地采用这类直观的接口,以方便用户,提高系统的易用性以及总体操作效率。而且,最终系统在市场上是否受欢迎也与广告描述的用户接口相关。

嵌入式系统的图形处理包括三个不同的任务:创建、构图和显示。首先是生成图形元素,比如窗口、图标、按钮等;其次是设计不同窗口、桌面和其他图形元素的构图,即这些元素在屏幕上看起来是什么样子以及当系统运行时它们如何改变;最后是按某种顺序在显示器上实际显示图形元素。

显然,当用户接口越来越复杂时,图形设计和处理也越来越复杂。软件开发人员为一个特定的嵌入式系统开发用户接口时会在很大程度上依赖系统的硬件能力。例如,大部分消费电子系统配有专门的图形或多媒体处理器,而无专门图形处理器的嵌入式系统可能需要硬件加速器,才能分担系统主处理器的图形处理运算量,从而改善系统的图形响应性能。用户接口会影响用户对系统整体响应时间的感受,也就是说,一个反应迟钝的用户接口会给用户造成整个系统运行糟糕的印象。

对软件设计人员而言,一个需要考虑的关键问题是,一个特别的HMI或GUI对于系统在市场上的成功应用是否是绝对必要的。当然,用户接口对于许多消费电子设备或系统获得成功起了重要作用,但对于嵌入式系统就不是那么重要了。嵌入式系统的用户接口设计者需要在多方面进行权衡,分析各种图形和显示方案隐含的成本,确定满足系统成本、功能和性能的最优组合。另外需要考虑的问题包括:自行开发用户接口还是外聘专业的开发人员;需要多大的存储空间等。

现在已经有很多图形界面开发工具,包括开源的和商业套件。OpenGL是一种应用广泛的跨平台图形框架,独立于任何OS,由khronos.org提供支持。另外,有很多Linux平台的图形开发框架,如:Qt、X-11、GTK和DirectFB,每种框架都有多种实现子集,以及不同层次的硬件抽象。由于Linux本身不包括这些图形框架,因此对于没有经验的开发者,要在一种特定的嵌入式处理器上集成并运行Linux和这些图形框架是很耗费时间的。除了开源软件,一些商业OS也包括图形框架,如WindowsCE、VxWorks、QNX等;还有独立于OS的图形框架Mentor Graphics' Inflexion,既可以运行于开源OS也可以运行于封闭OS。1.1.3 安全性

嵌入式系统如何考虑安全性?还是完全不需要关注安全方面?实际上,在面对黑客、病毒以及恶意程序时,电子设备是很脆弱的。在可预见的将来,安全性将是业界持续关注的主要问题。存储了用户私有信息的嵌入式系统不会对身份盗窃者、窜改者、恶意攻击以及匿名恶作剧免疫,而如医疗系统和紧急应答通信这些类型的嵌入式系统对个人和公众安全十分关键。因此,嵌入式开发人员必须在项目刚一开始就做好计划以保护系统,即通过设计适当的安全措施来保护操作和存储的信息。

对于保护嵌入式设备,理解黑客的目的是极重要的。许多设备远离安全设施,放在很容易受攻击的位置,更需要强健有效的安全措施。开发人员思考以下问题有助于集中注意力,部署和开发适当的方法为最关键的部分提供足够的保护。○ 什么是需要保护的?○ 谁是安全措施要对抗的?○ 如果试图保护的信息被泄露了,代价是什么?

当然,这些问题的答案会根据最终应用发生变化。例如,销售点终端要保护存储在终端上的以及通过连接到终端的通信信道发送的信用卡信息;媒体播放器要保护包含数字版权的内容的安全以免其被盗版;语音和数据通信终端要保护个人身份不被盗窃以免隐私被非法侵犯。深入回答这些问题会使开发人员的决定全面而有效,开发人员会找到什么数据必须保密以及哪些通信信道必须加密。系统中存在的第三方应用程序也必须被评估,必须充分讨论其可能的安全隐患。

既然不同的系统要求不同级别的安全性,在一些系统中经常采用的安全技术在另外的系统中却不采用。例如,在大众消费应用中,密码加速、安全启动和保护系统调试通道等构成了最低程度的安全保护,而在嵌入式应用中需要另外的安全措施来保护运行时环境以避免窜改电压和时钟,以及保护各种通信信道。1.1.4 开发工具

通常处理器供应商会提供一些开发工具和资源,包括:集成开发环境(IDE)、硬件评估模块/开发板(EVM)、软件开发包(SDK)等。这些工具为项目初期提供了测试平台,可以极大地减少开发时间。

IDE在业界很流行,目前市场上有开源的、商业的以及处理器供应商提供的各种IDE。IDE将多种工具集成在同一环境中,可以简化嵌入式软件开发。在IDE中,多种开发工具通常共享相同的用户接口、命名方式、命令集以及其他总体操作等,数据在开发工具之间的搬移也较容易和直观。然而,并不是所有的IDE都是类似的,可能相当部分的IDE只有基本的代码生成工具,如汇编或编译器。而其他开发工具没有紧密地集成在一起。于是工具间的转换很费时,会影响整个软件开发过程的效率。

另外,IDE的性能也很重要。某些基准程序可以作为这方面的比较基础,或者通过不同的IDE运行大量已有代码也可以进行IDE性能比较。而且,不同IDE提供的可视性区别也很大,良好的可视性能提高开发和调试代码的效率。

有些处理器供应商的IDE以开源的Eclipse为基础。Eclipse可以支持多种编程语言,如Java、Ada、C、C++、COBOL、Python、Ruby等。Google公司根据Eclipse开发了Android的开发工具,TI公司在Eclipse的基础上开发了自己处理器的IDE——CCS。于是采用TI处理器,基于Android平台的嵌入式系统可以得到Google和TI的双重支持。

多数EVM包括一块验证过的印刷电路板(PCB)和相关电子元件,以及少量软件资源,不过不同EVM支持的软件资源变化很大。支持广泛软件资源的EVM可以使开发人员更快地搭建好一个应用实例。更完整的EVM可以支持IDE中的SDK、代码库,以及Linux、Android或Windows CE这类操作系统。

SDK通常由芯片厂商免费提供,其基本组件通常为特定的代码生成器,但有的SDK包括了一个特定应用的全部软件参考设计。后面这种类型的SDK中,构成系统的大部分软件都已经准备好了,直接可以使用,例如:多媒体框架、编解码器、控制USB和网络等接口的输入输出代码。这样,软件开发人员可以集中精力实现系统的上层应用软件。然而,这类包含广泛软件的SDK的坏处是它会限制开发人员实现与众不同的创新功能。因为这类SDK的大部分软件为二进制目标码,开发人员无法访问底层源代码,从而很难进行个性化修改。反之,那些由源代码组成的SDK给开发者提供了修改和定制的机会。只要许可协议允许,开发者就可以按自己意愿进行修改。

SDK除了要易于定制修改,还应提供结构化的、文档清楚的应用编程接口(API)。一个有效的API能简化编程,有利于软件构架的重新配置。API还应为系统软件的每层提供钩子(HOOK),以便开发者能方便地将自己的软件模块加入到系统中,而不用重新编写整个新模块。这样可以显著减少软件开发时间,加快新产品的上市。

处理器供应商对开源软件的支持很重要。开发人员选择开源软件时要考虑是否能方便地移植到特定的处理器,若处理器供应商已经完成了移植更好。例如TI公司,已经将大量的开源中间件和工具移植到了自己的处理器上,以便开发人员直接使用。这些开源软件包括:○ OpenMax;○ GStreamer;○ Eclipse IDE;○ OpenGL;○ OpenCV;○ Yocto;○ Linaro。

TI为嵌入式系统提供了移植好的Android软件库,包括操作系统、中间件以及其他工具,适用的处理器包括TI的ARM、DSP+ARM、DSP、OMAP以及数字媒体处理器等。详见arowboat.org。1.1.5 代码结构

代码结构对于嵌入式软件编程是很重要的。在开始设计软件时应考虑代码结构,这会影响将来代码的重用、个性化的设计,以及是否容易调试等。

1. 代码的重用

若在不同的应用中,代码、模块,甚至整个软件系统可重用,则软件开发的投资回报就会增加。为了取得最大的投资回报,制造商在制定产品线策略时,希望尽可能多的软件能在所有产品中重用。因此,代码重用成为了软件开发团队需要首先考虑的问题。

理论上,在一个产品线中,每一次提升系统能力常常意味着提高处理器性能,或者更换更强大的处理器。为了确保软件重用,软件团队必须考虑软件对产品线中不同处理器的兼容性,理想情况是为一种处理器开发的软件可以直接下载到产品线的其他系统中。因此,系统设计者必须仔细考虑各种处理器对软件的兼容性,以及软件对不同处理器的可移植性。

开发工具能帮助实现跨处理器平台的软件重用。例如,C等高级语言编译器允许一定程度的代码重用。具有良好结构和完整文档的API也能保证软件在多种平台和处理器之间的扩展性。然而,有些API相对于它们的代码而言过于庞大臃肿,从而对系统性能造成了负面影响。

总之,当软件团队具有广泛的开发工具、软件组件、封装器,以及其他能力,就可以实现高层软件重用;即可以很容易地混合以前开发的代码、加入或裁减掉某些特性和功能,从而快速地实现待上市产品的特定需求。

2. 代码的定制

许多软件开发项目的一个重要目的是为最终产品提供独特的性能或与众不同的特性。这样,一旦产品上市,就能从竞争中脱颖而出,从而取得极大成功。软件开发团队在开发新的特别功能,并将他们与开源软件集成时,必须特别小心。除非将自己的软件系统严格组织,并与开源软件完全隔离,否则根据开源软件许可协议,这些新开发的独特软件也会被认为是开源的。因此,必须将这些代码贡献给开源社区。

一些技术公司已经采取了一些步骤来预防这类情况。例如,TI公司提供的软件附有一份“软件清单”,详细解释和描述了这些代码的来源,以及相关的、需遵循的任何第三方或开源软件许可证。而且,TI公司的开源软件审查委员会已经检查过了这些软件清单以及代码本身,以确保这些代码具有严格的组织和架构,从而保护系统厂商的利益。

3. 调试

几乎没有软件项目可以不经过调试就能发现和消除无法预料的错误和故障。事实上,如果软件设计成便于调试,可以更快地实现全部功能。搭建软件系统的架构与各独立处理节点的组合时,可以考虑尽可能多地为调试提供代码可见性,以便于软件开发者孤立错误、快速修复有问题的代码段。

处理器供应商也会提供基于硬件仿真器的调试工具。例如,TI提供全系列硬件仿真器,可以在处理器运行时查看相关的状态。而且,这些仿真功能是TI的IDE——CCS的组成部分,能方便用户在源代码中快速定位并修复故障。1.1.6 中间件和软件框架

已经有大量的资源可以供嵌入式软件开发者使用。当然,选择特定操作系统和操作系统类型将影响贯穿项目始终的各种软件资源,包括中间件、软件框架,以及其他工具软件。例如,与类似Windows CE的商业操作系统相关的软件资源通常受操作系统供应商或授权的第三方厂商的限制;反之,选择类似Linux的开源操作系统的开发者必须从开源社区提供的广泛的开源中间件和工具中评估和选择自己需要的软件资源。而且,项目组可能不得不在自己的硬件上移植开源软件资源。不过TI等一些硬件厂商已经为用户完成了很多开源软件资源的移植。随着基于Linux的免版税Android系统的推出,多数开源软件资源提供了基于Android的版本。另外,TI等芯片厂商以及其他技术公司也提供了专有的软件开发资源。

现在,软件开发人员使用开源中间件越来越普遍。有些中间件,如GStreamer、Open CV,以及OpenMax等已经在某种程度上遍布业界。开源的工具链,如Yocto和Linaro等也已崭露头角。

中间件是一组预先定义并完全开发的软件功能或任务,开发者可以选择其中的一些组件来部署自己的系统。软件框架为集成各子任务确定了一组规则,以便减少集成的时间和难度。典型的中间件是实现特定类型的处理任务。如GStreamer专注于多媒体处理,需要部署多媒体处理栈的开发团队可以从其中选择多种模块,如视频解码模块或音频处理插件。

TI的微控制器和微处理器已经提供了许多移植了各种中间件的软件开发套件。这样可以使项目开发简化步骤,不用为硬件平台移植中间件,而是直接在最流行的中间件基础上集成自己的任务。1.1.7 多媒体编程

一般而言,多媒体编程包括处理视频、音频、图像以及图形。一些主要考虑的问题包括支持何种编解码器、需求哪些I/O接口、系统实时性的要求、系统并发性的需求、要支持几个通道、比特率和帧率、显示分辨率、多媒体内容的质量、存储容量和带宽等,所有这些方面都会影响多媒体编程。

许多系统处理视频和音频内容并输出到音/视频端口。处理器厂商也许会提供音频和视频驱动,但嵌入式开发人员仍需要熟悉各种音/视频接口,以便出现问题时进行调试。音频接口有模拟和数字形式。对于模拟音频接口,系统中要包括模数转换器(ADC),数模转换器(DAC)或二者的结合(codec)。对于数字音频接口,通常为SPDIF和HDMI接口。模拟视频接口包括射频(RF)、复合视频、分离视频等。这些模拟视频流通过视频ADC构成的解码器转换成数字形式。视频编码器则将数字视频转换成模拟视频流供监视器显示。最常用的数字视频接口为HDMI、DVI和LCD。一些系统会与相机接口,包括CMOS传感器、智能传感器,或USB相机接口。这些接口有时会集成到一片SOC器件上。若没有集成到SOC,系统开发者就必须选择不同的部件来实现要求的接口,此时必须确保所选的部件包括了合适的驱动。

许多嵌入式系统必须能处理压缩的音频和视频数据。这时,系统设计者和编程人员需要考虑如何实现压缩和解压。系统可能输入各种压缩的媒体数据,包括自己的文件系统从硬盘、USB闪存或SD卡读取的压缩内容,从有线或无线网络下载的压缩比特流等。通常,系统软件必须能解析特定的数据头,以便获知相应的压缩算法。当前常用的主流媒体格式有:数据报流(TS)、程序流(PS)、AVI、MPEG-4、ASF等。处理数据头的软件模块的主要功能之一是对音频和视频数据解复用,对比特流解复用后,将压缩数据的缓冲区送到解码器或解压器。表1.1列出了一些主流编解码器。表1.1 主流多媒体编解码器

1. 存储容量问题

目前许多嵌入式系统采用DDR存储器。为了降低系统成本,设计人员要在存储成本和容量之间进行折中。也就是说,设计者希望用最低成本的存储器提供能满足系统多媒体处理要求的足够带宽。

视频处理通常消耗大量的DDR容量,而音频处理消耗的相对少一点。将视频流传输到输入输出接口、解码、编码、后处理以及显示视频均会消耗大量存储器。编程人员应该意识到,应避免高清晰度视频的缓冲区拷贝,因为这种操作会超过系统中DDR的容量限制,造成低视频帧率或显示异常,从而给用户很差的使用感受。

2. 图形/视频混合

在许多应用中,图形和视频必须混合或组合以呈现给用户显示。一些嵌入式处理器包括了显示子系统,能直接用硬件进行这种混合。若没有显示子系统,需要用二维图形引擎来混合视频和图形。有的应用要实现三维(3D)视频,于是需要三维图形引擎。各种图形中间件也能帮助实现图形与视频的混合。

3. 响应时间

响应时间是指系统给出用户响应的时间。对最终用户而言,系统的响应时间至关重要。例如,如果视频会议的响应时间过长,图像或声音通道就有延迟,会对会议的参与者造成混乱。一种减少响应时间的方法是处理流水时减少缓冲区的大小,而且流水的每一步都要严格检查和优化以满足要求的响应时间。

4. 音视频同步

在音频/视频内容解码时,要求同步音频和视频流。例如,达到口型同步很常见,更复杂的同步要求系统的音频/视频解码与广播源等编码器同步。这种与源编码器同步的要求很常见,可以保证不跳帧或重复,从而减少运行时的比特流缓冲,避免溢出。

5. 质量

不同的应用要求不同程度的媒体质量。要达到高质量的音/视频,通常涉及软件算法或加速器,会消耗处理资源。因此,系统设计者必须考虑为多媒体处理任务分配足够的资源。而且,编程人员已经发现在代码的关键点设置内嵌测试能帮助调试质量问题。

6. 多媒体框架

OpenMax和GStreamer都是免版税的跨平台多媒体中间件,软件开发人员可以快速将媒体处理模块插入到自己的系统中。这些多媒体模块包括音频、视频、静态图片以及其他类型的媒体处理例程。这些例程通常用C或C++等高级语言编写,包括为应用程序提供抽象层的编程接口。

OpenMax由Khronos发起,赞助商有Evans&Sutherland、ARM、TI、NVIDIA、SGI、Oracle/SUN等。GStreamer由Oregon Graduate于1999年发起,已经被TI、Nokia等公司采用。1.1.8 多处理器或多核SOC

多处理(MP)通常是指一种系统设计方法,特点是在多处理器或多核上运行多线程软件。当前构建计算或通信系统时,MP流行的原因在于要克服单处理器结构的局限性。单处理器系统受限于处理器的速度,而多处理系统可以通过部署多处理器或处理引擎提高系统的吞吐量。除了性能的提高,与基于单个复杂、庞大的处理器系统相比,MP结构还可以降低功耗;而功耗对于采用电池的移动设备而言十分重要。

由于MP的明显优势,很多嵌入式系统转向采用此技术。然而,如实时处理等嵌入式应用的典型特性可能无法在多数通用系统中找到。因此,嵌入式系统要特别考虑软件开发环境和工具是否支持嵌入式多处理。

自然地,MP结构要求重点考虑处理器间的通信和协调以及组成多线程软件的各线程。在硬件方面,必须采用一种互联方法,而这决定了系统通信模式是采用消息传递机制还是共享内存机制。消息传递机制为处理单元配置私有存储空间,组成分布式多处理系统,数据采用消息包的形式传递。共享内存机制为所有的处理器设置一大块共享内存空间,数据通信就是将其放入共享内存,这种机制需要考虑缓存的一致性、存储单元的一致性以及同步原语。

从嵌入式软件开发的角度,MP结构会涉及在处理器之间进行负载分配,如何协调系统中的处理器,如何将多线程软件分给各处理单元以及其他问题。幸运的是,有开发工具和工具集可以提供帮助。

1. OpenMP

OpenMP是共享内存并行编程开发环境事实上的标准。TI为它提供技术支持,而且已经移植到了许多的TI处理器上。OpenMP是一个高层编程结构,以便显著简化开发多线程软件的许多问题。使用OpenMP,用户为一个程序具体化并发策略时,只需按照编译器的指引,在高层代码标注,说明一段代码会被哪些线程运行,而编译器完成代码到处理单元的详细映射。OpenMP可以运行于实时操作系统。

2. EZ tools

大量的嵌入式系统采用异构多处理结构,即一个或多个通用处理单元,以及若干数字信号处理器(DSP)。DSP处理单元通常加速如编解码等处理密集性任务。TI的EZ tools套件简化了嵌入式软件开发的任务,可以在通用处理器和TI C6000 DSP之间分割代码。

EZ tools套件由三个不同的工具组成:EZFlo、EZRun和EZAccel。每个工具针对不同的开发需求。EZFlo面向DSP开发者,它有直观的图形化用户界面,允许拖放以及连接快速代码生成和应用原型的功能块。EZRun面向ARM/Linux开发者,便于移植C代码为ARM的可执行代码或库。EZAccel面向要实现TI编解码框架的系统开发者,它可以加速将DSP函数加入编解码器。1.2 eXpressDSP实时软件与开发工具简介

TI公司提供了eXpressDSP实时软件和开发工具的组合,以帮助用户完成DSP嵌入式系统的软件开发。组合中包括一系列紧密连接的部分,使开发者能充分发挥TI的TMS320系列DSP、Davinci以及OMAP等处理器的潜力。每部分的设计都是为了简化编程,以及将定制软件开发方法转换成一种新的协作模式,即从广泛的多家厂商寻求支持。随着实时应用的爆炸性增长,对数字信号处理器的实时处理能力的需求也随之增长。eXpressDSP可以使创新者和发明者加快新产品投放市场的速度,让思想的火花变成现实。

图1.1描述了ARM+DSP架构上的eXpressDSP实时软件的组件以及在主机上的开发工具。包括CCS集成开发环境、数据可视化工具、操作系统、算法标准和框架、数字媒体软件、驱动与开发套件等。图1.1 eXpressDSP实时软件与开发工具1.2.1 CCS集成开发环境

CCS是一个完整的DSP集成开发环境(图1.2),也是目前使用最为广泛的DSP开发软件之一,支持所有的TI DSP,包括TMS320C6000、TMS320C5000、TMS320C2000、DaVinci、OMAP等处理器。图1.2 CCS集成开发环境

1. 集成可视化开发环境

CCS提供了集成开发环境,使整个DSP软件开发流程都可以在统一界面中完成。对用户而言,熟悉的工具和界面会降低学习难度,更快地上手。在可视化代码编辑界面(Editor),用户可以方便地编写C、汇编、.H文件、.cmd文件等。使用内建的工程/项目管理器(Project Manager),可以很容易地管理多用户和多种类项目。

提供GEL工具,用户可以编写自己的控制面板/菜单,方便地修改变量和配置参数等。

开放式的plug-ins技术,支持其他第三方插件,支持包括软仿真在内的各种仿真器。

2. 代码生成和分析工具

代码生成工具包括汇编器、优化C编译器、连接器等。以前开发高性能DSP程序需要清楚特定器件的结构,并手工优化汇编代码;但现在TI的C编译器可以帮我们完成优化。编译器评估代码的性能,设置了多种优化级别,可以生成小而且快的汇编代码。

分析工具(profiler)用于评估代码的性能。CCS集成的分析工具可以方便地分析所有C或C++函数的指令周期数、缓存的命中率、流水延误与分支等。这些分析结果对于代码优化很重要,可以明确需优化的重点代码段。

3. 调试器

CCS集成了强大的调试工具,支持C源代码级调试以及多DSP和ARM/DSP联合调试。基本调试工具有装入可执行代码,查看寄存器、存储器、反汇编、变量窗口(Watch Window)等;断点工具,包括硬件断点、数据空间读/写断点、条件断点等;还支持对多个处理器起作用的全局断点。TI的器件包括先进的硬件仿真特性,可以支持实时调试。当运行时间敏感的中断服务程序时,仍然允许CCS查看寄存器和存储器。

CCS提供了探针工具,可用于算法仿真和数据监视等。先进的事件触发功能,可以设置为:当一系列复杂事件按时序发生时让处理器暂停。数据的图形分析工具可绘制时域/频域波形、眼图、星座图、图像等,并可自动刷新(使用Animate命令运行)。

4. 软件仿真器(Simulator)

软件仿真器提供了一种不用硬件电路板运行DSP程序的方法,可以调试算法功能。有一些软件仿真器还可以进一步地验证时钟周期、运算速度以及部分外设功能。

软件仿真可以帮助用户跟踪和查找程序的问题。Watch窗口可以帮助找出内存冲突问题。中断响应时间探测器可以测出响应时间最坏的情况。TMS320C55x软件仿真器的流水分析通过显示流水的细节,分析延误及其原因。代码覆盖检查报告各源代码段(C和汇编)是否会执行。

5. 实时数据交换(RTDX)

RTDX和高速RTDX可以在不中断目标系统运行的情况下,实现目标系统与主机交换数据,即在目标系统与主机间提供了一个双向数据管道。开发者可以从目标系统存取数据,以便实时观察,仿真数据输入,缩短开发和调试的时间。1.2.2 数据可视化

实时显示数据是优化和调试系统的关键。硬件仿真器提供了目标系统与主机的链接,使主机可以控制目标系统。eXpressDSP数据可视化工具可以以图形方式显示复杂的数据集。

XDS560是高速、先进的硬件仿真器。它的跟踪模块结合数据可视化,可以帮助用户找出很难发现的复杂实时故障,例如:事件间的竞争条件、栈溢出造成的程序崩溃、失控代码、虚假中断等。这种跟踪是完全非介入式的,它依赖于DSP芯片中的调试单元,完全不会影响或改变目标系统的实时运行行为。

eXpressDSP数据可视化工具还提供了SOC分析器。SOC分析器属于TI的高层系统调节和显示工具,能使开发者动态观察SOC流数据,而不是只能事后分析静态数据。通过捕捉和图形显示系统的相互影响与负载分配,隔离瓶颈,确认异常行为,以及检测性能,开发者能极大提高效率和总体性能,避免烦琐的手工数据的收集和比较。1.2.3 操作系统方案

TI公司为自己的ARM和DSP处理器提供了全面的操作系统解决方案,包括DSP/BIOS、Linux、Windows CE等。

1. DSP/BIOS

DSP/BIOS实时内核随着CCS集成开发环境一起发布,免版税,支持TI公司全系列DSP芯片。DSP/BIOS是一个多线程实时内核,其健壮性已经经过了数千个嵌入式系统的验证。DSP/BIOS是高度可裁剪的内核,可以根据需要生成最小的可执行代码;也可以扩展网络开发套件(NDK)以及与ARM连接和通信的DSP LINK模块。

DSP/BIOS内核提供抢占式多线程,缓存和中断管理,邮箱、旗语和变长消息等通信机制可以无差别地工作于单核和多核系统中。为了调试复杂的应用系统,DSP/BIOS包括了实时记录服务,与CCS的图形分析和显示工具集成,可以增强对代码的实时分析能力,如线程的执行顺序、CPU负载、系统资源的使用情况等。

DSP/BIOS常运行于DaVinci、OMAP等多核处理器中的DSP核,这时,DSP需要通过DSP LINK模块与ARM端操作系统(Linux或Windows CE)通信。网络开发套件提供标准的TCP/IP网络服务,并包括HTTP、TELNET、DNS等高层应用协议。

2. Linux

TI赞助了OMAP和DaVinci的Linux社区,为自己的处理器提供开源Linux的最新裁剪版本,用户可以免费下载。开发工具为G++,包括GNU的C和C++编译器以及Eclipse IDE。支持TI的ARM核处理器,包括OMAP系列。主机端为Linux或Windows,目标系统可以为GNU/Linux、uCLinux或EABI。

对于希望采用Linux操作系统,又能得到商业公司支持的用户,TI提供了合作伙伴MontaVista的专业版Linux。此商业版本OS支持DaVinci和OMAP处理器,在主机端提供了编译、链接、调试、代码分析等工具;在目标板上提供了全部驱动和丰富的软件组件。MontaVista专业版Linux由MontaVista公司提供完全的技术支持和维护,使用许可可以作为TI数字视频软件包(DVSPB)的一部分来购买。

3. Windows CE

嵌入式Windows CE是一个组件式的实时操作系统,广泛用于小型设备,例如:手持GPS、工业控制等。TI为OMAP35x和TMS320DM644x等处理器提供了Windows CE的数字视频开发包(DVSDK)。

OMAP35x可用嵌入式Windows CE 6.0,开发工具为VC2005 IDE中添加一个插件。由于有很多测试过的操作系统组件和熟悉的开发工具,嵌入式Windows CE 6.0具有灵活易用、安全,以及兼容性好等优点。1.2.4 算法标准和框架

TI的多媒体框架包括xDAIS和xDM算法标准,以及Codec Engine算法执行框架。xDAIS和xDM算法标准可以简化将多个算法集成到目标系统的过程。框架组件能使用户采用符合算法标准的算法快速构建系统。

1. 算法标准

xDAIS是eXpressDSP算法互操作性标准,xDM是eXpressDSP数字多媒体标准。xDAIS要求算法让应用框架决定如何分配资源,消除了算法直接访问硬件资源造成的集成问题,提高了时间回报率。

xDM将通用的API具体化为针对特定的算法集,使能了一个集成器,以便功能或性能要求改变时能快速改变算法。xDM主要定义了视频和音频编解码相关的API。

2. 框架组件

对于希望开发与eXpressDSP兼容的框架的开发者,TI提供了底层组件,如DSKT、DMAN3等。这样就可以查询算法的内存和DMA资源的分配情况。

3. Codec Engine

Codec Engine是一个算法执行框架,自动调用eXpressDSP兼容的算法实例。它可以在ARM、DSP或ARM+DSP环境中执行,支持并发执行多通道和多算法。

Codec Engine的设计目的是用于连接提供音频/视频同步、I/O或网络服务等功能的高层框架或中间件,从而使系统供应商很容易实现差异性的应用系统。

Codec Engine的一个重要特性是在跨平台上(TI SOC与DSP)保持API的一致性,于是用户能在多种TI的处理器上灵活裁剪和移植程序。1.2.5 数字媒体软件

eXpressDSP数字媒体软件是一组经过实际产品测试的编码器、解码器、编解码器以及最常用媒体处理函数库,并在TI的DSP和SOC平台上进行了优化。这样,设备开发商就不用投入时间和精力到标准媒体编解码和处理库的实现,从而节约了数年的时间,可以专心做好具有自己特色的应用系统。用户可以在购买TI的EVM套件时得到eXpressDSP数字媒体软件的评估版本,另外还有多种灵活的使用许可以适应任何需求。关于数字媒体软件的详细清单以及适合的硬件平台请参考:www.ti.com/digitalmediasoftware。

eXpressDSP数字媒体软件与简单例子软件和自由软件不同,其全部组件都遵循严格编码规范,包括数据手册、版本说明、用户指南和使用举例等完整文档。每个模块均包括针对目标板的可重入代码库;都经过了单元测试和系统测试,以及数千厂商在世界各测试实验室进行了测试。这些编解码器已广泛地用于终端设备和系统,包括无线手持设备、网络设备、视频或IP电话、流媒体设备、机顶盒、视频会议等。

eXpressDSP数字媒体软件集是由TI公司以及TI授权的软件供应商提供许可,每个组件都与xDAIS和xDM算法接口标准兼容,很容易与eXpressDSP软件框架集成。其全部软件集由TI授权的软件供应商提供高质量的技术支持和培训,方便用户快速应用到自己的系统中。购买请参考:www.ti.com/codecbundles,TI授权的软件供应商列表见www.ti.com/asp。1.2.6 驱动与开发套件

TI公司与TI DSP开发者网络提供了广泛的硬件和软件入门开发套件,以及产品级的解决方案。这些给用户提供了很好的方法来评估TI的处理器和数字编解码器,并测试驱动,eXpressDSP工具为开发应用系统提供了很好的开始。很多产品级的解决方案包括了完整的软件许可证、开发好的软件,以及独立的硬件仿真器。另有大量的子板可以增加用户需要的功能。参考设计为用户开发硬件和软件提供了参考,以便快速实现产品。设备驱动开发包(DDK)可以帮助开发者实现自己需要的驱动。

1. DSP入门套件(DSK)

DSK提供了低成本的入门机开发套件,可以评估TI处理器平台以及eXpressDSP开发工具。TI及其合作伙伴为每种处理器提供了多种DSK,让开发者很容易学习和使用。可以测试算法、验证设计、评估代码和处理器架构等。DSK与能运行于特定目标板的CCS IDE一起发售,通常DSK板上集成了仿真器。目前TI提供了针对TMS320C2000、TMS320C5000,以及TMS320C6000处理器平台的多种DSK。

2. 数字视频开发套件

广泛的ARM/DSP系统工具帮助开发者跳过数字视频开发的起始阶段,简化复杂应用的开发过程。这些开发工具有:数字视频开发平台(DVDP)、数字视频评估模块(DVEVM),以及数字视频软件开发包(DVSPB)。

DVDP是针对DM648和DM6437的数字视频开发平台,包括:DM6437或DM648处理器目标板;eXpressDSP基于DSP的数字视频开发套件,具有TI的实时DSP/BIOS核、codec engine、视频编解码器、音频编解码器、芯片支持库(CSL),以及基于DSP/BIOS核的器件驱动器;可运行于DM6437的虚拟Logix Linux核;可运行于DM648的Ittiam视频编解码器演示软件;CCS IDE;数据可视化SOC分析器;以及网络开发者套件(NDK)。

DVEVM包括硬件和软件,使开发者可以立即开始评估基于ARM9的DaVinci处理器,并开始建立数字视频应用程序。目前可提供DM6446、DM355和DM6467的DVEVM。硬件包括:基于ARM9的处理器的开发板、遥控器、视频摄像机/LCD、大容量存储器、连接电缆等。软件包括:eXpressDSP的Linux DVSDK、支持开发板的软件包和驱动器、Green Hills的Multi IDE评估工具(目前只有DM6446的版本)等。

DVSPB是Linux软件开发包,用来快速而有效地开发基于ARM9的DaVinci处理器的复杂系统。DVSPB将eXpressDSP Linux DVSDK与MontaVista Pro Linux OS组合在一起,显著提高了软件的集成度和可视性。MontaVista Linux操作系统已经针对数字视频应用和ARM9处理器做了优化。DVSPB需要与DVEVM或TI的第三方硬件平台一起使用,其中还包括了MontaVista Pro Linux的使用许可,一年访问MVZone,以及Dev Rocket IDE;TMS320C6000 Linux编译器;eXpressDSP数据可视化工具;以及CCS与XDS560R JTAG仿真器。

3. DSP/BIOS LINK

DSP/BIOS LINK是服务于通用处理器(GPP)与DSP之间通信的基础软件,提供通用的API对GPP与DSP的物理连接进行抽象。可以跨平台使用,既可以用于SOC内部的GPP和其中一个或多个DSP通信,也可以用于独立的GPP和一个或多个DSP通信。

DSP/BIOS运行在DSP上,GPP上不要求特定的操作系统。DSP/BIOS LINK是免版税的,以两种形式提供:移植到Linux上的版本或一个通用的可移植软件包。可以从www.ti.com/dspbioslink免费下载。

根据其支持的硬件平台和操作系统,DSP/BIOS LINK提供以下服务。○ 基本的处理器控制:GPP装载DSP程序,启动或停止DSP,允许

GPP访问DSP的资源,用户事件的验证等。○ 跨多个处理器的共享/同步存储器池,对共享数据结构的访问。○ 多个处理器的通信协议,以及不同类型的数据传输协议。○ 底层同步与阻塞。○ 数据传输方式:消息队列(MSGQ)、基于数据流的环形缓存(RingIO)、逻辑通道(CHNL)。参考文献

[1]Jason Kridner, Nick Lethaby, Steven Magee, Erik Welsh, Henry Wiechman. Embedded software development is a multidimensional effort. Texas Instruments Incorporated, white paper, December 2011.

[2]Texas Instruments. Digital Signal Processing Software and Development Tools Selection Guide. Texas Instruments Incorporated, March 2010.

[3]http://processors.wiki.ti.com/index.php/Main_Page.第2章DSP可重用实时软件技术

第1章从宏观上讨论了复杂DSP系统开发需要考虑的各方面,其中的关键问题之一是可重用和实时软件设计。本章从算法标准和参考编程框架等方面讨论DSP可重用实时软件技术。2.1 XDAIS算法标准2.1.1 算法标准简介

数字信号处理器采用了哈佛结构和桶型移位器等专用的硬件逻辑,使其在语音、视频、通信等多个领域得到了快速的发展。为了实现实时复杂信号的处理算法,常采用直接在程序中嵌入汇编语句访问硬件外设。随着技术的发展,DSP软件越来越复杂。传统的开发方法缺乏一致的标准,开发人员要将大量时间花在重复开发和集成工作上。虽然很多算法是多年科研成果,但是如果缺乏统一标准,当算法从一个系统移植到另外一个系统时,通常要做很大改动,算法的继承性和重用性都很差,不同产品开发商的算法运行环境相互不兼容,严重限制了DSP的发展和推广。

针对这种状况,算法在编码上必须遵循一定的规范。在处理器资源的使用上,也必须作些限制,这些限制和规范就是算法标准。符合标准的一个算法可以应用于不同的软硬件环境,在不修改算法编码下,可以重新连接和配置,并且独立于I/O设备。算法的性能以存储器和MIPS消耗来评估。一个算法要应用于多种操作系统,必须具备以下基本特征。○ 算法对于应用程序透明,相同的算法可以用于任何应用程序。○ 算法既能用于静态系统,又能用于动态系统。○ 算法能用二进制形式分发,即能以目标文件发行。○ 算法既能用于单任务,也能用于多任务,即算法具有可重入性。

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载