网站首页

人工智能P2P分享搜索全网发布信息网站地图标签大全

当前位置:诺佳网 > 电子/半导体 > 音视频/家电 >

利用实时Java设计数字音频系统

时间:2018-10-27 15:47

人气:

作者:admin

标签: 实时  利用  数字  JAVA  设计 

导读:利用实时Java设计数字音频系统-关键词:dsp , java , RTSJ , 音频 在传统的信息技术领域,Java已成为首选的编程语言,因为它能提高开发者的生产率、软件复用率和可靠性,降低软件维护成...

关键词: dsp , java , RTSJ , 音频

在传统的信息技术领域,Java已成为首选的编程语言,因为它能提高开发者的生产率、软件复用率和可靠性,降低软件维护成本,并提供更灵活、更通用的软件结构。

如今,在低级、硬件、实时软件领域已有各种各样的Java方案。但是,当在像数字音频信号处理这样非常低级的软件中应用Java技术时,某些方案将更能发挥传统Java技术的优越性。

其中一种方法基于针对资源受限和安全关键的Java定义的推荐规范。设计该方案的主要目的是保持Java的可移植性、可维护性和可扩展性优势。在系统内的信息流中包括两台计算机,这两台计算机协同操作以便通过网络通讯通道交换音频信息(图1)。

在一个节点上采集到的音频信号被传输至其它节点,并被输出至远程计算机的扬声器。在第二个节点上采集到的音频信号则在第一台计算机的扬声器中输出。从概念上讲,信息流被构造成两个独立的数字音频数据流。

这种简单的音频处理应用可以被当作PERC Pico应用程序来实现。该软件目前正在开发中,它首次实现了针对安全关键和资源受限应用所提出的实时Java(RTSJ)规范概要分析。“硬实时概要分析(hard real-time profile)”即指这种环境。

利用实时Java设计数字音频系统


                图1:一个简单的数字音频应用构成了本文讨论的关键性软件工程的基础

1  维护和可扩展性要求

摩尔定律推动了典型嵌入式应用的规模和复杂度快速增长。竞争压力促使软件不断发展,以满足功能越来越强大的硬件的需求。对某些消费电子设备的研究发现,新产品中代码规模的增长速度非常接近摩尔定律,大约每18至36个月就翻一番。

大约20年前,每个新的嵌入式设备中的所有软件通常是由一个或两个工程师在不到一年的时间内写完。而现代嵌入式软件的开发则非常困难。假设每次新产品的软件修订都要求增加数十万,甚至数百万行的代码,那么嵌入式软件开发人员的职责将更多地转向如何解决集成许多独立开发的软件组件所带来的挑战。

这个简单的数字音频例子代表了一种原型的低级嵌入式软件“产品”。对大多数产品而言,开发原始软件的成本要比整个产品生命周期内的软件维护成本小得多。以下列出了该应用在产品生命周期内的发展过程。

(1)软件将需要被移植到不同的操作系统和不同的处理平台上,这将改变它的CPU时间和内存需求。

(2)软件将与各种不同的补充功能集成在一起。也许下一代产品也将包括视频信号。也许它将支持共享数字白板,以便于召开远程会议,或者可能与电子邮件和日历软件集成在一起。或者,一些应用可能增加录制功能,以将会议实况保存在磁盘中。

(3)双节点网络拓扑可能需要进行通用化,以支持有任意多参加者的会议。

(4)模数转换器(ADC)和数字信号处理器(DSP)的接口可以不断发展。在一些配置中,操作系统提供了这种服务。而在其它配置中,这种应用可能包括连接音频子系统硬件和DMA内存设备的设备驱动程序接口。音频硬件本身有望继续发展,这要求软件设备驱动程序不断发展。

(5)网络通信协议可能需要作一些改变。在某些环境中,软件将依赖底层操作系统服务来与网络连接。随着各种网络通信协议的发展,连接操作系统网络业务的接口甚至也可能发生变化,以便提供新的QoS参数和更高带宽。在其它情况下,这种应用将需要包含面向硬件接口的低级设备驱动程序,也可能需要实现通信协议栈。可以采用带冲突检测的载波侦听多路访问(CSMA/CD)技术、无线、光纤和其它有待发明的技术,在低成本专用串行通道、同轴电缆和双绞线数据链接中实现相同的基础通信能力。通信库可能集成了压缩、加密、检错和纠错,以及滑动窗口协议。

上面给出了软件在商业化业务应用中的几种可能发展方式,这里并非想穷举所有的优势,只是为了说明保留Java设计优势的好处,即使是对于一些资源受限和硬实时应用来说。

