嵌入式实时处理(共8篇)
嵌入式实时处理 篇1
0 引 言
SDRAM作为大容量、高速度、低价格、低功耗的存储器件, 在嵌入式实时图像处理系统中具有很高的应用价值, 但其控制机制复杂, 因此需要设计控制器, 以简化系统对SDRAM的访问。虽然目前许多微处理器及DSP都提供了与SDRAM的直接接口, 但这种通用控制器的执行效率很低, 难以满足实时系统对速度的要求[1,2]。鉴于此, 介绍一种基于FPGA设计而实现高效SDRAM控制器的方案。结合实际系统, 该方案将SDRAM配置为全页突发模式, 并采用异步FIFO作为FPGA与SDRAM间的数据缓冲器。分析表明, 全页突发操作模式能够很好地发挥SDRAM高速读写的性能;同时, 设计成乒乓操作结构的异步FIFO, 在保证数据连续性的同时, 更能降低低速前端对高速SDRAM访问的影响。
1 SDRAM简介
1.1 SDRAM的特点
相对于其他存储器件, SDRAM具备以下特性[3]。
(1) 上电后必须通过一个初始化进程配置模式寄存器的值, 以决定SDRAM的工作模式;
(2) 基于三极管和电容的存储结构SDRAM决定了必须对其定时执行刷新操作, 以免数据丢失;
(3) 访问SDRAM时, 先由Active命令激活要读写的Bank及行并锁存行址, 然后在Read/Write命令有效时锁存列址。当访问当前Bank的其他行时, 须先使用Pre-charge命令关闭当前行;
(4) SDRAM的内部操作由命令控制, CSN, RASN, CASN和WEN在时钟上升沿的状态决定了具体的操作, Bank及行列地址线在部分操作中作为辅助参数输入。
1.2 全页 (Full-page) 模式突发操作
进行大量数据读写时, 全页突发模式是充分利用SDRAM性能, 提高读写速度的良好选择[4]。
激活Bank的某一行后即可对该行进行读写操作。写入数据在发出写命令的当前时钟周期即可有效, 因此写操作可以在单周期内完成;而读出数据将在发出读命令之后CL (CAS Latency) 时钟周期才能输出到总线, 即随机读取单个数据至少需要1+CL时钟周期。可见, 随机读操作会大大降低系统效率。若采用全页突发方式, 对于列宽度为n的SDRAM存储器, 整页输出所需的总周期数为2n+CL, 平均单个数据输出所需周期为 (2n+CL) /2n⧋1, 由此读操作延迟对系统效率的影响可降至最低。
2 SDRAM控制器设计
实际的实时红外热成像系统采用了ISSI公司生产的型号为IS42S16160B的SDRAM作为数据缓存, 其存储单元组织结构为4 Bank×8 192行×512列×16位[5]。
SDRAM控制器主要由时钟锁相环模块、初始化模块、刷新计数模块、数据通路模块、输入/输出FIFO模块、FIFO接口模块和主控制器模块组成, 如图1所示。
在该SDRAM控制器中, 片上时钟锁相环模块的作用是将输入时钟倍频为所需要的时钟, 并根据电路板布局进行移相, 以保证在时钟上升沿准确采样命令及数据。初始化模块负责产生规定了时间、顺序和个数的控制命令对SDRAM进行配置, 并在进程结束后发出iniend信号, 以启动主控制器。刷新控制模块的作用是每隔最长7.812 5 μs发出刷新请求信号refreq, 并接收主控制器发出的refack信号重置刷新计数器。数据通路模块用于控制数据的有效输入/输出。
由于系统对控制器中读写操作的数据连续性要求很高, 且读写速度比较低, 而控制器对SDRAM中读写操作的数据连续性并无要求, 且读写速度很高, 因此需要使用异步FIFO作为输入/输出缓存[6]。输入/输出FIFO的数据宽度为16 b, 深度可视系统需要而定, 但应大于一次读写的数据长度LENGTH。另外, 为配合SDRAM的全页突发模式, 并充分发挥SDRAM高速读写的特点, FIFO采用了乒乓操作的流水线结构。现以输入FIFO为例, 当某个输入FIFO写满LENGTH数据时, 主控制器从该输入FIFO读出数据写入SDRAM, 同时系统向另一个输入FIFO写入数据。
FIFO接口模块的主要信号如图2所示。其作用是将FIFO的状态信号转换为主控制器的读写请求信号, 并控制切换输入/输出的两个FIFO。以向SDRAM写入数据为例, 若某个输入FIFO的写入数据个数标志信号inwrused与LENGTH相等, 则向主控制器发出写SDRAM请求, 并将该输入FIFO中的LENGTH数据一次写入SDRAM, 同时控制系统向另一个输入FIFO写入数据。
SDRAM支持多种工作模式, 将其全部包含在主控制器状态机中会大大增加设计难度, 并降低运行速度。考虑到一些模式在实时图像处理系统中并不需要, 所以对SDRAM主控制器的状态进行了简化[7,8,9], 如图3所示。
对该主控制器有以下两点需要说明:
(1) 器件仅在上电后进行一次初始化配置, 进入正常工作状态后就不再改变工作模式。初始化时序仿真结果, 如图4所示。
(2) 当SDRAM工作在全页突发模式时, 读写操作所访问的地址将在页内循环, 直至收到Burst-Terminate命令或Pre-charge命令。由于在Burst-Terminate命令后还需发出Pre-charge命令, 才能保证芯片正常工作, 因此设计采用了Pre-charge命令终止页模式。为保证LENGTH数据中正确读出或写入SDRAM, 发出Pre-charge命令时必须满足一定的时序要求。对于读操作, Pre-charge应在最后一个有效输出数据之前CL-1时钟发出;对于写操作, Pre-charge应在最后一个有效输入数据之后tDPL时间发出。图5和图6给出SDRAM控制器的读写操作时序仿真结果, 其中, OUTVALID及INVALID信号分别表明输出及输入数据有效。
3 结 语
针对实时图像处理系统的特点, 定制SDRAM控制器。在Altera公司的主流芯片Cyclone II (EP2C70F896C6) 上成功地使用了Verilog HDL编程语言[10], 其占用355个逻辑单元 (不到FPGA总逻辑资源的1%) ;4个M4K块和1个PLL锁相环。在320×240的实时红外热成像系统中, 该SDRAM控制器的工作状态良好, 并可通过改变LENGTH参数而方便地用于任意分辨率的实时图像处理系统中, 可移植性强。
摘要:介绍一种用于嵌入式实时图像处理系统的SDRAM控制器的实现方案。根据实时系统对数据传输速率及连续性的要求, 将SDRAM配置为全页突发操作模式, 并采用异步FIFO作为FPGA与SDRAM间的数据缓冲器。为配合SDRAM的全页操作模式, 并充分利用其高速读写性能, 将FIFO设计为基于乒乓操作的流水线结构, 实现了数据的无缝缓存。将该方案用于实时红外热成像系统, 经实验结果表明, 该SDRAM控制器执行效率高, 占用资源少, 可移植性强。
关键词:SDRAM,控制器,嵌入式,实时系统
参考文献
[1]Altera Inc.SDR SDRAMController White Paper[Z].2003.
[2]段然, 樊晓桠, 张盛兵, 等.基于状态机的SDRAM控制器的设计与实现[J].计算机工程与应用, 2005 (17) :110-112.
[3]曹华, 邓彬.使用Verilog实现基于FPGA的SDRAM控制器[J].今日电子, 2005, 10 (1) :11-14.
[4]林志煌, 解梅.一种简易SDRAM控制器的设计方法[J].现代电子技术, 2008, 31 (16) :18-20.
[5]IS42S16160B SDRAMDatasheet[EB/OL].http://www.is-si.com.
[6]王骞, 丁铁夫.高速图像存储系统中SDRAM控制器的实现[J].液晶与显示, 2006, 21 (1) :48-51.
[7]张林, 何春.高速SDRAM控制器设计的FPGA实现[J].电子科技大学学报, 2008, 37 (1) :109-112.
[8]刘云清, 佟首峰, 姜会林.利用FPGA实现SDRAM控制器的设计[J].长春理工大学学报, 2005, 28 (4) :47-50.
[9]牛戴楠.基于FPGA的红外图像预处理系统的研究与设计[D].武汉:武汉理工大学, 2008.
[10]夏宇闻.Verilog数字系统设计教程[M].北京:北京航空航天大学出版社, 2005.
嵌入式实时处理 篇2
随着后PC时代以及网络、通信技术时代的到来,大量的计算机专业人员进入了嵌入式应用领域;然而,有大量的嵌入式系统应用是以单片机的形式,应用在传统的电子技术领域中。因此,以计算机领域人员为主体的,远离对象系统的嵌入式系统的计算机工程应用模式,和以电子技术领域人员为主体,与对象系统紧耦合的电子技术应用模式产生了概念上的碰撞。许多电子技术应用模式熟视无睹、习以为常的概念,在计算机工程应用领域中作为一个新概念提出时,常常使电子技术应用领域中的人员感到莫明其妙。以前的“嵌入式系统”概念是其一,而今“嵌入式系统的实时性”又是一例。
1 什么是电子系统的实时性
任何一个电子系统都可看成是一个激励-响应系统。每个特定的电子系统都有一个从激励输入到响应输出的时间,即激励-响应周期T,它表现为系统的响应能力。如果系统的响应能力T能满足嵌入对象所规定的响应时间ta要求,即T≤ta,这个系统便是实时的电子系统。
那末,什么是嵌入对象所要求的响应时间ta呢?通常,不论哪一种电子系统,实现对象体系的控制管理要求,这些控制管理通常都会有一定的时间限制。例如,一个振动监测系统,对振动波形的检测周期必须满足采样定理要求;饮料生产线上的计量、馐控制系统,必须在一个工位的移动周期里完成秤量、封口的控制输出;对于超市中使用的电子秤,在秤量时,希望能立即显示出重量和计价金额;我们日常使用的计算机,在敲击键盘时,也要求在显示屏上快速地出现键盘输入结果。因此,几乎所有的电子系统都有一个客观的响应时间ta要求。这就电子系统普遍存在的实时性问题,即要求T≤ta。
2 三类电子应用系统的实时性
ta是电子系统具体应用时,客观应用环境提出的具体响应时间要求;不同类型电子系统的激励-响应时间T的不同,形成不同的实时性问题。我们可以按不同的激励-响应时间T的特点,将电子系统分为经典电子系统、通用计算机系统与嵌入式系统,来讨论不同类型的电子应用系统不同的实时性特点。
①经典电子系统:不含计算机的纯电子电路系统,例如,测量放大器、电子计数器、温度指示器(由ADC、译码器、LED显示器构成)等,电路的动态特性决定了系统响应能力T的大小。经典电子系统是一个激励-响应系统,从激励到响应的时间完全取决于电子在电路中的运动过程,因而,它具有极短的、相对固定不变的,从激励到响应的时间周期T。在大多数经典电子应用系统中,由电路的动态特性决定了T值的大小。一般情况下,应用系统的T远小于嵌入对象系统的响应(ta)要求,因此,在经典电子应用领域中,应用工程师的头脑中没有“实时性”名词的概念,而对一些极快速响应要求的应用系统,如振动测量系统,它的实时性要求常常反映为电路系统的“频率响应”要求。
②通用计算机系统:是一个人机交互的激励-运行-响应系统。它的激励-响应时间T表现为电路系统的激励-响应时间tc与软件运行时间ts,而电路系统的激励-响应时间与软件运行时间相比为高阶小量,因而软件运行时间形成了T的主要成份,T=tc+ts≈ts。由于通用计算机系统只使用在人机交互环境中,对象(人)提出的响应时间ta要求,只是一个期望值(尽量快),而这种欲望一方面表现为永无止尽,另一方面又表现出现实的可容忍性。因此,通用计算机系统是一个非实时的电子系统,而快速性成为通用计算机系统发展的永恒主题。
③嵌入式系统:由于计算机的嵌入,嵌入式系统也是一个激励-运行-响应的电子系统。但是,它与嵌入对象体系交互时,要满足事件交互过程的响应要求。一方面,由于计算机的嵌入,嵌入式应用系统有十分可观的激励-响应时间ts,导致系统实时能力的降低;另一方面,由于嵌入对象体系的多样性、复杂性,不同的对象体系会提出不同的响应时间ta要求。因此,在嵌入式应用系统的具体设计中,必须考虑系统中每一个任务运行时,能否满足ts≤ta的要求,这就是嵌入式系统的实时性问题。
嵌入式实时处理 篇3
例如,胎儿性别屏蔽项目中,要对实时视频进行性别部位的检测和屏蔽,若采用单DSP则会出现漏帧或视频不流畅;应用于高速运动物体跟踪时,单DSP无法实现实时运动物体跟踪,例如汉王科技的运动检测和海康威视运动检测,都不能实时检测,即使检测也会出现漏检现象和视频不流畅。当处理4CIF或者更大图像时,单DSP的处理能力又会下降,虽然可以将图像缩小进行处理,但是缩小图像则会丢失一些重要的图像信息,使得智能识别准确率下降。
针对上述情况,设计一种能够实现进行快速信号处理和数据交换的实时图像处理系统很有必要。
1 系统结构
1.1 结构
系统功能:利用S3C6410进行数据整合、任务调度、人机交互;利用TMS320C6416进行算法运算;每个DSP与FPGA都是无缝连接。设计中利用FPGA实现的FIFO进行与DSP之间的高速数据传输以及ARM对多个DSP的任务调度处理等。
系统结构如图1所示。系统由1个ARM11处理器S3C6410(主处理器)与4个TMS320C6416(720 Hz)(从DSP)通过FPGA(EP2C70~7)实现互联的ARM+多DSP的嵌入式图像处理系统。所有的DSP都通过外部存储器接口(EMIF)与FPGA无缝相连,每个DSP之间的数据传输是通过FPGA内部互联FIFO网络实现。
图2所示是一种互联的FIFO网络结构和高速数据传输网络结构。主处理器通过DMA数据访问模式与FPGA的双口FIFO连接,从而实现与FPGA通过FIFO连接的所有从DSP进行通信,所有FIFO都是双向的,FIFO及其读写控制逻辑都在FPGA内部实现。
FPGA中的FIFO读写状态控制、各从DSP之间通信的同步握手信号、S3C6410处理器数据请求等逻辑信号,都是由每个DSP的一部分GPIO口与EP2C70的I/O口连接实现。
1.2 特点
系统结构具有可重构特性,在硬件平台不变情况下,只需通过改变FPGA程序代码就可以完全改变系统结构,以适应不同的算法结构。如图2中屏蔽DSP1~DSP4之间的互相通信,即可组成主从并行的流水线结构;若需要串行的流水线结构,只需将DSP1~DSP4的其中一个与S3C6410通信即可;若需要设计更复杂的串并混合性结构,也只需改变FPGA的代码就能够很容易地实现。
2 S3C6410的DMA与FPGA的软FIFO接口实现
2.1 S3C6410简介
S3C6410是三星公司的产品采用ARM1176JZF-S核,包含16 KB的指令数据Cache和16 KB的指令数TCM;ARM Core电压为1.1 V时,可以在553 MHz下运行。在1.2 V时,可以在667 MHz下运行。通过AHB和APB组成的64/32 bit内部总线与外块相连。SROM Controller:6个片选,支持、ROM和NOR Flash以及支持8/16 bit,每个片选支持128 MB。JPEG Codec:支持JPEG编解码功能,最大尺寸为4 096×4 096。2D GRAPHICS:2D加速,支持画点/线,bitblt功能和Color Expansion。3DGRAPHICS:3D加速。
S3C6410可支持4个DMA控制器,用于系统总线内部或与外围总线之间的数据交换,每个控制器包含8个通道,支持8/16/32 bit传输。现以外部DMA请求为例简要介绍DMA的工作过程。图3所示为DMA基本工作时序。
当需要进行DMA操作时,外部DMA请求引脚Xn XDREQ置为低电平。此时DMA控制器向CPU发出占用总线的请求,当总线请求成功后,Xn XDACK引脚变为低电平,表示CPU已经将总线使用权交给DMA控制器,可以进行数据传输。当数据传输完成后,应答信号Xn XDACK置为高电平,通知CPU完成一次DMA操作。
S3C6410提供了三种不同的DMA操作模式:单服务命令模式、单服务握手模式和全服务握手模式。在利用DMA进行数据传输前必须对其相关寄存器进行设置,包括源地址寄存器、目的地址寄存器和各自的控制寄存器以及配置DMA模式的控制寄存器等。
2.2 FPGA及其实现FIFO[2]
采用FPGA实现多时钟电路系统时,需要处理不同的时钟域之间速率匹配问题,可利用FPGA内部生成的异步FIFO来处理。异步FIFO主要由双端口RAM、写地址产生模块、读地址产生模块、满空标志产生模块组成。双端口RAM由FPGA的Block RAM块构成,FPGA采用Atera公司的EP2C70-896C7,其Block RAM读写时钟频率可以达到216.73 MHz,因此选用Block RAM作为存储体,不仅速度快,而且设计简单。设计时,一个端口配置成写端口,另一端口配置成读端口,然后把Block RAM的管脚与相对应的控制信号相接即可。读写地址通过FPGA芯片内部的二进制进位逻辑产生,以对应Read_En/Write_En作为使能信号在读/写时钟的控制下进行计数。空或满标志可以由读或写地址的相对位置来获得。本系统采用2个FIFO组成一路数据传输通道,双向FIFO的设计图如图4所示。
2.3 S3C6410的DMA与软FIFO接口实现
根据DMA接口原理,设计S3C6410与FPGA之间的接口简图如图5所示。
读时钟由ARM的时钟输出引脚CLKOUT0提供。CLKOUT0根据S3C6410内部寄存器的设置可以输出不同的时钟频率。FIFO输出数据经过以n GCS4为选通信号的缓冲器(Buffer)后接到S3C6410的数据总线上。n GCS4是S3C6410存储空间中BNAK4的片选信号,当S3C6410对该信号对应存储空间进行读写操作时,BANK4为低电平,其余时间均为高电平。
FIFO的写请求信号由S3C6410与FIFO的满状态共同控制。当S3C6410发出START信号并且FIFO未满时,写请求信号为高电平,FIFO在写时钟的控制下写入数据;当START信号撤销或者FIFO满时,写请求信号变为低电平,停止写操作。
FIFO的读操作与S3C6410的DMA操作配合进行。系统采用单服务命令模式的DMA操作,每次传输一个字节的数据。当DREQ0信号变为低电平时,DMA操作开始,每次传输一个字节后产生一个DACK0应答信号,而且只要DREQ0为低电平DMA操作就继续进行,直到DMA控制寄存器中的计数器为0,产生DMA中断。根据上述时序特点,将FIFO的空信号作为DMA的请求信号DREQ0。当CCD输出的数据写入FIFO中时,空信号跳变为低电平启动DMA操作,同时以DACK0信号作为FIFO的读请求。每次DMA传输完成后应答信号使FIFO的读指针移动一位,以实现数据的快速准确采集。
3 图像采集模块
用可编程视频输入处理器SAA7113H进行视频信号处理。SAA7113H内部集成了强大图像色度、亮度处理功能以及多种输出模式[3];有32个工作寄存器,在系统复位时,必须通过I2C总线对其进行初始化。本系统使用灰度图像,没有使用色度信号,所以数据线为8 bit。SAA7113H与FPGA的接口如图6所示。
在本系统中,FPGA内部需要设计一逻辑时序完成图像数据的采集,数据的传输采用异步FIFO完成。采用此方案可以解决CCD输出数据频率与从DSP和ARM不匹配的问题。
4 DSP的EMIFA与FPGA实现的软FIFO接口
4.1 DSP的EMIFA接口[4,5]
DSP(TMS320DM6416T)之间的通信都是通过外部存储器接口(EMIFA)访问片外存储器进行的。EMIFA由64 bit数据线D[63:0]、20 bit地址线A[22:03]、8 bit字节使能线BE[7:0]、4 bit地址区域片选线/CE3~/CE0和各类存储器的读/写控制信号组成。TMS320DM6416T的每个/CEx空间都有256 MB寻址空间,并且可配置为与SRAM、SDRAM、ZBTSRAM、Flash、FIFO等各类存储器接口。EMIFA读/写各类存储器的时钟可由软件配置为EMIF的AECLKIN、CPU/4或CPU/6。本设计配置为EMIF的AECLKIN,且为133 MHz。
4.2 EMIF与软FIFO接口实现
DSP之间通过EMIF口与FPGA实现的异步FIFO进行通信。EMIF异步接口的每个读/写周期分为三个阶段:建立时间(SETUP)、触发时间(STROBE)、保持时间(HOLD),且每个阶段时间可编程设置,以适应不同的读写速度。DSP读写异步FIFO的时序图分别如图7、图8所示[6]。DSP读写FIFO控制信号由FPGA产生,其逻辑关系如下:
另外,写FIFO的DSP要相应为满状态标志,读FIFO的DSP则相应为半满状态标志。
5 DSP之间数据通信[7]
为了设计一款通用性比较强的图像处理平台,各处理器间的数据传输必需达到通用性,这样可以针对不同系统的应用,只须修改图像处理算法代码,而不须要修改各处理器之间的通信。具体设计分为如下两部分:
(1)数据通信协议说明(x=0,1,2,3)
Se/Re(Send/Receive)[0]:ARM通过FPGA请求DSPx接收(该数据位为1)或发送。
ARM[1:3]:该段数据为DSPx向FPGA发出请求数的DSP编号。
DSPx[4:6]:ARM处理器向FPGA提出要求响应的DSP的编号。
Da_Le(Data_Leng)[7:18]:ARM请求DSPx接收或发送的数据长度。
Da_Un(Data_Unit)[19]:该标志位表示是否按照Data_leng*K(1K=1 024 bit)的数据长度传输数据,若为1,表示接收或发送数据长度为Data_leng*K(1K=1024 bit);若为0,表示接收或发送数据长度为Data_leng。
Da_Bl(Data_Block)[20:27]:该数据表示ARM请求DSPx接收或发送Data_Block个Data_leng K或Data_leng数据块。
Da_Ch(Data_Result)[7:18]:ARM请求DSPx接收或发送的算法代码中间运行结果或最终结果,此数据段与Data_Leng共用。
In_Pr(Interrupt_Priority)[27:30]:设置DSP的中断优先权。
Ot_Use(DSP_State)[31:34]:DSP状态标志信息。
Pa_Ch(Parity_Check)[35]:奇偶校验位。设SUM,若为奇数,则Parity_Check=1;否则为0。
Ot_Use(Other_Use)[36:47]:用户自定义数据段。
(2)数据通信主要流程
首先,FPGA接收到ARM[1:3]处理器的请求信号,然后根据Data[0:34]计算出校验数据SUM与Parity_Check[35]比较,若不等,则FPGA向ARM处理器重新发请求信号;若相等、且DSPx为空闲状态时,则FPGA由Send/Receive向DSPx发送接收或发送数据请求,并将采集到的图像数据传输给DSPx,同时使能对应的FIFO数据通道;DSPx根据收到的数据信息,同样计算出校验数据,若与Parity_Check相等,则根据Send/Receive标志位,采用EDMA方式向EMIF口接收或发送Data_Block*Data_leng(或Data_Block*Data_leng K)数据。如果FPGA同时接收到2个或2个以上的DSPx数据传输请求信号,则FPGA根据Interrupt_Priority端口数据判其执行的先后顺序。
6 系统的性能分析[7]
影响系统性能的主要因素有:ARM处理器协调工作的响应速度、DSP处理数据的速度、数据在多处理器之间的传输速度。前两个因素主要由处理的主频和处理能力决定,因此不做测试。数据在处理器之间的传输速度则是本设计的主要部分之一,而数据传输带宽和数据传输延迟是衡量数据传输速度的重要指标。
若系统中DSP读写FIFO的带宽为B(单位时间内DSP间的数据传输量),则:
其中,f=133 MHz是FPGA内部软FIFO的读写时钟;w=32 bit是软FIFO数据总线宽度。本设计配置Nsetup=Nstrobe=1,Nhold=0,因此B的理论值为266 Mb/s。但DSP间数据传输的实际带宽主要受握手时间τhandshake、写FIFO到半满时间τfifo_hf、响应中断启动读写操作时间τgpio_interr、接收数据时间τdata_receive四个延迟时间影响。其中,τhandshake、τgpio_interr由系统时钟决定,因此本文假设该值为固定的,而τfifo_hf是由于使用FIFO缓存数据引入的额外时间。FIFO的深度越长,τfifo_hf越大,则实际带宽Bf就越小;反之则越大。为了保证DSP间正确地数据通信,则要求DSPx开始从FIFO读取数据时,ARM还没有写满FIFO,即Df表示FIFO深度,可得
表1是ARM处理器分别与DSP1~DSP4传输不同大小数据时测得的平均延迟时间,图9是根据测试数据绘出的实际带宽Bf曲线。可以看出,随着传输的数据增大,Bf逐渐逼近B的266 MB/s的理论值。
本文基于ARM、FPGA、多DSP设计的实时图像信号处理系统,使用FPGA芯片设计的一种高速数据传输网络互联结构,使得该系统的数据通信能力和DSP的运算能力能很好地匹配;通过数据传输控制总线,使得数据传输十分灵活;利用S3C6410对图像数据传输的调度,图像数据处理任务的分配,图像保存、显示、网络传输;利用4个TMS320C6416T对图像做算法处理。经测试,算法代码在单DSP(TMS320C6416T 1 GHz)平台下其处理时间小于0.2 s,而在本文平台下其处理时间小于40 ms,可以满足实时要求。另外,该系统可广泛适用于其他图像处理、电子对抗、雷达信号处理等各个领域。
摘要:介绍了一款通用的嵌入式图像处理系统的设计方法。系统采用FPGA设计FIFO实现ARM与多DSP的高速数据传输方法。实验结果表明,所设计的多DSP协同工作的实时嵌入式图像处理系统,其工作性能稳定、数据处理能力强,适用于高端的雷达信号处理、电子对抗、超声图像处理等场合。
关键词:ARM11,TMS320C6416T,FIFO,FPGA,多DSP嵌入式系统
参考文献
[1]曹理发.尹勇.刘恒辉,等.基于ARM和DSP的视频监控系统设计与实现[J].电子器件,2009,32(1).
[2]Cyclonce Inc.Cyclone II device handbook.2005.
[3]龙再川,赵凯生,洪明坚,等.ARM系统中DMA方式在数据采集中的应用[J].国外电子元器件,2007(2).
[4]Texas Instruments Incorporated.TMS320C6414,TMS320C6415,TMS320C6416FIXED-Point digital signal processor,2007.
[5]李方慧,王飞,何佩琨.TMS320C6000系列DSPs原理与应用(第二版)[M].北京:电子工业出版社,2005.
[6]Texas Instruments Incorporated.TMS320C6000 EMIF toexternal FIFO interface.1999.
嵌入式实时系统开发的正确选择 篇4
随着计算机技术的迅速发展和芯片制造工艺的不断进步,嵌入式系统的应用日益广泛:从民用的电视、手机等电子设备到军用的飞机、坦克等武器系统,到处都有嵌入式系统的身影。在嵌入式系统的应用开发中,采用嵌入式实时操作系统(简称RTOS)能够支持多任务,使得程序开发更加容易,便于维护,同时能够提高系统的稳定性和可靠性,这已逐渐成为嵌入式系统开发的一个发展方向。
嵌入式操作系统是一种支持嵌入式系统应用的操作系统软件。它是嵌入式系统(包括硬、软件系统)极为重要的组成部分,通常包括与硬件相关的底层驱动软件、系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器Browser等。嵌入式操作系统具有通用操作系统的基本特点,如能够有效管理越来越复杂的系统资源;能够把硬件虚拟化,使得开发人员从繁忙的驱动程序移植和维护中解脱出来;能够提供库函数、标准设备驱动程序以及工具集等。与通用操作系统相比较,嵌入式操作系统在系统实时高效性、硬件的相关依赖性、软件固态化以及应用的专用性等方面具有较为突出的特点。有些嵌入式系统需要使用操作系统,有些则用单个程序实现整个逻辑,但所有嵌入式系统提供的功能都要比通用计算系统更专业。
1 嵌入式系统特性
嵌入式系统的设计挑战是使嵌入式系统的独特性能与设备的特殊约束条件相一致。以下是一些嵌入式系统的重要特性:
1.1 资源有限性
嵌入式计算不仅需要网络快速、一致的计算,而且也要求系统能够井然有序地将其执行代码和数据存储在一个“共同”的“狭小”的空间内。
1.2 鲁棒性
嵌入式计算不仅要求系统迅速而有效地计算,而且还要求在某些计算单元出现错误的时候,系统仍然能够继续正常运行。
1.3 实时性
嵌入式系统的计算结果,不仅依赖于系统的逻辑运算的正确性,而且也依赖于这个运算结果的计算时间。
1.4 冗余度
在嵌入式系统具有足够的冗余度之后,系统的“初始敏感性”对于其“最终计算结果”的影响就变得微乎其微了。
1.5 结构性
对于嵌入式系统而言,其结构复杂性的趋势表明:
(1)系统结构越简单越有效(The simplest is thebest);
(2)系统结构越复杂越稳定(More complex is more stable)。
1.6 简约性
当简约一个嵌入式系统时,系统剩下的功能之间的互动关系就会变得越来越强;当系统的功能被简约之后,外来的入侵者之成功的概率就会变得越来越大。
1.7 保育性
如果在嵌入式系统中要想保留某个系统功能,最好是将所有的其他功能都看成是“神圣不可侵犯的”。系统的功能被移出(灭绝)或者生成(入侵),一定会造成整体(群集)结构及其动态性能上的重大转变。
1.8 组织性
嵌入式互联网(embedded Internet)最重要的往往不是网络中个体设备的特质,而是存在于网络中的整体秩序,即网络秩序。在一个高冗余度网络中,设备的单一作用已经不再能够构成影响到系统整体性能的主要因素,而起主要作用的是所有结点及其所构成的连结特征。
1.9 网络性
由一群设备相互作用的嵌入式Internet结点所构成的网络,其整体所表现出的性质,往往与个别结点的性质没有重大关系。
1.1 0 消息性
保证查寻消息:它具有严格的时间敏感或者基本常态系统操作要求,这类消息要求一个来自系统的时间保证,即一旦由这类消息引起的活动或者任务被执行,那么在确定的时间间隔内,它们的时间限定性必将被系统所保证。
最佳效果消息:它具有典型的软时间限定性,即其时间限定是由活动或者任务本身的时间序列所规定,无需系统保证就能满足其时间限定性的要求。
1.1 1 免疫性
嵌入式互联网(embedded Internet)的免疫系统应当是一个仿生命体机制,免疫功能是一个“前馈”系统,所以要求系统应具有预见能力,从而可以“以(小)毒攻(大)毒”。
1.1 2 融合性
嵌入式Internet是一个复杂网络,将复杂网络结构用简单的“组成”来解析,让系统可以由孤立的“组成”来诠释“整体”,或者让系统可以由“结点”来表达“全局”。
1.1 3 性价比
如果系统A是系统B地嵌入式系统,即B(a),那么系统A的成本应不超过系统B成本的10%,而系统B(a)的成本应大于系统A和系统B成本之和,系统B(a)的性价比应提高30%。
2 实时系统的特性
2.1 实时任务具有确切的完成期限
用来完成实时任务的系统叫做实时系统。实时系统在接受一个外部事件请求而开始执行任务后,必须在一个设计时就确定的期限内完成这个任务。也就是说,实时系统中的所有实时任务都有一个在设计时就确定了的完成期限。根据这个完成期限的严格程度,实时系统分为硬实时系统和软实时系统两类。
如果一个系统必须在极严格的期限内完成实时任务,否则就会产生灾难性的后果,那么这样的实时系统就叫做硬实时系统。对于硬实时系统来说,超过期限计算出来的结果是没有任何价值的:因为事过境迁,计算结果再正确也没有什么用途了。例如,战斗机用空一空导弹对抗的例子,如果自己的导弹瞄准发射控制系统计算超过时限,那么自己的飞机已经被打掉了,于是系统的计算结果无论正确与否,都是毫无意义的。
2.2 实时任务的活动是不可逆的
在大多数情况下,一个实时任务一旦完成之后,它所形成的后果是无法挽回的,即实时任务的活动是不可逆的。例如,导弹发射出去了,就不可能让它再恢复原状了。
2.3 实时任务大多由外部事件激活的
实时系统中的任务几乎都是由外部事件激活的。例如,用移动电话通信时,只有用户按下了某个按键才会激发电话的某个任务,从而完成相应的通话功能。有些实时任务是具有周期性的。例如,在工厂中应用的定时采样系统,这种任务通常是由定时器来激活的。
3 处理器选择
嵌入式实时系统比较适合用于系统优化。由于这些系统主要用来解决范围相对较窄的问题,因此硬件和软件能够得到最佳优化,并很好地应用于单一设备。这样做的目的是要在软硬件最佳折中状态下开展系统设计。影响这一阶段设计的主要因素是处理器的选择、软硬件的分割和总体系统集成。
在嵌入式实时系统选择处理器时需要考虑以下几个方面:
(1)性能:处理器必须有足够的性能执行任务和支持产品生命周期。
(2)实现:根据具体应用情况,处理器可能需要被高度集成。在DSP应用中可以有好几种选择,专用集成电路(ASIC)就是其中的一种。这些器件可以被用作DSP协处理器,但对于许多通用信号处理来说显得不够灵活。另外可以选择精简指令集计算机(RISC)处理器。这些处理器的时钟速度特别快,但可扩展性不是很强,而且会发生其它实时(可预测性)问题。现场可编程阵列(FPGA)是一种快速器件,能够快速高效地完成某些DSP功能,但与DSP相比开发难度比较大,因为在DSP中一个简单的程序就能完成相同的功能。如果是主信号处理应用,则最好采用性能强大功耗也较大的通用处理器。如果需要快速升级信号处理应用,采用DSP等可编程器件比定制的硬件方案要好些。
(3)工具支持:支持软件创建、调试、系统集成、代码调整和优化工具对整体项目成功与否非常关键。
(4)操作系统支持:嵌入式系统应用需要使用有帮助的抽象来减少其复杂性。针对处理器系列产品作过优化的商用操作系统(OS)能够缩短设备开发周期和上市时间。
(5)过去的经验:拥有处理器或处理器系列新产品的开发经验可以减少可观的学习新处理器、工具和技术的时间。
(6)仿真支持:循环精确仿真对某些类型的应用来说非常重要,特别是数字信号处理应用中许多能正确性验证都是采用仿真技术完成的。嵌入式系统的软硬件协同设计模型也促使处理器仿真器成为开发流程中一个非常有用的工具。
(7)应用支持:应用支持有多种方式,从通过热线或网站取得的应用专家支持,到预打包的软件和应用框架,甚至完好的测试平台。一些DSP处理器能够提供外围器件的驱动器、板级支持包和其它“启动帮助组件”。有了这些软件组件后,应用开发师就无需再编写器件驱动器等“无附加值“的软件。相反,他们可以把精力放在具有附加值的功能开发上,使他们的产品能独树一帜。
(8)功能:市场上有许多依靠电池工作的便携嵌入式实时系统,此时电池寿命成为系统的重要参数。这种情况下应该考虑使用针对便携式应用优化的低功能器件。
(9)传统代码:如果选中的处理器需要设计人员编写与现存代码的接口,将会导致整个设计流程的严重滞后。因此需要选择一款代码兼容的器件来避免或减少这一步骤造成的影响。
(10)算法复杂性:某些处理器能够非常高效地处理某类算法,因此最好选择能够与应用最佳匹配的处理器。例如,具有许多控制代码的有限状态机应用应该映射为类似ARM处理器的RISC器件。编码、解码和回波抵消等信号处理应用应该映射数字信号处理器,或具有信号处理加速器的某种器件。
4 软件性能工程
许多嵌入式实时系统必须满足一系列性能目标。一般来讲,性能是一个软件系统或组件对时间要求满足程度的一种指示。这里的时间指标可以用响应时间和吞吐量来计算,该时间值是响应某种要求所需的时间,而吞吐量用以指示系统在特定时间间隔内能够处理的请求数量。可扩展性是嵌入式实时系统的另外一个重要指标,可以用它来衡量系统要求提高时,系统能够继续满足响应时间或吞吐量要求的能力。
如果在整个开发生命周期内得不到正确的性能管理,那么即使选择了正确的处理器和软件也是徒劳的。性能故障的后果是非常严重的,它可能损伤与客户的关系,造成收入下降,甚至导致整个项目失败。因此在整个生命周期内需要随时关注性能问题。性能管理可以被动或主动完成。被动方式需要采用一个较大的处理器解决性能问题,它只在系统完成构架、设计和实现后处理性能问题,在解决问题前一直处于等待状态,直到实际需要测量的事件发生。主动方式是指整个生命周期内一直在跟踪和交流性能问题,同时开发用以识别性能劣化的进程,并在性能处理中培养团队成员。
5 结束语
显然开发嵌入实时系统是一个相当复杂的过程,本文旨在启发设计人员在分析初始要求时如何在硬件与软件之间的关系、速度、成本、计划和可用工具之间作出权衡,并充分考虑各个供应商长期可靠支持的可能性。
参考文献
[1]马维华.嵌入式系统原理及应用[M].北京:北京邮电大学出版社,2006.
[2]朱珍民,隋雪表,段斌.嵌入式实时操作系统及其应用开发[M].北京:北京邮电大学出版社,2006.
嵌入式实时网络通信技术分析 篇5
1.1 嵌入式体系
嵌入式体系是“节制、监督或帮助装配、机器和设备运行的设置装备摆设;嵌入式体系综合了软件和硬件, 同时包涵机械等隶属装配。目前国普遍认可的定义是:应用作为重点、计算机技术为根本、可裁剪软件硬件、符合应用系统对功效、可靠性、本金、体积、功耗严厉规范的专用计算机系统。
1.2 嵌入式系统的特点
按照嵌入式系统的相关解释, 其具备3个基本特征, “嵌入性”、“专用性”和“计算机”。
(1) 嵌入性。嵌入性经由过程操作初期微型机时代的嵌入式计算机而来, 专指计算机嵌入到对象体系中, 实现对工具系统的智能把控。当嵌入式体系逐渐能够自身应变时, 嵌入性是指内部嵌有微处理器或计算机。
(2) 计算机。计算机是工具系统智能化节制的根本确保。由于单片机向MCU、So C成长发展, 片内计算机外围电路、接口电路、节制单位逐步增加, “专用计算机系统”转变为“内含微处理器”的当代电子体系。与传统的电子体系进行对比, 当代电子系统因为自身具有内含微处理器, 能具备对工具系统的计算机智能化控制能力。
(3) 专用性。专用性是指符合对象节制标准和有关情况下的软硬件裁剪性。嵌入式体系的软、硬件装备安排必须按照嵌入对象的相关标准尺度, 计划成专一的嵌入式应用系统。
2 嵌入式实时网络通信技术
2.1 简介嵌入式实时操作系统
遇到外界事件或数据发生, 可以接管同时以足够快的速度进行相关处置, 处置结果又在计划的时间之内来节制生产过程或对处理系统作出快速回应, 并确保全部及时任务协调一致运行的嵌入式操作体系。
2.2 嵌入式实时网络
2.2.1 嵌入式网络的要求
嵌入式网络通常应用在恶劣多变情况下, 因而对其具备以下要求:
(1) 及时性:出产装备内部多个分布式子系统信息耦合大体上比较缜密, 对及时性提出了高标准, 因此所用的网络协议必须具有肯定的实时性能, 即最坏情况下的反映时间是肯定的;此外在网络节点数比较多, 或者有些节点对及时反应提有高要求, 相关的网络协议还应撑持优先级调剂, 以增强时间紧急型任务的信息传输可确定性。
(2) 可靠性:嵌入式网络自身的可靠性对有用功率造成直接影响还有成品率和生产效率, 网络能够动态增添/删除节点;恶劣多变的电磁情况下嵌入式收集本身要具有抗干扰本事、检错和纠错能力和快速恢复的本领。
(3) 通信效力:嵌入式搜集通讯的子系统间具有频繁的通讯, 每次的长度很短, 因而要求嵌入式收集协议采纳短帧结构, 且帧头和帧尾要短, 从而提升通信效率和带宽的利用效力。
(4) 双重混合撑持:工作环境的差异要求嵌入式网络应具备灵活矫捷的介质访问协议, 不但撑持多种介质 (双绞线、同轴电缆、光缆) , 而且撑持夹杂拓扑结构 (星型、环型、总线型) , 有时大概要求同一个嵌入式网络能同时利用多种介质和多种网络拓扑。
(5) 实现难度和造价:嵌入式体系一般要按照实际请求举行专门规划和制造, 其中的网络体系软硬件要便于运用实施, 并和子系统控制部分集成, 相关元器件商品化水平高, 造价较低。
(6) 开放性:嵌入式网络必须具备杰出的开放性, 一方面经由过程企业Infranet连接到Intranet中, 对企业生产管理的控制实现一体化;另外应具有公然透明的开辟界面, 资料完备, 系统硬件、软件的能够自立开辟和集成。此外, 嵌入式网络体系必需设置装备摆设矫捷、保护简洁。
一般来讲, 根据覆盖范围的区别, 嵌入式收集隶属于局域网。按照ISO/OSI的观点, TCP/IP协议簇位于网络层以上。TCP/IP协议簇明显越过了嵌入式网络系统的限定范围。嵌入式收集含有ISO/OSI七层模型中的物理层和数据链路层。数据链路层可详细划分为两个子层:介质访问节制子层 (MAC子层) 和逻辑链路节制子层 (LLC子层) 。MAC子层涵有物理层接口硬件和能够对介质访问协议进行通讯的控制器;LLC子层主要是通过软件实现 (用户自主开发) 。因此, 如何选择合适的介质访问协议是嵌入式系统设计中网络通信的研究工作重点。
2.2.2 介质访问协议的选择
CSMA/CA (带冲突避免的载波监听多路访问) CSMA/CD即便在节点数目不多、传输信息量较少时情况下也具备好的效率;因为令牌的相关协议具备较高的及时性和吞吐能力。人们已研发出一种能综合以上两者优势的夹杂协议—CSMA/CA。CSMA/CA的本质是经由过程竞争时间片来节制冲突。其基本原理与CSMA/CD类似, 节点必需等到检测到网络呈现出空闲状态, 才可以发出信息;如果两个或更多的节点发生辩论, 就在收集上开启一个阻塞信号关照全部辩论节点, 并同步节点时钟, 开启竞争时间片;每一个竞争时候片都遵循给定的特定节点, 每个节点在其相对应的时候片内如果显现信息发送便可启动传输;别的节点检测到信息传输后, 停止对时间片的推动, 等到传输结束全部节点从头重新开启推动时间片;当全部时间片都失掉作用时, 网络处在余暇状况。为确保公平性和可确定性, 每次传输以后, 时间片要进行相关的循环模拟。另外, 优先时候片 (the priority slots) 优先于普通时候片的推动, 可以撑持高优先级信息的全局优先传输。CSMA/CA协议在可主要划分为两种:一是RCSMA (Reservation CSMA) , 其特色为时间片数和节点数相同。RCSMA在各种传输条件下都可以有效进行工作, 明显看出其不适合应用在节点较多的网络;在另一种是, 时间片数比节点数少, 且依据冲突最少的原则随机调整时间片的分配, 依据所预测的网络流量动态地对时间片数进行调整;如Echelon公司推出的普遍利用于智能大厦领域的Lonwork标准。
另外比如外令牌环、令牌总线也符合于嵌入式网络。但因为令牌环的细致实施复杂、成本较高, 首要采取CSMA/CA。
摘要:近几年来, 嵌入式系统具备体积小、可靠性强、专用性等优势逐步得以采用。但随着独立的嵌入式系统的功能缺点日趋明显, 新一代嵌入计算体系的功能集成和应用模式使之转向网络化嵌入计算的目的发展, 嵌入实时网络通信是嵌入计算技术研讨的重点和难点。本文主要简介嵌入式系统和嵌入式实时网路通信的特点以及发展趋势, 提供相关参考。
关键词:嵌入式系统,网络,实时,发展
参考文献
嵌入式Linux实时性改进 篇6
关键词:Linux,嵌入式,实时性
引言
近年来, 随着电子计算机等相关IT技术的发展, 嵌人式产品也越来越多的走进人们的视野, 成为人们生活中不可或缺的组成部分。嵌入式系统是面向专用领域的系统, 多数嵌人式系统对实时性能有着较高的要求。
现有的嵌入式操作系统大致可分为商用型和免费型两类:商用型操作系统由于功能稳定、可靠, 有完善的技术支持和售后服务, 在嵌入式市场占有一定的份额。但它同时也存在价格昂贵、需要版权、源代码不公开等一系列问题;免费型操作系统 (如Linux) 源码公开, 有价格方面的优势, 但在严格满足嵌入式实时应用需求方面还有欠缺。
1 RTAI对Linux的实时性改进
现有几种针对Linux的实时系统解决方案, 实现方法主要包括两种:一是修改Linux内核、增加实时性, 如:Montavista;二是在普通Linux内核之上增加实时模块、双内核结构, 如:RTLinux或RTAI。
Montavista可以满足用户的软实时要求, RTLinux或RTAI着重增强Linux的硬实时特性。软实时系统的时限是柔性灵活的, 它可以容忍偶然的超时错误。失败造成的后果并不严重, 仅仅是轻微地降低了系统的吞吐量。硬实时系统有一个刚性的、不可改变的时间限制, 它不允许任何超出时限的错误。
RTAI采用双内核方法, 把需要高度时间精度的工作写成一个驱动程序的形式, 然后直接用PC时序芯片所产生的中断调用这个驱动程序。RTAI在Linux上定义了一组实时硬件抽象层 (RTHAL) 。RTHAL将RTAI需要在Linux中修改的部分定义成一组程序界面, RTAI只使用这组界面和Linux沟通。这样, 用户可以将直接修改的Linux核心程序代码减至最小。但是, RTAI虽然满足了硬实时性要求, 却没有被裁减为足够小且适用于嵌入式系统。
2 RTAI+u Clinux的实时方案
u Clinux是为嵌入式应用设计的, 它本身并没有更多地关注实时问题。u Clinux经过小型化改造, 形成了一个高度优化、代码紧凑的嵌入式Linux, 并保留了Linux大多数的优点。它专门针对无MMU的CPU, 去除了普通Linux内核中的虚拟内存管理部分。更重要的是, u Clinux提供了完整的TCP/IP协议栈, 并支持大量其他的网络协议, 为嵌入式系统提供了强大的网络支持。
而从前面的分析可以看出, RTAI是基于普通Linux内核, 相对于嵌入式应用其内核过于庞大;而u Clinux本身并没有更多地关注实时问题。因此, 可以将RTAI和u Clinux相结合, 采用双内核的设计方案, 既满足了嵌入式应用的需求, 又保证了系统的硬实时性。
2.1 硬件抽象层
系统的实现基础是硬件抽象层, 通过硬件抽象层进行硬件管理, 把基本内核和实时内核结合在一起, 其中一个内核的改变, 不会影响另一个内核的执行。
硬件抽象层定义了本系统同硬件之间的抽象接口, 主要用来截取硬件中断, 并且依据实时内核调度器的需求, 重定向为基本内核任务或是实时任务。RTHAL包含一个关键的组件:中断描述符表IDT, 它定义了一套指针用来处理中断例程。RTHAL本身定义了一个结构, 使得基本内核中断处理函数能够很容易地被实时处理函数所替代。这样, 当实时内核通过RTHAL激活后, 新的IDT表为合法。在以上控制下, 基本内核作为实时系统的任务提供服务。
2.2 双内核结构
双内核实时系统的总体结构模型主要包含了基本内核、实时内核、硬件抽象层、硬件部分。其中基本内核和实时内核分别处理非实时和实时任务的调度和执行, 实时任务和非实时任务之间信息的交换要通过管道或共享内存来实现。当实时任务运行时, 基本内核被硬件抽象层屏蔽。即实时内核将基本内核作为优先级最低的一个任务来运行, 只有在没有实时任务运行的时候才予以调度。
2.3 实时内核动态加载
嵌入式实时Linux的实时内核是动态加载的。实时任务被激活前, 实时内核并没有启动, 基本内核通过RTHAL透明访问硬件, 就像RTHAL不存在一样。当实时任务被激活时, RTHAL结构发生变化, 基本内核被实时内核接管。
2.4 调度处理
当中断到来时, 实时内核判断它是基本内核中断还是属于实时中断, 分别进行处理。若是基本内核中断, 如果当前有实时任务正在运行, 则只是设置一下中断标志位, 悬挂此中断, 如果没有实时任务运行, 则调用基本内核的中断处理程序;如果此中断是实时中断, 就直接调用相对应的实时中断处理程序。实时中断可以抢先基本内核任务的执行。
3 应用案例
工业控制是嵌入式实时操作系统的传统应用领域, 需要严格的实时处理功能、高可靠性和良好的开放性, 对开发环境、可操作性、成本等也有特别的要求。因此本项研究以重大装备的远程监控系统作为其应用之一。
3.1 嵌入式远程监控系统结构
应用针对工业生产中使用的大型设备在连续运转状态下的远程监控问题, 研究用于重大装备远程监控的嵌入式装置。系统主要包括输入/输出模块和输入/输出上位模块 (Net Web) , 前者用于实现现场数据的采集 (输入) , 或用于现场装置的控制 (输出) , 后者集成了Web功能, 使得用户可以通过互联网对输入/输出模块进行访问。
3.2 Net Web对嵌入式Linux的功能验证
Net Web的开发基于前面介绍的嵌入式实时Linux操作系统。特殊的双内核操作系统结构决定了应用开发的特殊性。
3.2.1 任务管理功能
系统中的任务可以分为实时性任务和非实时性任务, 实施不同的调度策略和任务间通信方式, 可以通过实时的FIFO或共享内存实现。实时任务包括实时数据采集、处理等方面, 这部分的功能要在实时内核RTAI之上进行实现;另外, 非实时任务主要包括数据存储、远程通讯的实现, 这部分功能要在基本内核u Clinux之上实现。
3.2.2 网络功能
嵌入式实时Linux实现了嵌入式互联网技术, 将Web服务器引入到现场测试和控制设备中, 在相应的硬件平台和软件系统的支持下, 使传统的测试和控制设备转变为具备了以TCP/IP为底层通信协议, Web技术为核心的基于互联网的网络测试和控制设备。
3.2.3 实时性
嵌入式实时Linux是硬实时的嵌入式操作系统。当中断到来时, 若是基本内核中断, 如果当前有实时任务正在运行, 则只是设置一下中断标志位, 悬挂此中断;如果此中断是实时中断, 就直接调用相对应的实时中断处理程序。这样的调度机制可以保证远程监控系统中实时任务在确定的时间限度内完成, 为系统故障的实时预报、诊断、控制提供了强有力的支持。
4 结论
这一方案既符合嵌入式系统的需求, 又达到硬实时性标准, 同时还有强大的网络功能、易升级性、易移植性等优点。同时, 在其上进行应用编程时实时任务 (基于RTAI) 和非实时任务 (基于u Clinux) 是分开编写的, 清晰简洁, 但由于用户需要直接在内核空间编程, 从系统的安全性角度存在一定隐患。
参考文献
[1]陈圣琳等译.Linux DNS Server管理指南[M].北京:电子工业出版社, 2004.
嵌入式实时处理 篇7
关键词:实时Linux,嵌入式GUI,MiniGUI
1 嵌入式系统应用及发展趋势
1.1 嵌入式系统和嵌入式实时系统
嵌入式系统是以应用为中心, 以计算机技术为基础, 并且软硬件可裁剪, 适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。它一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序等四个部分组成, 用于实现对其他设备的控制、监视或管理等功能。常见的几种实时操作系统, Vxworks、Windows CE、RT-Linux、RTAI-Linux等, 在本文中选择利用RTAI来构建嵌入式实时Linux系统。其主要步骤如下:
1.1.1利用RTAI提供的补丁修改Linux内核源代码;1.1.2编译修改后的Linux内核;1.1.3配置Lilo;1.1.4重启电脑, 选择进入改造好的内核, 进入Linux系统;1.1.5进入RTAI目录创建并进入临时的编译文件夹:#mkdir$objdir&&#cd objdi1.1.6进行编译配置。这一步首先将要求指定RTA实时内核最终的安装路径:#make-f rtai-src_d makefile;Srctree=$rtai_src_dir[x|menu|g]config1.1.7开始编译:#make;1.1.8进行安装:#make i stall。
至此, 嵌入式实时Linux系统构建完毕。
1.2 嵌入式GUI的应用
随着嵌入式系统的广泛应用, PDA、机顶盒、DVD/VCD播放机及WAP手机已经迅速普及。图形用户界面 (GUI) 的广泛流行, 极大的方便了非专业用户的使用, 因此嵌入式实时系统对GUI的需求越来越明显, 而这一些均要求一个高性能、高可靠的GUI的支持。
目前比较成熟的, 同时也得到较多开发人员认可的有紧缩的X Window系统、Mini GUI、Micro Windows、Open GUI等。
鉴于Mini GUI的可靠性、小巧、可配置、高稳定性、高性能和可移植性。我们将选择Mini GUI作为嵌入式GUI系统。
2 Mini GUI简介
Mini GUI由北京飞漫软件技术有限公司开发的, 是面向实时嵌入式系统的轻量级图形用户界面支持系统, 1999年初遵循GPL条款发布第一个版本以来, 已广泛应用于手持信息终端、机顶盒、工业控制系统及工业仪表、彩票机、金融终端等产品和领域。目前, Mini GUI已成为跨操作系统的图形用户界面支持系统, 可在Linux/u Clinux、eCos、u C/OS-II、Vx Works等操作系统上运行;已验证的硬件平台包括Intel x86、ARM (ARM7/AMR9/Strong ARM/x Scale) 、Power PC、MIPS、M68K (Drago n Ball/Cold Fire) 等等。
3 Mini GUI的安装及开发环境的建立
在PC机上建立Mini GUI目录, 将开发所需要的libminigui-str-1.6.2.tar.gz、minigui-res-str-1.6.tar、mg-samples-str-1.6.2.tar.gz放在该目录下。
3.1 安装Mini GUI资源文件
#tar-xvzf minigui-res-str-1.6.tar.gz
#cd minigui-res-str-1.6
#make install
3.2 安装Mini GUI库文件
#make
#make install
3.3 首先, 修改你的/etc/ld.so.conf文件, 在里面最后新加入一行/usr/local/lib
然后执行命令:
#ldconfig
3.4 修改配置文件
#vi/usr/local/etc/Mini GUI.cfg
3.5 安装qvfb
#tar zxf qvfb-1.0.tar.gz
#cd qvfb-1.0
#./configure
#make
#make install
3.6 执行例子程序, 先启动qvfb
#qvfb
#cd/mg-samples-str-1.6.2/src
#./helloword
这个时候我们可以看到在qvfb中的出现helloworld窗口, 记住:一定要先运行qvfb, 并且设置qvfb, 然后再运行程序。每次运行程序都须重新启动并设置qvfb。
至此基于PC机的Mini GUI开发环境搭建好了, 我们可以在PC上开发Mini GUI程序、编译, 然后在qvfb中执行, 等验证它是正确的, 用交叉编译器将其编译,
4 交叉编译工具的安装
从网上下载一个cross-2.95.3.tar.bz2文件。
安装交叉编译工具:
#mkdir-p/usr/local/arm
#cd/usr/local/arm
#tar jxf cross-2.95.3.tar.bz2
解压缩后生成一个2.95.3目录, 里面的就是工具, 这时候的gcc为2.95.3/bin/arm-linux-gcc, 而它的include为2.95.3/arm-linux/include, 对应的lib为2.95.3/arm-linux/lib
它缺省的就找2.95.3/arm-linux/include2.95.3/arm-linux/lib两个目录, 而不是/usr/include。
把可行程序的路径加入到PATH中去
#cd$HOME
#vi.bashrc
在.bashrc最后面加上一句
export PATH="$PATH:/sbin:/usr/local/arm/2.95.3/bin:/usr/local/bin:/usr/local"
[user]#source.bashrc
通过以上步骤, 交叉编译工具安装完成。
因为Mini GUI的编译需要一些库文件, 所以我们需要用交叉编译器把这些库文件编译到交叉编译器中。至此, Mini GUI的交叉编译环境建立好了。
5 Mini GUI应用程序设计
应用程序是最上层的开发, 其交互界面直接通过Mini GUI图形系统的API接口函数实现。Mini GUI屏蔽了对底层显示、输入设备编程的细节, 使开发人员更能专注于应用程序的开发, 从而缩短了开发时间。
下面是在嵌入式Linux下设计的一个Mini GUI应用程序, 用于显示机车的主要状态信息, 如时速、日期、时间等, 并设有4个按钮, 用来查看车辆信息、电源信息、制动信息和检测试验状态。
下面为司机登陆的界面:设置了用户名和密码。登陆界面如下:
司机显示器上显示的主要信息如图2所示。
6 总结
将嵌入式Linux应用至工业控制类产品中, 利用Mini GUI开发出优秀的人机交互界面, 是嵌入式发展的最新趋势, 拥有广阔的市场前景。
参考文献
[1]北京飞漫软件MiniGUI用户手册http://www.minigui.com.
[2]李善平等.Linux与嵌入式系统[M].北京:清华大学出版社, 2003.
[3]周立功等.ARM嵌入式MiniGUI初步与应用开发设计[M].北京:北京航空航天大学出版社, 2006
嵌入式Linux的实时性研究 篇8
Linux从1992年问世到现在, 经过十几年的发展, Linux已经迅速成长为一个功能强大性能稳定的通用操作系统。它支持多用户和多进程, 支持TCP/IP等网络协议, 具有图形用户界面和强大的开发工具, 而且大部分UNIX上的应用程序都已经移植到Linux之上。由于它的成熟和强健, Linux得到了日益广泛的应用。
嵌入式Linux (EmbeddedLinux) 是指对桌面型Linux经过小型化裁剪后, 能够固化在容量只有几百K字节或几兆字节的存储器芯片或单片机中, 应用于特定嵌入式场合、为嵌入式应用程序提供操作系统服务的专用Linux操作系统。
“实时性”是指计算机系统在确定的时间内完成规定的功能, 并能够对外部的异步事件做出正确响应的能力[1]。Linux有很好的“平均”性能, 具有一定的软实时性, 但不是硬实时的操作系统, 因此要使Linux成为真正的实时操作系统必须对其作一些相关的改造。
1 Linux的实时性分析[2]
下面主要从设计和实现原理的角度分析Linux的实时性。
1.1任务调度策略
在操作系统中, 任务切换时间包括保存目前任务的时间, 新任务调入系统的时间和操作系统选择下一个任务的调度时间, 其中任务调度时间是决定任务切换时间长短的主要因素。而影响这一时间的因素主要是任务调度策略和被调度的任务数调度策略越简单, 被调度的任务总数越少, 调度时间就越短。对一个实时性能较强的操作系统而言, 系统必须规定不同进程的优先级, 把不同类型的进程分成不同的队列, 并把优先级作为唯一的进程调度标准, 尽量缩短任务调度时间。
Linux在内核1.3版本之后加进了POSIX实时扩展部分, 引进了实时进程概念, 允许将一个进程的属性确定为实时进程。Linux从调度策略上区分实时进程和普通进程, 实时进程先于普通进程运行, 并采用不同的调度策略。对实时进程, Linux采用两种调度策略, 即先来先服务调度 (SCHEDFIFO) 和时间片轮转调度 (SCHED RR) 。SCHEDRR任务最先被调度并拥有时间片, 一旦时间片用完就被移动到优先级队列的队尾, 并允许同一优先级的其他任务运行。如果同一优先级没有其他任务, 该任务将继续运行下一个时间片。SCHEDFIFO是运行直至阻塞的策略。其任务按优先级调度, 一旦开始就一直运行到结束或者阻塞在某种资源上。它们不像SCHED RR任务那样共享处理器此外, Linux还提供内存锁定、POSIX实时信号等机制以在一定的应用范围内支持粗粒度的软实时应用, 但许多重要的实时性能, 如任务切换时间、中断延迟时间等不够明确, 与支持硬实时性还有明显差距。
1.2计时器精度的影响
计时器的精度对实时性也有较大影响。以前提供给用户进程的警报信号和Sleep () 系统调用只有1秒的精度, 如此粗糙的计时精度不适合大多数实时进程。当前版本提供了更高精度的时间间隔, 但内在的时钟实现限制了计时的正确性。
1.3外部中断管理
当发生外部中断时, 操作系统马上调用相应的中断处理程序。为了保证一些系统资源的互斥操作, 进程将进入核心态运行, 并屏蔽外部中断。但如果关中断的时间过长, 就有可能丢失外部中断信号, 以致于一些实时任务不能得到及时处理, 因此中断处理程序应尽可能短。为了处理有时必需的“长”中断服务程序, 在Linux操作系统内核中, 将中断处理分为tophalf和bottom half两个部分。Top half是在idt表中登记的中断服务程序的入口部分, 它必须关中断运行。系统处理中断时, 首先由top half读取来自设备的数据, 保存到预定的缓冲区, 时间尽可能短。之后通知bottom half并返回, 由bottom half执行剩下的不急需且耗时的处理, 此时处于开中断状态, 可以接收新的外部中断。在Linux系统中, 有许多中断的bottom half处理, 它们形成一个任务队列, 由Linux调度管理。在这种中断机制下, 由于bottom half队列的调度, 会引起中断处理的延迟。
1.4非占先式内核
在Linux2.4和以前的版本, 内核是不可抢占的, 也就是说, 如果当前任务运行在内核态, 即使当前有更紧急的任务需要运行, 当前任务也不能被抢占。因此那个紧急任务必须等到当前任务执行完内核态的操作返回用户态后或当前任务因需要等待某些条件满足而主动让出CPU才能被考虑执行, 这很明显严重影响抢占延迟。
在Linux2.6中, 内核已经可以抢占, 因而实时性得到了加强。但是内核中仍有大量的不可抢占区域, (1) 进程在临界区 (CriticalSection) 中执行的时候不能被其他进程抢占; (2) 中断服务程序 (InterruptServiceRoutine) 不能被其他进程抢占。
综合以上因素来看, 传统的Linux不适合用于实时处理, 最近几年, Linux本身虽然在实时性支持方面做出了许多努力, 实时性能有一定提高, 但还不足以满足硬实时性的要求。
2嵌入式Linux的实时化方案
2.1 Linux调度算法的实时性改进
2.1.1优先级反转
“优先级反转”是指高优先级的进程被阻塞, 低优先级的进程运行的现象。当某一进程运行时, 为了保证数据修改的原子性, 对临界区设置了互斥锁保护 (在2.6内核中采用的是自旋锁spinlock) , 并且该进程在持有自旋锁时决不放弃对CPU的控制, 也就是说, 一定不能在lock锁后和unlock解锁之前调用schedule () 。此时, 具有更高优先级的进程不能中断当前进程而阻塞, 必须等待当前进程释放掉自旋锁之后, 这个更高优先级的进程才能运行。这样就出现了低优先级的进程反而处于运行态的现象。如图1所示。
优先级反转使得系统的行为难于预测, 实时进程的时限不能得到保证。
2.1.2 优先级继承协议 (Priority Inheritance Protocol) [3]
①优先级继承协议的算法描述
(1) 在任务T进入临界区CS之前, 必须申请到互斥锁S。如果互斥锁已经上锁, 则T被阻塞, 否则T获得S, 进入CS执行一定的操作。当T退出CS时, 必须释放S, 此时被T阻塞的进程集中, 优先级最高的进程将被唤醒执行。
(2) 任务T使用给定的优先级, 直到在其互斥锁S保护的CS区间有更高优先级的进程阻塞在S上。此时, 任务T继承PH, 即被互斥锁S阻塞的所有进程中的最高优先级。T在退出CS后回复原来的优先级。
(3) Priority Inheritance有引申效果。即:如果T3阻塞T2, T2又阻塞T1, 则T3通过T2继承T1的优先级。
②具有优先级继承的互斥锁
具有优先级继承的互斥锁能够很好地解决前面提到的优先级反转问题。当高优先级的进程被低优先级的进程阻塞时, 低优先级的进程可以继承高优先级进程的优先级, 使之消除优先级反转的现象。现在的嵌入式Linux中绝大多数采用可以在内核执行路径的中途进行任务切换的抢占式内核, 与普通Linux内核相比, 可以将应答性能的平均值缩短到1/10以下, 但对缩短最长应答时间没有任何作用。如果用具有优先级继承功能的互斥锁取代抢占式内核中用于保护临界区的自旋锁的话, 虽然进程锁定时判断优先权的程序会产生一定开销, 但是能够缩短最长应答时间。
优先级继承的互斥锁具有以下特性:
(1) 在优先级继承的条件下, 任务T可能最多被阻塞min (n, m) 个临界区。此处, n是可能阻塞任务T且优先级低于任务T的任务个数, m是可能阻塞任务T的互斥锁的数目。
(2) 在优先级继承Rate Monotonic调度算法的条件下, 当满足条件
∀i, 1≤i≤n,
进程是可调度的。其中, Ck是最差情况下任务的执行时间, Tk是任务的时间周期, Bi是min (n, m) 个临界区间的时间延迟。
优先级继承协议可以保证, 在优先级继承的条件下, 高优先级进程的延迟时间将在min (n, m) 个临界区间之内, 这使得实时进程的调度可以得到保证。
2.2中断的实时性改进
软中断运行的时机之一就是在中断服务的末尾。Linux中断服务函数中进行软中断处理的代码如下[4] :
其中do_IRQ () 是Linux中断服务函数, 此函数针对特定的中断运行相应的上半部分。函数do_softirq () 是软中断处理函数。在do_IRQ () 处理完上半部分时, 如果有等待的软中断需要处理, 那么就会调用do_softirq () , 处理待运行的软中断。如果中断上半部分需要下半部分被处理, 那么下半部分也会在do_softirq () 中被运行。我们知道, Linux之所以将中断分为两个部分, 就是为了将不着急的事务推迟处理从而减少中断服务时间。现在, 如果do_IRQ () 中软中断的处理时间过长, 那么do_IRQ () 的处理时间也会相应变长, 从而增加了中断服务时间。为了进一步减少中断服务时间, 我们可以考虑在中断处理函数中对中断进行区别对待。对于不频繁的外部中断, 如键盘、时钟等, 保留软中断处理。而当系统需要处理某些频率较高的外部中断时, 我们可以考虑绕过软中断的处理, 只处理上半部分。由于软中断本身不是急需处理的, 并且还可以在进程调度之前和系统调用结束时运行, 因此, 这里将它去掉对系统性能的影响不大。
2.3时钟的实时性改进
计算机是以严格精确的时间进行数值运算和数据处理的, 最基本的时间单元是时钟周期。系统时间是以“时钟滴答”为单位的, 而时钟中断的频率决定了一个时钟滴答的长短。例如, 每秒有100次时钟中断, 那么一个时钟滴答就是10 ms。不同的操作系统对时钟滴答的定义是不同的, DOS的时钟滴答为1/18.2 s, MINIX的时钟滴答为1/60 s。普通Linux的定时器提供10 ms的调度粒度, 不足以达到实时响应速度的要求。时钟频率的选择对实时操作系统来讲十分重要。频率低了, 对请求的反应就慢;频率高了, 调度就频繁, 上下文切换也频繁, 系统开销就大。所以时钟频率的选择要兼顾反应时间和系统开销。一般操作系统的时钟频率对实时进程来讲是不够的, 可考虑提高时钟频率。
3结论
由于Linux本身基于通用目的操作系统的设计, 其实时性能并不是很强。但通过一定的改进争强其实时性能, 就可以用于实时的应用场合。本文在分析了标准Linux实时性的基础上, 并就调度算法、中断、时钟三个方面提出了一些改进的方法, 以进一步提高Linux操作系统的实时性能。
参考文献
[1]Labrosse J.UC/OS-II-源代码公开的实时嵌入式操作系统.邵贝贝, 译.北京:中国电力出版社, 2001:34—40
[2]陈莉君, 康华.Linux操作系统原理和应用.北京:清华大学出版社, 2004
[3]王田苗.嵌入式系统设计与实例开发.北京:清华大学出版社.2003
[4]毛德操, 胡希明.Linux内核源代码情景分析.浙江:浙江大学出版社, 2002:221—230
[5]詹荣升.linux内核的中断机制.http://www.linuxforum.net/doc-new/index.php, 2006