《自动化技术与应用》2010年第29卷第8期 计算机应用 Computer Applications U C O S-ll操作系统在数码相框中的应用 田野1,张浩 (1.哈尔滨工程大学工程训练中心,黑龙江哈尔滨150001; 2.哈尔滨工程大学信息与通信工程学院,黑龙江哈尔滨1 50001) 摘 要:传统的嵌入式系统软件设计中广泛采用单任务顺序机制,它带来的重要问题是编程复杂,同时系统的稳定性较差。为此,引入 了U COS—II实时操作系统来对多任务进行管理与调度,实践证明该系统对多任务的管理和调度有着卓越的性能和稳定性。本 文成功将该系统运用于数码相框系统,详细描述了UCOS—II操作系统在ZEVIO 1020双核处理器的移植过程,并且对于多任 务的调度处理,设计了基于两级状态机的通信机制,解决了多任务之间消息处理复杂性的问题,最后给出了系统的实现过程。 关键词:UCOS—II;移植;多任务设计;数码相框 中图分类号:TP316.2 文献标识码:A 文章编号: 文章编号:l003—7241(2010)08—0036-04 The Applications Of UCOS—I I in the Digital Photo Frame TIAN Ire ,ZHANG Hao。 (1.Engineering Training Center,H ̄bin Engineering University,Harbin 150001 China; 2.Information and Communication Engineering College,Harbin Engineering Universiy,Harbitn 150001 China) Abstract:Single task sequential computations are widely used in traditional embedded system software design.However it also bring the problem of complication and lower system stability.Therefore,UCOS—II RTOS is applied in multitask manage— ment and scheduling.It is proved that RTOS has better performance and stability in multitask management and scheduling. UCOS—II RTOS is applied successfully in digital photo flame system in this paper.The porting of UCOS・II RTOS to ZEVIO 1 020 is described in detail.A dual state machine communication mechanism is designed to deal with scheduling of multitask.It solves the complication of multitask messaging.The realization of the system is also provided. Key words:UCOS—II;porting;design of multi—task;Digital Photo Frame 1 引言 近年来,随着嵌入式技术的不断发展,各种电子产 品层出不穷,对于那些具有众多功能,但按键数目无法 2 系统概述 数码相框的主要特色是图片显示清晰,图片显示效 果多种多样,同时还具有视频播放、音频播放、JPEG图 片解码等附加功能。在本系统实现过程中主要分为六 个模块:总控模块、GUI界面模块、图片显示模块、视 满足要求的设备来说,选择一个好的操作系统和设计一 套合理的消息处理机制,已经成为研发人员研究的一个 课题。本文以此为背景,研究了U COS-II操作系统在数 频模块、音频模块、JPEG解码模块。总控模块实现对 其它模块的管理与控制。图片显示模块通过Z E V I O 1 020双核处理器的3D图像内核处理,实现多种三维的 动态显示效果,通过对定时器设置的改变,实现图片播 放速率的调整。视频模块和JPEG解码模块因为对速度 码相框中的应用,详细描述了U COS—II操作系统在 ZEVIO l 020双核处理器上的移植,并且根据数码相框 多任务的特点,设计了一套完整的消息处理机制。实践 证明,采取本文所设计的系统可以灵活的完成任务间的 调度和切换。 的要求较高,使用高速数据传输通道DMA来实现ARM 和D S P之间的双核解码。音频模块可以解码M P 3, WMA等多种音频格式。U COS-II操作系统的任务就是 收稿日期:2 01 0—06—2 3 计算机应用 Computer Applications 《自动化技术与应用》201 0年第29卷第8期 在不同状态下,根据不同的键盘输人消息实现各个模块 间的灵活调度。 间同步与通信,内存管理和中断服务等功能,具有执行 效率高、占用空间小、实时性能优良和可扩展性强等特 点【2]。最小内核编译可以达到2KB。UCOS—II的移植 3 基于ZEVIO 1 020的系统硬件平台 ZEVIO 1 020多媒体应用处理器是美国LSI Logic 主要是编写和处理器有关的代码,以及根据处理器设置 中断向量表,提供给操作系统一个时钟作为系统时钟。 OSCPU公司发布的第一款基于ZEVIO架构的标准芯片。具备 低功耗、更高级图像和数字音/视频处理功能。ZEVIO 1020处理器高度集成,包括通用处理的ARM9内核,多 媒体处理的ZSP400内核,此外还包括了一个3D图像内 核和一个2D/3D MIDI声音核,它也集成了一个视频 A.ASM是需要用户根据不同处理器的体 系结构编写的汇编文件。该文件包括了四个函数: OSStartHighRdy()、OSStartHighRdy0、OSCtxSw()、 OSIntCtxSw0、OSTickISR0。OSStartHighRdy0的作用 是运行就绪态任务优先级最高的任务。OSCtxSw()是实 现CPU在正常运行时任务间的切换,即对当前任务堆 栈的保存和对高优先级任务堆栈的弹出,使最高优先级 任务获取CPU的控制权。OSlntCtxSw()是在中断服务 DA C(数字到模拟转换器)用于直接输出到电视和一个 SDIO(安全数字输入/输出)卡槽用于数据存储或者额外 的周边扩展。 ZEVIO l020处理器的开发平台如图1所示【1],它的 通用处理内核ARM926EJ-S的工作主频为150MHz,作 为系统主处理器,可以完成控制和数据处理工作;ZSP400 DSP处理器为视频解码和JPEG解码工作提供了高效运 行平台,工作主频为150MHz。除此之外,ZSP400具有双 MAC、双算法逻辑单元(ALU)DSP核,每周期4指令,正 交的载人/存储指令集的特点。同时在ZEVIO 1020的 程序中执行切换功能的函数。OSTickISR()是系统时钟 的中断服务程序。该程序执行的频率为100HZ,主要功 能是检查是否有由于延时而被挂起的任务成为就绪任 务,如果有就调用OSIntCtxSw0进行任务切换,从而运行 高优先级的任务。OS—CPU.C中主要编写任务堆栈初 始化函数OSTaskStklnit()[3l【4]。 中断向量表是系统产生中断处理的索引表,系统会 存储结构中,DMA提供了高速数据转移,能够完成ARM 处理器和DSP处理器双核之间的高速数据传输。 根据不同的中断类型引导它们进入不同的中断处理函 数。ZEVIO 1 020双核处理器提供了多种不同类型的中 断处理,主要分为两类:IRQ中断和FIQ中断。FIQ中断 是快速中断处理函数,执行速度快,优先级高,一般用于 重要和对实时性要求较高的中断处理。IRQ中断是普 通的中断处理函数,一般的中断处理都归属于这种类型 的中断。在各种中断同时触发的情况下,中断程序会根 据各种中断优先级的设定来进行比较,执行优先级最高 的中断处理程序。对于U COS-II的操作系统来说,需 要一个系统时钟作为操作系统的时钟节拍,供操作系统 调用时间函数使用。ZEVIO 1020有4个Timer可供选 择,在这里选用Timer i作为系统时钟,设置系统时钟频 率为i 00HZ且为FIQ中断。中断处理程序的实现过程 如图2所示。 图1 ZEVIO 1020平台体系架构 4 UCOS—ll在ZEVIO 1 020上的移植 U COS—II操作系统是完全可剥夺型的实时内核,可 以同时管理64个任务,函数的调用和服务时间具有确 定性。其内核提供的任务调度与管理,时间管理,任务 图2 中断处理流程图 Techniques of Automation&Applications I 37 《自动化技术与应用》201 0年第2 9卷第8期 计算机应用 Compute r Applications 5 软件层的设计与实现 5.1系统任务层的组成和优先级的设计 系统任务层并行存在以下六个任务:总控任务、音 频解码任务、视频解码任务、JPEG图片解码任务、GUI 界面任务,图片显示任务。每个任务均有以下三部分组 成:应用程序、任务的堆栈以及任务的状态机。任务堆 栈用以存储CPU寄存器内容。当某任务由运行态变为 其他状态时,CPU寄存器内容压入相应任务堆栈,反之 则将相应任务堆栈内容置入c P U寄存器。任务的状态 一级从上往下对消息进行处理。上级的状态机不需要 对消息的内容进行具体的处理,只要明确传递给下面的 哪一个状态机来具体处理。针对数码相框这个产品,本 文设计了两级状态机的实现机制。一级是总控任务的 状态机,二级是各个应用程序的状态机。总控任务的状 态机,主要用来对外部消息的转发;应用程序的状态机 主要处理启动,退出,暂停等具体操作。如图3所示,总 控任务查询到有新的消息进来后,首先查询当前各个任 务的运行情况,然后判别消息的内容,将消息转换成内 机记录了当前任务的运行状态,当有新的消息转发给任 务时,任务可根据状态机查询相应的状态,来决定下一 步的具体操作。操作系统也可以查询任务的状态机来 部消息分发给当前任务或者即将运行的任务。应用程 序的任务状态机接受到总控状态机发送过来的内部消 息之后,也是查询自身的状态机,并且检查消息的正确 性,然后根据自身的运行状态执行相应的操作。具体如 图4所示。 获得当前任务的运行状态。 优先级的设定是根据任务的重要性和任务的实时 性需求来定的。总控任务优先级最高,视频任务的实时 性大于音频任务的实时性,所以将音频的优先级排在视 频解码任务的后面。对于其他几个任务一般没有太多 的约束,我们可以任意安排其优先级。优先级从高到底 收剽姊部端息 的顺序排列:总控任务,视频解码任务,音频解码任务, JPEG解码任务,图片显示任务,GUI界面任务_5l 。【 : ● 教进府幼游恩瓣新 任备 5.2系统任务间的消息通信机制与状态机的 设计 在数码相框这个系统中,消息的类型主要有两类: 一镶询 前运行拄务 上 耨消息转抉戚内部 消息分靛 是外部输入(键盘)转化的消息;二是任务之间相互传 递的消息。第一类消息不知道消息的接受方,直接交 给总控任务来处理,总控任务通过查询状态机获得各 个任务目前的运行情况后,进行内部消息的转换,转发 给目标任务,由目标任务来具体处理。目标任务接受 到总控任务传送过来的内部消息之后,查询自身的状 态机,执行相应的处理。每个任务都有一个时间点来 图3 总控任务的状态机流程 查询新的消息。在音频解码任务中这个时间点设在解 码数据流后填充buffer和播放buffer互换的时刻。图 片显示任务是一个不断循环的显示过程,利用每次循 环结束的时刻查询新的消息。第二类消息是任务之间 相互传递的消息,任务知道消息的接受方。因此在两 个需要相互通信的任务之间直接建立消息邮箱和信号 量进行同步和通信。 状态机是记录任务运行状态的一种工具,对于数码 相框这个系统来说,在不同的运行状况下对于相同按键 的处理是不同的,所以必须通过状态机来实现任务的调 度和处理。本文的状态机实现采取分块的思想,即一级 图4 应用程序的状态机流程图 5.3数码相框系统的整体实现过程 计算机应用 Computer Applications 《自动化技术与应用 201 0年第2 9卷第8期 系统上电后从fla sh中执行boot.s启动代码, boot.s的主要作用就是初始化SDRAM,设置PLL,将 OSStart(); } 保存在flash中的CODE拷贝到SDRAM中。因为flash 中的数据可以永久保存,不会因为掉电而消失,而 SDRAM则不行。 6 结束语 本文讨论了U COS—II操作系统在ZEVIO 1020上的 移植过程,阐述了移植过程中的几个主要步骤,同时针 对数码相框这个电子消费产品给出了整个系统任务的 设计方法以及如何进行任务间的消息传递方案。解决 了系统中多任务之间相互切换和多任务同时运行的困 窘。充分挖掘了U COS—II操作系统的特性,灵活运用了 操作系统的资源并且予以实现。实验测试结果显示,各 种任务模块可以在预想的方案中实现灵活的调度。 在主函数main中初始化U COS—II操作系统,创建 总控任务、视频解码任务、音频解码任务、图片显示任 务、GUI界面任务,同时创建信号量和mailbox等系统 资源等待应用程序调用,启动U COS—II操作系统。此后 CPU的控制权交给操作系统,操作系统将CPU的控制 权首先给予优先级最高的总控任务[7]。 总控任务运行后,驱动所有外接设备,包括LCD驱 动、SPU驱动、GUI驱动、Timer驱动、双核的驱动, 开启必要的中断位,随后总控任务开始轮询外部消息, 有消息进来时根据上述描述的状态机,传递给其他任 务,运行其他任务,同时保证每隔5个时钟节拍重新轮 询一次消息队列,处理新的外部消息,没有新的消息立 即释放CPU的控制权,返回正在运行的任务。 void main(){ OSInit();//初始化U COS-II操作系统 E ̄-It 图5 基于UCOS-ll操作系统的数码相框实物图 MboxAudio=OSMboxCreate((void )0);//创建 应用程序所需的消息邮箱 Mbox3D:OSMboxCreate((void¥)0); 参考文献: [1】ZEVIO 1 020 Application Processor[Z】.LSI Logic Corporation,2006. MboxJpeg=OSMboxCreate((void )0); MboxGUI=OSMboxCreate((void )0); [2】邵贝贝等译.嵌入式实时操作系统UCOS—II 】.北京: 北京航空航天大学出版社,2003. [3】王磊,王耀南,陈斯斯,崔波亮.UCOS II在嵌入式智能 视觉监控系统中的应用[J】.微计算机信息2008,24(4):6 8. [4]冯涛,杨慧,马成勇.UCOS—II在基于C8051F120单片 MboxVideo=OSMboxCreate((void )0); writesem[0】=OSSemCreate(1);//创建应用程序 所需的信号量 writesem【1]:OSSemCreate(1); 机的智能文件柜中的应用【J】.计算机与数字工程,2008,36(8): 87-89. [5】Gregory K Wallace.The JPEG still picture com— pression standard[J】.IEEE Trans on Consumer Electronics, OSTaskCreate(Task daemon,(void )0,(OS_STK ) &TaskDaemonStk[0],1);//创建主控任务 OSTaskCreate(Task Video,(void )0,(OS—STK ) &TaskVideoStk[0],2);//视频解码任务 1992,38(1):1 l7. [6】李纪奎,向怀坤,胡泓,曹泉,刘建伟.基于UCOS—II的 视频动态交通信息采集系统研究fJ].哈尔滨工业大学学报,2007, 39(2):306-309. [7】杜春雷.ARM体系结构与编程lM】.北京:清华大学出版 社,2003. OSTaskCreate(Task Audio,(void )0,(0S_STK ) &TaskAudioStk[0],3);//音频解码任务 OSTaskCreate(Task_JPEG,(void )0,(OS STK ) &TaskJPEGStk[0],4);//JPEG解码任务 OSTaskCreate(Task一3D,(void十)0,(OS STK ) &Task3DStk[0】,5);//图片显示任务 OSTaskCreate(Task—GUI,(void )0,(OS—STK ) &TaskGUIStk[0],6);//GUI界面任务 作者简介:田野(1 9 7 8一),男,讲师,博士研究生。研究方向 智能天线阵列信号处理。