采用Linux与DSP/BIOS实施双OS信号处理技术

发布者:beup001最新更新时间:2009-03-06 来源: EDN China关键字:Linux  实时操作系统 手机看文章 扫描二维码
随时随地手机看文章

  在系统性能与编程简易性之间的权衡折中是通用操作系统与实时操作系统之间的主要区分点之一。

  GPOS(通用操作系统)倾向于提供较高程度的资源抽象,这不仅可通过支持软件模块与资源隔离来提高应用的便携性、简化开发流程,同时还能增强系统的稳健性,这使 GPOS 成为诸如网络、用户界面以及显示管理等通用系统组件的理想选择。

  然而,该抽象需要以系统资源的精细粒度控制作为代价,以满足信号处理代码等高强度算法的计算性能要求。对于实现这种高级别的控制,开发人员通常需要采用实时操作系统 (RTOS)。

  从嵌入式信号处理角度上讲,我们通常要考虑两种类型的操作系统,即通用操作系统 Linux 与实时操作系统 DSP(数字信号处理器)/BIOS(基本输入输出系统)。Linux 可支持更高水平的抽象技术,而 DSP/BIOS 则可提供更精细的控制。

  为了充分发挥这两种操作系统的优势,开发人员可采用系统虚拟机,这就使编程人员可在同一 DSP 处理器上同时运行 Linux 与 DSP/BIOS 系统。

  然而,我们要提出一个重要的问题:为什么不使用分别运行 Linux 与 DSP/BIOS 系统的 CPU+DSP 组合器件呢?毕竟,CPU 在运行用户接口控制代码等方面具有更高的效率。此外,不同的内核可避免虚拟化带来的开销。不过,在同一颗芯片上集成所有功能还是很有吸引力的,原因如下:

  其一,当今高性能 DSP 比前代 DSP 要强大得多,这样可减少控制处理周期数。其二,大多数高性能 DSP 的通用性能均比前代产品更强,从而可实现更高效的控制代码处理工作。

  如果所有功能都可集成在 DSP 上,那么其优势将更加出众。更少的芯片数量可实现更低的成本与更小的占用空间。此外,由于不再需要在耗费大量电力的处理器间数据传输,因此还可降低能耗。

  进度安排

  操作系统最常见也是最有利的一个特性就是能同时执行多个任务或多个线程。操作系统通过时间表管理内核处理,以连续执行相关任务。

  以往,嵌入式编程人员在使用 Linux 时会担心实时性能较低的问题。不过,对 Linux 内核的最新增强显著提高了其对系统事件的响应能力,从而使其可满足各种企业与个人以及嵌入式产品的需求。

  Linux 可实现线程的时间切片以及优先次序的时间安排。时间切片技术是指在所有线程之间共享处理工作周期,以确保无封锁线程。这种方法通常适用于用户接口功能,以确保在系统超载、响应较慢的情况下也不至于完全丢失用户功能。

  与此形成对比的是,优先次序线程时间安排技术则可确保系统中最高优先级线程的执行,直至该线程放弃控制为止,这时下一个最高优先级的线程即开始执行。

  Linux 内核在每次从内核到用户模式的转换时都会对可用线程的优先级进行重新评估,这就意味着内核最新评估的任何事件(如驱动程序上数据的可用性)都能立即触发新线程(调度器的时延响应时间内)的转换。由于确定了基于优先级的线程,其通常用于必须满足实时要求的信号处理应用。

  在推出 Linux 内核 2.6 版本之前,制约实时性能的主要因素是 Linux 内核会禁用中断,且禁用时间有时会长达数百毫秒。

  就此而言,我们可以提高内核实施的效率。因为在禁用中断时,代码的某些部分无需重新进入,而这会增加中断响应的时延。

  目前的 2.6 版本提供了构建选项,可在整个内核代码中以更高的频率插入中断再启用指令。Linux 社区通常将该特性称作先占内核 (preempt kernel),尽管这会让内核性能略有下降,但却能够显著提高实时性能。对于众多系统任务而言,在先占性 Linux 2.6 内核与实时线程结合使用时,将能提供足够的性能来满足实时需求。

  例如,德州仪器 (TI) 的 DSP/BIOS 以软件中断和任务的形式仅支持优先级调度。与 Linux 调度器一样,软件中断和任务都属于先占型的。但是,DSP/BIOS 也为应用编程人员提供了直接存取硬件中断的条件,该资源仅适用于 Linux 内核模式。

  直接存取硬件中断使应用编程人员可在理论上实现底层硬件所支持的最短时延响应。对控制环路等需要绝对最低时延的应用而言,这种精细粒度的硬件中断控制机制通常是一种非常重要的特性。

  受保护的资源访问

  Linux 与大多数通用操作系统的一个基本属性就是用户空间程序与所用的底层系统资源相分离。仅在工作处于监控(如内核)模式下时才允许直接访问存储器和设备外设。

  如果用户程序希望访问系统资源,那么它必须通过称作驱动器的内核模块从内核发出请求。该应用位于用户存储器空间,并将通过虚拟文件访问驱动程序。然后,虚拟文件将应用的请求转至驱动器执行的内核存储器空间。

  Linux 可提供特性极为丰富的驱动器模型,其中包括标准流媒体外设、模块存储设备以及文件系统,甚至还包括网络与基于网络的文件系统。

  驱动器与用户空间应用的分离可实现高度的稳健性。此外,通用驱动器接口上的抽象水平使其便于将数据流传输给串行端口、闪存文件系统或网络共享文件夹,且仅需对底层应用代码稍作更改。

  然而,实现这种灵活性需要付出代价。应用与物理资源的严格分离会加大开销。如果用户空间程序要访问设备外设,则内核模式必须进行环境交换才能处理该请求。

  由于数据是成块访问,而非逐个样本 (sample-by-sample) 访问,因此通常来说这不会造成太大的局限性。这样,内核模式下每次块访问仅需进行一次环境交换即可。

  但是,在某些情况下,应用代码需与物理硬件严格匹配。如果使用 DSP 等对数据吞吐量要求较高且不能容忍停顿的高性能处理器时,通常就会出现此类情况。这时,内核空间的物理资源与用户空间的应用相分离的做法就可能会严重影响系统性能。

  应用与硬件的匹配

  我们不妨使用 TMS320DM643x 处理器架构来研究在执行块视频处理时会遇到的典型情况,该架构采用一个 600 MHz / 4800 MIPS DSP 处理内核以及诸如功能丰富的视频端口子系统等各种多媒体外设。这种硬件通常用于将输入视频流进行 H.264 格式压缩。

  为了充分发挥 DSP 内核的处理能力,处理的数据应从周期操作内部存储器读取,而不是从速度较慢的外部存储器读取。尽管在技术上可以让具有足够快的片上存储器的处理器存储一个或多个完整的视频帧,但这种技术对大多数目标市场来说成本太高。因此,采用可提供 80kB 的单周期操作片上数据存储器的处理器取而代之。

  80kB 虽然小,不能存储完整的视频帧,但 TI 通过模拟检测认为,这样的存储量足够为 H.264与其它视频处理算法提供最佳的面积/性能综合比。

  DSP通过直接存储器存取(DMA)控制器为该存储器提供数据,这种控制器还可用于内外部存储器之间高效传输数据子块,而不会占用处理器内核的周期操作(见图 1)。

