首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 家电技术 > 单元电路介绍 > 其它电路
UCOS-II 操作系统在数码相框中的应用
来源:本站整理  作者:佚名  2011-03-19 16:27:04



  摘要:传统的嵌入式系统软件设计中广泛采用单任务顺序机制,它带来的重要问题是编程复杂,同时系统的稳定性较差。为此,引入了 UCOS-II 实时 操作系统 来对多任务进行管理与调度,实践证明该系统对多任务的管理和调度有着卓越的性能和稳定性。本文成功将该系统运用于 数码相框 系统,详细描述了UCOS-II操作系统在ZEVIO1020双核处理器的移植过程,并且对于多任务的调度处理,设计了基于两级状态机的通信机制,解决了多任务之间消息处理复杂性的问题,最后给出了系统的实现过程。

  1、引言

  近年来,随着嵌入式技术的不断发展,各种电子产品层出不穷,对于那些具有众多功能,但按键数目无法满足要求的设备来说,选择一个好的操作系统和设计一套合理的消息处理机制,已经成为研发人员研究的一个课题。本文以此为背景,研究了UCOS-II操作系统在数码相框中的应用,详细描述了UCOS-II操作系统在ZEVIO1020双核处理器上的移植,并且根据数码相框多任务的特点,设计了一套完整的消息处理机制。实践证明,采取本文所设计的系统可以灵活的完成任务间的调度和切换。

  2、系统概述

  数码相框的主要特色是图片显示清晰,图片显示效果多种多样,同时还具有视频播放、音频播放、JPEG图片解码等附加功能。在本系统实现过程中主要分为六个模块:总控模块、GUI界面模块、图片显示模块、视频模块、音频模块、JPEG解码模块。总控模块实现对其它模块的管理与控制。图片显示模块通过ZEVIO1020双核处理器的3D图像内核处理,实现多种三维的动态显示效果,通过对定时器设置的改变,实现图片播放速率的调整。视频模块和JPEG解码模块因为对速度的要求较高,使用高速数据传输通道DMA来实现ARM和DSP之间的双核解码。音频模块可以解码MP3,WMA等多种音频格式。UCOS-II操作系统的任务就是在不同状态下,根据不同的键盘输入消息实现各个模块间的灵活调度。

  3、基于ZEVIO1020的系统硬件平台

  ZEVIO1020多媒体应用处理器是美国LSILogIC公司发布的第一款基于ZEVIO架构的标准芯片。具备低功耗、更高级图像和数字音/视频处理功能。ZEVIO1020处理器高度集成,包括通用处理的ARM9内核,多媒体处理的ZSP400内核,此外还包括了一个3D图像内核和一个2D/3DMIDI声音核,它也集成了一个视频DAC(数字到模拟转换器)用于直接输出到电视和一个SDIO(安全数字输入/输出)卡槽用于数据存储或者额外的周边扩展。

  ZEVIO1020处理器的开发平台如图1所示,它的通用处理内核ARM926EJ-S的工作主频为150MHz,作为系统主处理器,可以完成控制和数据处理工作;ZSP400DSP处理器为视频解码和JPEG解码工作提供了高效运行平台,工作主频为150MHz。除此之外,ZSP400具有双 MAC、双算法逻辑单元(ALU)DSP核,每周期4指令,正交的载入/存储指令集的特点。同时在ZEVIO1020的存储结构中,DMA提供了高速数据转移,能够完成ARM处理器和DSP处理器双核之间的高速数据传输。

ZEVIO1020平台体系架构

图1  ZEVIO1020平台体系架构

  4、UCOS-II在ZEVIO1020上的移植

  UCOS-II操作系统是完全可剥夺型的实时内核,可以同时管理64个任务,函数的调用和服务时间具有确定性。其内核提供的任务调度与管理,时间管理,任务间同步与通信,内存管理和中断服务等功能,具有执行效率高、占用空间小、实时性能优良和可扩展性强等特点。最小内核编译可以达到2KB。UCOS-II的移植主要是编写和处理器有关的代码,以及根据处理器设置中断向量表,提供给操作系统一个时钟作为系统时钟。

  OS_CPU_A.ASM是需要用户根据不同处理器的体系结构编写的汇编文件。该文件包括了四个函数:

  OSStartHighRdy()、OSStartHighRdy()、OSCtxSw()、OSINTCtxSw()、 OSTickISR()。OSStartHighRdy()的作用是运行就绪态任务优先级最高的任务。OSCtxSw()是实现CPU在正常运行时任务间的切换,即对当前任务堆栈的保存和对高优先级任务堆栈的弹出,使最高优先级任务获取CPU的控制权。OSIntCtxSw()是在中断服务程序中执行切换功能的函数。OSTickISR()是系统时钟的中断服务程序。该程序执行的频率为100HZ,主要功能是检查是否有由于延时而被挂起的任务成为就绪任务,如果有就调用OSIntCtxSw()进行任务切换,从而运行高优先级的任务。OS_CPU.C中主要编写任务堆栈初始化函数 OSTaskStkInit()。

[1] [2] [3]  下一页

关键词:

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)
Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:56,640.63000 毫秒