基于NiosⅡ处理器的嵌入式平台上实现μC/GUI的移植设计.doc

上传人:白大夫 文档编号:3411387 上传时间:2019-08-22 格式:DOC 页数:5 大小:20KB
返回 下载 相关 举报
基于NiosⅡ处理器的嵌入式平台上实现μC/GUI的移植设计.doc_第1页
第1页 / 共5页
亲,该文档总共5页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《基于NiosⅡ处理器的嵌入式平台上实现μC/GUI的移植设计.doc》由会员分享,可在线阅读,更多相关《基于NiosⅡ处理器的嵌入式平台上实现μC/GUI的移植设计.doc(5页珍藏版)》请在三一文库上搜索。

1、基于Nios处理器的嵌入式平台上实现CGUI的移植设计便携式医疗监护仪已成为人们日常生活中不可缺少的一部分。便携式设备是由硬件与软件紧凑组合的一个单元模块,是一种体积小、智能化程度高、功能全、使用灵活、操作方便的便携机,适合家庭使用、外出携带等用途。为了使便携式心电监护仪实现友好的人机交互和更加方便的显示,这里提出一种GUI界面系统设计,就是在基于Nios处理器的嵌入式平台上实现CGUI的移植,使之实现系统功能。1 CGUI的系统移植11 CGUI简介及可移植性分析CGUI是Micrium公司开发的通用的嵌入式图形用户界面软件,其中图形用户接口GUI(Graphical User Interf

2、ace)。该界面软件被设计用于为任何使用一个图形LCD的应用提供一个有效的不依赖于处理器和LCD控制器的图形用户接口。它能工作于单任务或多任务的系统环境下。CGUI适用于使用任何LCD控制器和CPU的任何尺寸的物理和虚拟显示,具有源代码开放及模块化设计的特点。CGUI的代码全部用ANSI的C语言编写的,具有很强的移植性。由于CGUI采用分层结构,即具有驱动接口层和应用层,因此可方便地移植到各种 CPU下使用。CGUI对各类图像LCD显示器具有良好的支持,并且有常见的2D图形库和窗口管理功能,而且消耗较少的系统资源,占用RAM和ROM 的空间很小。在典型的应用中,CGUI需要的资源如表1所示。由

3、表1可见,运行CGUI需要的系统资源不是很多,并支持几乎所有类型的CPU与大多数的LCD模块,CGUI的源代码规模适中,移植过程中可将不需要的代码进行剔除,而且结构层次清晰,因此适合用于嵌入式系统中。12 CGUI移植原理嵌入式用户图形界面系统CGUI与嵌入式实时操作系统COS-都是美国Micrium公司产品,CGUI能更轻易地在 COS-上应用,实现与C0S-的无缝结合。在Nios嵌入式系统中,Altera公司已经将COS-操作系统移植成功并且提供使用,所做的工作是将CGUI移植到Nios嵌入式平台之上,使其能与COS-操作系统结合使用,采用CGUI 398版本的源代码进行移植。CGUI的软

4、件体系结构如图1所示,CGUI函数库为用户程序提供GUI接口,包含的函数有文本、数值、二维图形、输入设备以及各种窗口对象。其中,输入设备可以是键盘、鼠标或触摸屏;二维图形包括图片、直线、多边形、圆、椭圆、圆弧等;窗口对象包括按钮、编辑框、进度条、复选框等。CGUI函数库可以通过GUIConfh文件进行配置,包括内存设备,窗口管理器,支持操作系统、触摸屏,以及配置动态内存的大小等。在移植中,需要根据系统需要以外设所支持的功能对GUIConfh文件进行配置。在LCDConfh文件中定义了与硬件有关的各种属性,如液晶的大小、颜色以及与液晶的接口函数。而LCD驱动文件则负责把CGUI的各种函数解释成L

5、CDConf.h文件定义的液晶接口函数,这个文件与具体的硬件连接无关。在移植时,需要对LCDConfh文件进行配置,并针对LCD控制器编写相应的LCD驱动文件。2 CGUI在NiOS上的移植设计21 TFT LCD IP核结构CGUI的移植是基于IP核的移植,编写TFT LCD控制器,所以移植时,在底层配置文件,参数的配置要和TFT LCDIP的相关参数相匹配,否则不可能移植成功,该IP核的结构如图2所示。液晶屏采用台湾统宝公司的TRDB_LCM 36寸屏,该屏的分辨率是320x240,支持24位色,也就是RGB888模式,但是由于Avalon总线支持传输数据宽度的差异,因此只用16位色,即R