利用实时Java设计数字音频系统


图2:硬实时JAVA翻译环境显示了各种工具之间的关系,这些工具可使实时组件的开发、维护和集成更容易

2 实时JAVA的能力

这些实时Java编程技术由RTSJ衍生发展而来。该规范具有很好通用性,能支持多种独特的实时编程要求。由于本文主要关注非常低级的实时软件,所以我们将开发人员的操作限定在完整RTSJ规范的子集范畴内。

这种概要分析可改善可移植性、可靠性和效率,因为它禁止使用一些需要很大的运行时间开销、会带来不可移植的实现依赖性、增加软件复杂度以致使程序员更容易出错的功能。硬实时概要分析和完整RTSJ之间一些特殊差异包括:

(1)完整的RTSJ对同步锁采用优先级继承方法,并支持优先级限高仿真可选。硬实时概要分析禁止使用优先级继承并要求支持优先级限高仿真。

(2)完整的RTSJ允许即时修改各种线程调度和对象同步参数。硬实时概要分析禁止对线程调度和同步协议进行即时调整。

(3)完整的RTSJ还支持一些机制,这样每当任务错过最终期限或超出其CPU时限时,就可以自动触发异步事件。请注意,这些服务的实现是完全不可移植的,而精确执行会带来极高的运行时间开销。此外,在硬实时应用中不需要运行时间限制,因为在程序执行之前,已经静态地满足资源预算和最终期限要求。因此,硬实时概要分析不支持这些机制。

(4)完整的RTSJ支持传统线程、访问垃圾收集堆的实时线程,以及不访问垃圾收集堆的实时线程的混合体。这种不同线程类型的混合大大增加了系统的复杂度和规模。这种复杂度将增加由于不同线程类型之间不能正确共享信息而导致的实时编程出错的可能性,硬实时概要分析仅支持不访问垃圾收集堆的实时线程。

(5)完整的RTSJ提供一系列可供应用程序员使用的库,以便举例说明动态内存范围,并在特定范围内分配对象。由于程序员在开发或集成采用嵌套作用域(nested scope)的组件时可能会产生许多小错误,所以这些库的使用尤其成问题。为执行正确的区域性存储器(scoped-memory)使用协议,RTSJ在每次读取和/或重写参考字段时都执行特殊的运行时检查。在完整的RTSJ中,运行时进行检查会使程序组件出错,从而使得程序由于非法分配、非法读取、区域性存储器协议错误、内存不足错误等原因,以运行时间异常方式终止执行。硬实时概要分析禁止使用RTSJ内存作用域(memory scope)操作库。相反,它要求程序员以编程注释的形式描述其对作用域内存(scoped-memory)的使用。在编译期间,这些注释可以被分析和执行,例如本文应用提到的@Scoped和@StaticAnalyzable注释。

(6)RTSJ不会为了中断处理或低级设备的I/O而对库进行标准化,而硬实时概要分析对这些库进行定义。

硬实时概要分析的商用化前实现试验显示,它运行在某些CPU密集型基准程序的速度比标准Java和完整RTSJ的速度快三倍。这是因为硬实时执行环境比标准RTSJ简单得多,并且它还用编译时间验证替代各种运行时检查。这种性能可以与相应的C和C++程序相媲美,有时甚至更好。

尽管采用受限的硬实时概要分析比采用传统Java更加困难,但这种平台的代码开发和维护要比用C或C++开发出的相应平台的维护容易。这是因为硬实时Java平台具有更好的可移植性,并提供高级的面向对象的抽象。此外,硬实时Java平台包括可使实时组件的开发、维护和集成更为容易的一些重要开发工具(图2)。

由于包含了强制严格遵守类型安全的字节码校验器,与C和C++相比,Java开发可提高可靠性和可维护性。C和C++程序员可以利用多种让使类型安全无效的机制,而有意或无意地利用这些漏洞将使代码更容易产生错误,并降低可移植性。

受限的实时环境提供了比传统Java更严格的字节码验证。特别是,图2中的硬实时验证器可确保指向堆栈分配对象的参数(指针)不会比对象本身的生存期更长。它也确保用专用@StaticAnalyzable注释标记的程序组件,可限制它们对可分析子集使用Java。与硬实时翻译器的集成,则能提供确定执行每个组件所需的CPU时间和堆栈内存上限的能力。

执行硬实时组件所需的所有临时内存分配,必须由正在执行线程的运行时栈来实现。执行从单主线程开始,而主线程的运行时栈代表了所有可重复使用的内存。对于由主线程派生的每个附加线程,它提供了部分运行时栈作为派生线程的运行时栈。

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信