图1DSP处理器采用DMA硬件将外部存储器中较小的视频帧子块传输到内部存储器中以供DSP内核进行处理

  从整体系统的角度来说,这种方法可提供几乎相当于具有整个视频缓冲器的芯片所提供的性能,但成本却非常低。不过,为了实现这样的高性能,就需要应用、操作系统以及底层存储器与 DMA 硬件之间的紧密配合。

  首先,应用必须能够区别快速内部存储器与大容量外部存储器。其次,应用必须能够执行许多时间精确的小型 DMA 操作。由于访问 DMA 时发生的所有时延在 DMA 访问每个视频帧时都会放大数百倍乃至数千倍,因而在 Linux 驱动程序模型内高效实现 DMA 操作虽非不可能,但也极为困难。

  这种方法的实际实施可通过 DSP/BIOS 完成,并提供原生 API 来实现应用对内外部存储器的请求,同时也使应用可直接访问 DMA 寄存器,不会产生环境交换损失。

  两种操作系统的优势结合

  尽管众多多媒体应用的大部分处理器周期操作都用来进行信号处理,但能满足消费需求的产品同时还必须执行许多更高级的功能,如用户界面、显示功能、网络以及文件处理等。

  由于上述特性对时间要求不高,因此无需精确控制 DSP/BIOS。这时,Linux驱动程序模型所提供的资源提取功能就可更好地提高灵活性,缩短开发时间,更不用说可获得 Linux 社区丰富的开源应用代码支持了。

  可使 Linux 与 DSP BIOS 操作系统同时运行在同一设备上的解决方案,就是需要使用虚拟程序 (virtualizer) 为系统开发或集成人员提供这两种操作系统的优势(见图 2)。

