1 前言
1.1 课题的研究背景
嵌入式Linux是标准Linux在嵌入式领域的延伸,其特点和功能与标准Linux几乎完全相同。Linux是个与生俱来的网络操作系统,成熟而且稳定。Linux是源代码开放软件,任何人都可以修改它,或者用它开发自己的产品。Linux系统是可以定制的,系统内核目前已经可以做得很小。一个带有中文系统及图形化界面的核心程序也可以做到不足 1MB,而且同样稳定(白小明,等,2006)。Linux作为一种可裁减的软件平台系统,是发展嵌入式产品的绝佳资源,遍布全球的众多Linux爱好者又能给予Linux开发者强大的技术支持。正是由于Linux的开源、稳定和健壮以及芯片技术的发展,嵌入式Linux在嵌入式领域得到了越来越广泛的应用。
TMS320DM6441(下简称DM6441)是一款DaVinci架构的数字媒体处理器,是由TI推出的集ARM926处理器和TMS320C64X+DSP内核的高集成度的SOC,集成了为加速数字视频开发而专门设计的协处理器引擎(TI,2010)。DM6441适用于视频电话、车载信息娱乐以及IP机顶盒(STB)等应用和终端设备。在早期,TI有专门的商用Linux开发商MontaVista为DM6441定制开发维护Linux内核,并有全球多家第三方合作伙伴如Ateme,Ittiam,Ingenient开发的高性能Codec(编码解码器),缩短了数字媒体应用产品开发周期并降低了系统成本。
随着嵌入式Linux的应用日益广泛,在时间要求苛刻的应用场合面临着挑战。同样,DM6441在数字媒体应用开发中对操作系统也提出了较高的时间要求。在本项目中,以DM6441为核心控制器设计开发点验钞机产品,该点验钞机设计是按新国家标准GB 16999-2010《人民币鉴别仪通用技术条件》A级产品进行设计,点验钞速度达到每分钟1000-1200张。该点验钞机高标准、高速度和大量数据处理的设计要求对操作系统的时间性能提出了苛刻的时间要求,在产品中使用Linux系统必须考虑Linux的时间性能。因此,有必要对Linux的实时性能进行研究和进一步提高Linux的实时性能。 1.2 研究现状与发展趋势
根据实时性,RTOS(Real Time Operation System,实时操作系统)可分为硬实时系统(Hard Real-Time)和软实时系统(Soft Real-Time)两类(郁发新,2006)。
由于Linux系统本身开始主要是面向桌面,其主要设计标准是方便用户管理计算机资源,追求计算机资源的最大利用率,而不是有确定可预测的实时性能。为了能将Linux
1
应用于实时应用中,国内外一直在对Linux的实时性能进行研究,并对其进行实时化改造,并取得了不少进展和成果。
目前,从嵌入式Linux的发展来看,主流Linux内核1.x、2.2.x和2.4.x版本的Linux内核无抢占支持,直到2.6版本的Linux内核才支持可抢占内核,支持临界区外的内核抢占和可抢占的大内核锁。在此基础上,Linux的实时改造主要归类为内核补丁方式和双内核方式两种方式(黄武陵,等,2009):
(1) 内核补丁方式
内核补丁方式,主要是对Linux内核的软实时化改造,它不改变Linux的API,原有应用程序可在实时化后的操作系统上运行。典型的有早期研究性的Kurt-Linux和Red-Linux,商业版本的MontaVista、TimeSys和Wind River Linux,以及Ingo Monlnar等人开发的实时抢占补丁内核等(黄武陵,等,2009)。
Kurt-Linux是第一个基于普通Linux的实时操作系统。通过正常态、实时态和混合态进行实时和非实时任务的划分。Red-Linux通过任务多种属性和调度程序,可以实现多种调度算法。采用软件模拟中断管理,并在内核插入了许多抢占点,提高了系统调度精度。
MontaVista Linux在低延迟补丁以及可抢占内核补丁基础上,通过开发内核O(1)实时调度程序并对可抢占内核进行了改进和测试,Linux 2.4内核时代,MontaVista Linux作为商业成熟产品在实时性上有较强的优势(黄武陵,等,2009)。MontaVista Linux首先改造了Linux的任务就绪队列RQ,用一个链表数组来表示就绪队列,每一个链表代表一个优先级,并使用RQ位图与队列相对应,以便于更快找到正确的队列。另外,它还增加了一个抢占计数变量和一个TASK PREEMPTED进程状态,以允许抢占任何处于非临界区的进程。MontaVista Linux实时调度器是一个源代码完全开放的Linux模块,在Linux的调度器之前运行,管理所有实时要求的进程。如果不存在实时进程,实时调度器就立即将控制权交给标准的Linux调度器,执行非实时性的进程。它能够提高系统的响应速度,配置多种实时优先级,处理微妙级的实时调度要求(杨卫辉,2005)。
TimeSys Linux通过内核模块的方式也提供了高精度时钟、优先级继承mutex等支持。 2.6版本的主流内核吸收了以上技术,支持No Force Preemption,Voluntary Kernel Preemption和Preemptible Kernel等多种配置选项,分别适合于服务器系统,桌面用户系统和低延迟嵌入式系统。2005年,针对2.6内核MontaVista推出了实时Linux计划,推进了Linux内核实时化进程。随后Ingo Molnar发布了新的实时抢占补丁,并逐渐成为Linux内核实时主流技术,也为包括MontaVista Linux,Wind River Linux采用和补充。
2
(2) 双内核方式
Linux内核实时化双内核方式以RTLinux、RTAI和Xenomai等为典型代表(黄武陵,等,2009),这是对Linux内核的硬实时化改造。其中RTLinux实现了一个微内核实时操作系统支持底层任务管理、中断服务例程、底层任务通信队列等。普通Linux作为实时操作系统的最低优先级任务,Linux下的任务通过FIFO命名管道和实时任务进行通信。当Linux要关闭中断时,实时微内核会截取并记录这个请求,通过软件来模拟中断控制器,而没有真正关闭硬件中断,避免了由于关中断所造成的响应延迟。RTLinux将系统实时时钟设置为单次触发模式,提供微秒级的时钟精度。
RTAI起源于RTLinux,是一个GNU的硬实时Linux扩展,它在技术实现上同RTLinux类似,但更为成熟和完善(杨卫辉,2005;黄武陵,等,2009)。RTAI和RT-Linux的区别在于它适当的在Linux上定义了一个实时硬件抽象层RTHAL(Real-Time Hardware Abstracti on Layer)。它包括一个中断向量的结构和开/关中断的功能。其实时任务能在任何时刻中断普通Linux任务,两者之间通过非阻塞队列进行通讯。RTHAl将RTAI需要在L i nux中修改的部分定义成一组程序界面,RTAI只使用这组界面和Linux沟通。这样,RTAI将直接修改Linux内核的代码减至最少,具有更好的可移植性。
Xenomai以RTAI为基础,也称RTAI/Fusion。采用了Adeos微内核替代RTAI的硬件抽象层(Karim Yagbmour,et al,2009;黄武陵,等,2009)。其特色还在于模仿了传统RTOS的API接口,推动传统RTOS应用在GNU/Linux下的移植。类似还有基于Fiasco微内核的L4Linux等开源项目。
2.6版本Linux内核实时性能有一定增强,双内核方式的Linux实时化技术也在不断发展中。原来由FSMLab维护的RTLinux,其版权在2007年2月被Wind River购买,RTAI支持x386等体系结构,但由于其代码较难维护、bug较难调试等原因,许多开发者加入了Xenomai项目。Xenomai支持最新2.6版Linux,相比之下代码相对稳定和可维护,开发模式较活跃(黄武陵,等,2009)。虽然目前双核方案是唯一的硬实时解决方案,并有大量的硬实时应用.但双核方案还存在一些问题:硬实时任务HRTT(Hard Real-Time Task)不能使用Linux系统调用,即Linux丰富的系统资源不能被HRTT利用;系统设计必须面对两个独立的层次:不能用Linux系统调用的HRTT和可采用Linux系统调用的一般任务(陈祖爵,等,2009)。
内核补丁方式的Linux实时化技术在2.6版内核基础上做了大量改进,使得内核中除了中断关闭和IRQ线程分派、调度和上下文切换之外的绝大部分代码都可以被抢占,不
3
可抢占的自旋锁保护临界区从一千多个减少到几十个,使得内核实时性得到极大的提高, 获得社区广泛支持并逐渐成为Linux实时化主流技术(黄武陵,等,2009)。
另外,为了评估Linux的实时性能,人们提出了Rhealstone法,进程分派延迟时间法和三维表示法等测试方法,并开发了Timepegs,Intlat,Schedat,Amlatt和Lmbench等测试工具(朱响斌,等,2004;李庆诚,等,2005),后文会进行相应的详细介绍。 1.3 研究目标与内容
尽管对Linux的实时性能有众多研究和测试,但多数是在理论和算法层面上,而对具体结合DaVinci系列处理器进行相关的研究测试比较少。本文最大的特色是结合TI推出的基于DaVinci架构的TMS320DM6441来对嵌入式Linux的实时响应性能进行研究分析,并通过实验测试来验证。
本文先在DM6441上移植MontaVista Linux,对MontaVista Linux 2.6.18内核的实时响应特性进行深入分析,并利用软件编程和结合示波器的方法来测试MontaVista Linux 2.6.18的任务切换时间和中断响应时间。通过对数据的比较分析来验证嵌入式Linux的实时性能。 1.4 本文结构
本文的论文结构如下:
第1章介绍了课题的研究背景,目前国内外对嵌入式Linux实时性能的研究现状和发展趋势,以及本文的研究目标和内容。
第2章介绍了DaVinci技术,详细阐述DaVinci平台的软硬件平台架构,介绍了MontaVista Linux的发展以及其对实时系统的影响和贡献。
第3章介绍了衡量嵌入式操作系统实时性能的常见指标,介绍了嵌入式Linux主流的实时化改造方法。本章结合这些指标和实时化方法对MontaVista Linux 2.6.18内核的实时性进行深入的分析。
第4章详细介绍了常用的几种实时性能测试方法,实验软硬件平台的设计,并针对Linux的任务切换时间和中断响应时间分别设计了软件编程和结合示波器的测试方案。
第5章介绍了实验平台的搭建,包括开发环境的搭建和MontaVista Linux的移植,然后对Linux的任务切换时间和中断响应时间进行测试和记录数据。最后对测试数据进行整理分析,得出结论。
第6章对本文所做的工作进行了总结,并对提高DaVinci平台上的Linux实时性能和实时应用程序的开发作了展望。
4
2 DaVinci技术与嵌入式Linux
2.1 DaVinci技术简介
DaVinci技术是TI新一代数字媒体产品的半导体技术。DaVinci技术由DaVinci处理器(TMS320DM6441)、DaVinci软件(MontaVista Linux)、DaVinci开发工具和DaVinci技术系列支持系统等组成(王丹,2007)。作为一种专门针对数字音视频应用、基于信号处理的解决方案,DaVinci系列产品能为音视频设备制造商提供集成处理器、软件、工具等支持,以简化设计进程,加速产品创新。 2.1.1 DaVinci硬件平台
DM6441是TI 在2005年进行市场战略转型时率先推出的基于DaVinci技术的一款数字媒体处理器。该处理器采用了ARM+DSP+CP(注:CP即Co-Processor协处理器)的SoC架构,其中ARM采用了297MHz的ARM926EJ-S内核,DSP采用了594MHz的C64x+内核,CP是一个可以支持视频和图像编解码以及其它常用信号处理算法的VICP(Video-Image-Co-Processor)加速器。图1(TI,2010)是DM6441处理器的结构示意图,DM6441通过芯片内部资源交换中心SCR单元通道扩展了程序和数据接口、系统接口、串行接口以及高速总线接口,并且支持DDR2存储器、ATA硬盘和众多存储卡接口,还支持通用的USB2.0接口和TI特有的VYLNQ接口(王丹,2007;TI,2010)。
VICPSystemControlClock GenPwr/SlpPin MuxVideo Processing SubsystemARM926EJ-SSubsystemC64x+DSPSubsystemFront EndCCDCResizerHistogramPreviewBack EndOSDVENC4xDACSwitched Central Resource(SCR)PeripheralsEDMASerial InterfacesAudioI2CUARTSrealx3SPIPortUSB2.0PHYConnetivityVLYNQInterfaceEMACMDIOTimerx2SystemWDTimerPWMx3Program/Data StorageAsync DDR2ATA/EMIF/NAND/16b/32bCFSmartMediaMMC/SD
图1 DM6441处理器结构示意图
5
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库Linux系统实时响应特性分析与实验验证——基于Ti达芬奇DSP系列TM(2)在线全文阅读。
相关推荐: