基于ucgui多任务系统的图形用户界面开发

基于ucgui多任务系统的图形用户界面开发

ID:34544428

大小:249.68 KB

页数:6页

时间:2019-03-07

基于ucgui多任务系统的图形用户界面开发_第1页
基于ucgui多任务系统的图形用户界面开发_第2页
基于ucgui多任务系统的图形用户界面开发_第3页
基于ucgui多任务系统的图形用户界面开发_第4页
基于ucgui多任务系统的图形用户界面开发_第5页
资源描述:

《基于ucgui多任务系统的图形用户界面开发》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、http://www.paper.edu.cn基于ucGUI多任务系统的图形用户界面开发吴建鲁江苏自动化研究所,江苏连云港(222006)E-mail:wujianlucool2006@163.com摘要:图形用户界面是人与计算机进行交互的一种操作方式,它的质量直接影响着产品的推广和用户的使用效率。针对嵌入式系统中图形用户界面应用的广泛需求,本文介绍ucos-II和ucGUI在S1C33209上的移植过程,并在此基础上实现了ucGUI多任务系统中图形用户界面的开发。关键词:ucos-II;ucGUI;移植;图形用户界面1引言与命令式

2、用户界面(CommandLineIserInterface)不同,图形用户界面(GraphicalUserInterface,GUI)不需要用户通过输入专业性很强的抽象命令来操作计算机,而代之以窗口、图标、菜单等直观的图形或图标,再加上可以控制光标移动的指示装置来完成数据和控制命令的输入,从而实现对计算机的交互式操作。由于这样的用户界面不需要记忆专门性很强的[1]控制命令并且非常直观易懂,图形用户界面受到了普遍的欢迎。ucGUI是Micrium公司出品的一款针对嵌入式系统的开放源代码的优秀图形软件,它为任何使用LCD图形显示的应用提

3、供高效的独立于处理器及LCD控制器的图形用户接口。适用于单任务或是多任务系统环境,并适用于任意LCD控制器和CPU下任何尺寸的真实显示与虚拟显示。架构基于模块化设计,由不同的模块中的不同层组成。采用100%的标准C代码编写,由一个LCD驱动层来包含所有对LCD的具体图形操作,ucGUI可以在任何CPU上运行。在ucGUI单任务系统中,程序顺序的执行,一个软件单元的反应时间依赖于这个系统中所有其他单元的执行时间,实时行为变得极为有限。为了增强实时性,采用ucGUI多任务系统,使用开放源代码ucos-II实时内核,把应用程序分割成不同的

4、部分运行在不同的任务中,具有不同的优先级。这样,任务的实时行为只受运行在更高优先级的任务影响,系统的实时性得到极大的改善。本文使用AEDK-EMB33实验系统,介绍ucos-II在S1C33209处理器上的移植以及ucGUI的移植过程,并在此基础上研究开发基于ucGUI的图形用户界面。2系统硬件资源简介AEDK-EMB33嵌入式系统实验平台的硬件采用模块化、开放式的结构设计,采用底板[2]+CPU板+扩展槽的系统结构。系统主要硬件资源如下:核心的MCU为S1C33209:cpu指令采用RISC架构,内部为16位指令集;硬件采用Har

5、vand结构,内部独立总线方式;最大处理速度60MIPS。显示和键盘专用接口:一个复位按键和20个按键输入,采用5×4矩阵键盘;彩色320×240,(STN)256色LCD显示;4线电阻式触摸屏。3ucos-II和ucGUI的移植由于嵌入式系统中具体硬件组成和参数大都不同,ucos-II和ucGUI移植的目的就是针对具体硬件及其配置修改源码底层和硬件相关的部分,添加一些内核没有的外设驱动并修改相应得配置文件,为应用程序的开发提供前提条件。3.1ucos-II的移植为了增强系统的实时性,采用ucGUI多任务系统,在系统中移植一个uco

6、s-II实时内核。移植ucos-II的主要工作是修改3个与cpu相关的文件:os_cpu_c.c,os_cpu_a.s,os_cpu.h,1http://www.paper.edu.cn[3]修改中断向量表入口地址。os_cpu.h主要是定义和处理器S1C33209相关的数据结构,为了保护核心数据不被多任务环境下的其他任务或中断破坏,ucos-II在进入系统得临界代码区时要关闭中断,等退出时再打开中断,因此要在这个文件中定义开关中断的方式及指令实现,并对堆栈的增长方向进行定义。os_cpu_a.s需要对处理器的寄存器进行操作,一般采

7、用汇编语言编写,如果处理器支持也可以在c语言中嵌入汇编来解决。主要包括OSStartHighRdy(),OSCtxSw(),OSIntCtxSw(),OSTickISR()4个函数。OSStartHighRdy()在多任务系统启动函数OSStart()中调用,完成的功能是:设置系统运行标志位OSRunning=TRUE;将就绪表中最高优先级任务的栈指针加载到sp中,并强制中断返回。这样就绪的最高优先级任务就如同从中断返回到运行态一样,使得整个系统得以运转。OSCtxSw()在任务级切换函数中调用的,任务级切换是通过发软件中断指令或处

8、理器执行陷阱指令来实现的,ISR的向量地址必须指向OSCtxSw()。OSIntCtxSw()在程序退出中断服务函数OSIntExit()中调用,实现中断级任务切换。由于是在中断里调用,所以所有的处理器的寄存器入栈工作已经做完,就不用

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。