图2Linux和DSP/BIOS同时运行在DM643xDSP器件上

  虚拟程序作为快速、可预测的交换机可在 Linux 与 DSP/BIOS 操作系统之间实现 DSP 资源。当接收到中断时对 DSP/BIOS 操作系统环境做出推测性交换,能够确保 DSP/BIOS 线程的最佳性能。

  如果新到达的中断对应于 DSP/BIOS 环境中已识别的事件,那么将在已经加载且准备运行的 DSP/BIOS 环境中对其进行处理。

  在虚拟程序支持 DSP/BIOS 的同时,应用可直接访问所需的系统资源,且不会影响(挂起)Linux 环境中保持的用户与内核空间。

  一旦应用完成 DSP/BIOS 环境下的高性能信号处理计算,虚拟机就将强制转回到 Linux环境,以便访问该环境下的更高级特性。

  在虚拟程序的调节下,操作系统之间的交换时间不到 10ms,这使编程人员能达到实时性能要求,相对于只包含 DSP/BIOS 的原生系统而言,性能上也没什么损失。该解决方案对典型多媒体设备的处理资源占用仅约 1.5%。

  双操作系统的更多优势

  DSP/BIOS 操作系统对基于 Linux 的产品进行扩展的最明显优势之一是 :无需移植就可使用成百上千种第三方的相关算法。由于符合 xDAIS 标准,因此可确保第三方算法无缝集成于 DSP/BIOS 环境中。

  DSP/BIOS 操作系统对基于 Linux 的系统进行扩展的另一个优势是:在 DSP/BIOS 环境下执行应用不受 Linux 内核 GNU 通用公共许可证 (GPL) 的限制。

  在实施基于 Linux 的解决方案时,我们有时不是很清楚开发商推出的独特软件知识产权在许可证方面到底有哪些具体要求。通过在 DSP/BIOS 而非 Linux 操作环境下执行 IP,可以避免这方面的法律问题。

  结论

  使用本文介绍的技术,Linux 与 DSP BIOS 可同时运行在统一的 DSP 内核上,这既能够提供 Linux 解决方案的全部功能,又可确保 DSP/BIOS 环境下的高精度与硬件控制。

  编程人员可充分利用适用于 Linux 的应用代码与适用于 DSP/BIOS的信号处理代码,无需针对不同环境进行移植。

  对要在实时嵌入式应用中采用 Linux 特性的设计人员而言,通过虚拟程序升级、同时获得 DSP BIOS 工具套件,将大幅提高信号处理性能,并可显著节省系统资源的成本。

关键字:Linux  实时操作系统 引用地址:采用Linux与DSP/BIOS实施双OS信号处理技术

上一篇:基于FPGA的CCD相机时序发生器的设计
下一篇:ZiiLABS采用微捷码Quartz进行ZMS-05投片

推荐阅读最新更新时间:2024-05-02 20:46