6、GB为565的模式。由于DE2-70有2个32 MB的SDRAM,所以拿使用其中一块作为数据的存储器,Nio-s处理器将图像数据写入该SDRAM中,在NiosIDE中用软件控制缓冲器的开启,当开启缓冲器之后,该BUFFER会源源不断地读取SDRAM中的数据,为避免读数据和Nios处理器向其中写入数据时发生冲突,Avalon总线自动在二者之间加入了一个Arbitrator仲裁模块来决定执行哪个操作。配置LCD采用3线串行总线配置LCD,缓冲器以Avalon存储器映像主机的方式从SDRAM中读取数据,然后以Avalon Streaming Soume的方式把这些数据传送到LCD控制器上,LCD控制

7、器是以Avalon Streaming Sink的方式接收从缓冲器传来的数据,LCD控制器生成时序,在适当时候将数据送出到TFT LCD屏上显示。22 移植过程2. 21 CGUI的文件组织结构CGUI是以ANSI C源码包的形式提供的。源码包由配置文件目录(Config)和库函数目录(GUI)2个文件目录组成。在Config目录中包含了LCDConfh、GUITouchConfh、GUIConfh 3个配置文件,这3个文件分别用于LCD底层接口的配置、触摸屏底层接口的配置以及CGUI自身的配置。在GUI目录中的库函数文件按照不同功能又分成若干子目录如图3所示,各子目录所实现的功能如表2所示。

8、222 移植过程首先建立一个硬件系统,采用Altera公司的Quartus90版本的配套软件,硬件系统在Quartus集成的 SOPCBuilder系统开发工具中建立,添加Nios处理、JTAG调试模块、添加定时器SDRAM控制器、BUFFER IP、TFT LCD IP以及其他部分组件,最后生成一个硬件系统。然后在NiosIDE环境下针对该系统建立一个TFT LCD软件工程,并且将CGUI有关的源代码拷贝到工程目录下,修改LCDConfh、GUIConf h、LCDLin32c以及GUI_X_uCOS.c文件,使之与LCD控制相匹配,在该系统中,LCD采用16位数据总线,而CPU是32位的N

9、ios软核处理器,先查看一下CGUI所支持的数据宽度信息,其数据宽度和Nios处理器所支持的宽度基本吻合,只要在改动代码时注意就可以。以下是具体的代码实现情况:因为这里是基于TFT LCD IP核的移植,所以要定义LCD的读写函数,即LCD_READ_MEM(Off)和LCD_WRITE_MEM(Off,data)以及显示缓存区的起始位置,读写函数中的Off和data都是32位的无符号数,而操作函数IORD_32DIRECT()以及IOWR_32DIRECT()都是一次执行 32位数的操作,刚好和Nios处理器的数据宽度相匹配。由于支持COS-操作系统,所以要对GUI_X_uCOSc文件进行修

10、改,增加系统延时函数OSTimeDly(1),使之能与COS操作系统实现无缝衔接,以及3个子函数,void GUI_X_Log(const char*s)GUI_USE_PARA (s);void GUI_X_Warn(const char*s)GUI_USE_PARA(s);void GUI_X_ErrorOut(const char*s) GUI_USE_PARA(s);LCDLin32e是对应3200型号控制器的驱动文件,由于在LCDConfh中已经对用到的参量进行设置,所以无需修改,剩下的工作就是把不用的文件进行剔除,以减少编译时产生多余的代码量。3 移植验证在NiosIDE环境下修改

11、配置文件以及驱动文件,然后编译该系统,系统编译成功,编译成功之后还有MICRIUM公司的联系方式,这个是提醒用户该系列软件如果要用于商业目的是需要买license的,用于研究目的是免费的。图片验证是采用CGUI自带的位图转换工具uC-GUI-BitmapConvertexe,该工具可以将bmp格式图片转换成指定的C语言数组的形式保存,例如将兰博基尼跑车标志的图片转换成RGB565的格式进行保存,加入工程,编译工程,然后下载验证,如图4所示。窗口管理组件验证采用代码包中自带的一个测试代码,其效果如图5所示。实验结果表明,移植是成功的。4 结论本文介绍了CGUI界面系统,以及Nios嵌入式系统,详

12、细介绍了移植的过程,以及最终实现移植。实验结果表明,在嵌入式系统中使用CGUI进行人机界面的开发,不但移植简单、使用灵活,而且功能强大,稳定高效,大大降低了在嵌入式系统中开发图形人机界面的复杂程度,而且 CGUI还提供了几个非常实用的工具软件,其中包括一个仿真器,它使得在进行移植工作的同时,就可以在仿真器上进行软件界面部分的程序编写,加快了整个系统的开发进度。还有位图转换工具,可以轻松地将图片转换成C语言数组的形式保存,方便界面开发。C GUI还支持其他PS2鼠标、PS2键盘、触摸屏,包含丰富的绘图库、动画显示优化、还可以自己加入中文字体,通过使用CGUI的各项功能,相信可以在嵌入式系统中开发出功能强大的人机界面,而且在嵌入式系统中有很好的应用前景。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1