小区防盗报警:Linux如何秒杀Windows?
总线制报警系统的局限性 自总线报警主机问世以来,电子地图软件大多都是采用PC系统加接警软件这种方式,该方式具有信息量大,功能齐全的特点,但这种方式也有缺点。对于中小型总线式报警系统来说,缺点更明显,具体集中如下: 系统不稳定:这主要是Windows操作系统的应用特点带来的。长期运行,Windows会产生垃圾文件,占用系统资源,甚至会造成死机现象,这在实际使用中常常遇到; 病毒感染:由于使用单位的管理问题,使用者可砼会使用PC机做一些其它事情,比如打游戏等,文件的拷贝可能会带来病毒,造成报警管理系统不能正常运行,甚至系统崩溃; 操作不便:部分年纪较大的保安人员对鼠标的熟练应用可能会存在一些问题,再加上软
[安防电子]
ARM Linux外部中断处理过程
ARM Linux外部中断处理过程 最近在学习arm linux的整套外部中断的处理过程,在网上汇总了一些资料,整个过程差不多都了解到了。如果没有这些资料我真是没信心从汇编开始读代码,感谢 奔腾年代的jimmy.lee和 linux论坛的bx_bird。 在下面的的注释中有一些我读代码时遇到的问题,要是大家知道是怎么回事,希望多多回复。 ============================================= 一.ARM linux的中断向量表初始化分析 ARM linux内核启动时,通过start_kernel()- trap_init()的调用关系,初始化内核的中断异常向量表. /* arch/ar
[单片机]
基于实时操作系统的单片机应用系统设计
0.引言 Small RTOS 对RAM 需求小,非常适合单片机这类资源比较少的系统上。RTOS 具有多任务处理,较强的实时性,可裁减的内核,使得实时应用程序的设计、扩展和维护变得更容易。RTOS 思想的引入,一改传统单片机软件设计方法,使其不再是单一线程结构方式,通过应用程序分割为若干独立的任务,RTOS 使得应用程序的设计过程大为简化。本文结合基于单片机的电子存包柜的软件设计,简要分析了Small RTOS 的设计思想及消息队列通信机制的应用。 1. Small RTOS51 的基本原理 Small RTOS51是一个很小的内核,完全集成在KEIL C51编译器中,仅占用较少的程序存储空间,可以在没有外挂数据存储器的51
[单片机]
基于<font color='red'>实时操作系统</font>的单片机应用系统设计
智能汽车的未来战争:车内大生态与车载轻应用
智能汽车底层技术路线之争,正无可避免地成为汽车智能化的核心议题之一。 早前,智能汽车的概念尚不普及,车内信息娱乐体验也并未成为市场主流诉求,成熟的安卓系统为广大车企的智能化主张提供了一种“便宜之计”,大有一统车机“江湖”的势头。 但是,随着“软件定义汽车”的理念愈发深入人心,软件与车载环境及硬件的融合成为关注焦点,安卓系统的局限性因此逐渐显露。 尤其是,特斯拉在Linux上的孤独长征,虽异常艰辛,却逐渐结出果实。加上BBA等豪华品牌力挺,Linux在行业内话语权大增,甚至被认为未来有可能取代安卓,成为车机系统的主导路线。 安卓orLinux —— 难做的选择题 不过,选择安卓还是Linux,这个问题眼下依
[汽车电子]
智能汽车的未来战争:车内大生态与车载轻应用
菜鸟自学ARM:linux下编程获取系统时间和设置时间
获取时间有几种编程方法: 1 #include stdio.h #include time.h main(){ time_t t; struct tm *p; time(&t); p=gmtime(&t); printf( Year :%d\n ,1900+p- tm_year); printf( Month :%d\n ,1+p- tm_mon); printf( Day :%d\n ,p- tm_mday); printf( Hour :%d\n ,p- tm_hour); printf( Minute:%d\n ,p- tm_min); printf( Second:%d\n ,p- tm_sec); printf( W
[单片机]
Linux2.4与Linux2.6内核调度器的比较研究
Linux的内核开发是一个漫长的过程,自2001年11月开发出2.5.0以来,Linux内核的发展十分迅速,作了很多重大的改进,性能也有了很大的提高。内核调度器的改进是最主要的进步之一,本文对比研究了Linux2.4和Linux2.6的调度器,全面剖析了Linux2.6对调度器的改进。 一个成功的调度器的基本要求可以概括为以下三点: (1)减少花在调度上的时间,以增加花在执行程序上的时间; (2)在多处理器系统上,保持处理器的负载平衡; (3)对交互式应用有良好的响应速度。 但是,一个成功的调度器是很难设计好的,因为一个真正投入运行的系统受到很多因素的制约。相对于Linux2.6,Linux2.4的调度器有很多的不
[嵌入式]
Linux 5.19已经添加英特尔13代酷睿Raptor Lake-P图形驱动支持
IT之家 4 月 17 日消息,近日,Linux 5.19 内核增加了多项功能支持,其中一项新增功能是内核 PCI ID 部分中的 Raptor Lake-S 图形驱动程序支持。现在,Raptor Lake-P 的支持也来了。   与英特尔 Alder Lake-P 系列和之前的型号类似,下一代 Raptor Lake-P 系列将适用于轻巧、高性能的笔记本电脑。对该处理器的初步支持已被提交到 Linux 5.19 内核,PCI 设备 ID 已添加到 i915 图形驱动程序。   随着 Linux 5.19 内核中添加了最新的支持,开发人员添加了大约 24 行新代码来激活 Raptor Lake-P 支持,包括 Raptor
[手机便携]
<font color='red'>Linux</font> 5.19已经添加英特尔13代酷睿Raptor Lake-P图形驱动支持
基于ARMLinux的无线音视频对讲系统设计
随着数字化和网络化时代的到来,尤其是宽带无线网络的发展,为音视频这样大数据量传输业务在无线网络上的应用提供了契机。同时由于音视频独特的感官特性,使其相关的应用需求也变得越来越迫切。无线多媒体是多媒体和移动通信这两个领域的技术相互融合的产物,成为当今通信领域的一个热点。鉴于Linux内核的开源性,采用其作为操作系统,从而使整个系统具有更好的实时性和稳定性。整个系统以ARM11为核心处理器、采用新一代视频编解码标准H.264进行编译码,并通过无线网络传输音视频。它充分利用S3C6410微处理器内部集成的多媒体编解码器(Multi-FormatvideoCodec,MFC),有效提高了系统的性价比。整个系统为无线多媒体音视频的传输提供了
[单片机]
基于ARMLinux的无线音视频对讲系统设计
小广播
热门活动
换一批
更多
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

更多精选电路图
换一换 更多 相关热搜器件
更多每日新闻
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved