首页
|
新闻
|
新品
|
文库
|
方案
|
视频
|
下载
|
商城
|
开发板
|
数据中心
|
座谈新版
|
培训
|
工具
|
博客
|
论坛
|
百科
|
GEC
|
活动
|
主题月
|
电子展
注册
登录
论坛
博客
搜索
帮助
导航
默认风格
uchome
discuz6
GreenM
»
模拟电路
» μC/GUI在Nios II上的移植设计研究
返回列表
回复
发帖
发新话题
发布投票
发布悬赏
发布辩论
发布活动
发布视频
发布商品
μC/GUI在Nios II上的移植设计研究
发短消息
加为好友
forsuccess
当前离线
UID
871057
帖子
6281
精华
0
积分
3141
阅读权限
90
在线时间
282 小时
注册时间
2012-2-21
最后登录
2015-6-23
论坛元老
UID
871057
性别
男
1
#
打印
字体大小:
t
T
forsuccess
发表于 2012-11-11 23:25
|
只看该作者
μC/GUI在Nios II上的移植设计研究
便携式
,
日常生活
,
处理器
,
开发
便携式医疗监护仪已成为人们日常生活中不可缺少的一部分。便携式设备是由硬件与软件紧凑组合的一个单元模块,是一种体积小、智能化程度高、功能全、使用灵活、操作方便的便携机,适合家庭使用、外出携带等用途。为了使便携式心电监护仪实现友好的人机交互和更加方便的显示,这里提出一种GUI界面系统设计,就是在基于NiosⅡ处理器的嵌入式平台上实现μC/GUI的移植,使之实现系统功能。
1 μC/GUI的系统移植
1.1 μC/GUI简介及可移植性分析
μC/GUI是Micrium公司开发的通用的嵌入式图形用户界面软件,其中图形用户接口GUI(Graphical User Interface)。该界面软件被设计用于为任何使用一个图形LCD的应用提供一个有效的不依赖于处理器和LCD控制器的图形用户接口。它能工作于单任务或多任务的系统环境下。μC/GUI适用于使用任何LCD控制器和CPU的任何尺寸的物理和虚拟显示,具有源代码开放及模块化设计的特点。
μC/GUI的代码全部用ANSI的C语言编写的,具有很强的移植性。由于μC/GUI采用分层结构,即具有驱动接口层和应用层,因此可方便地移植到各种 CPU下使用。μC/GUI对各类图像LCD显示器具有良好的支持,并且有常见的2D图形库和窗口管理功能,而且消耗较少的系统资源,占用RAM和ROM 的空间很小。在典型的应用中,μC/GUI需要的资源如表1所示。由表1可见,运行μC/GUI需要的系统资源不是很多,并支持几乎所有类型的CPU与大多数的LCD模块,μC/GUI的源代码规模适中,移植过程中可将不需要的代码进行剔除,而且结构层次清晰,因此适合用于嵌入式系统中。
1.2 μC/GUI移植原理
嵌入式用户图形界面系统μC/GUI与嵌入式实时操作系统μC/OS-Ⅱ都是美国Micrium公司产品,μC/GUI能更轻易地在 μC/OS-Ⅱ上应用,实现与μC/0S-Ⅱ的无缝结合。在NiosⅡ嵌入式系统中,Altera公司已经将μC/OS-Ⅱ操作系统移植成功并且提供使用,所做的工作是将μC/GUI移植到NiosⅡ嵌入式平台之上,使其能与μC/OS-Ⅱ操作系统结合使用,采用μC/GUI 3.98版本的源代码进行移植。
μC/GUI的软件体系结构如图1所示,μC/GUI函数库为用户程序提供GUI接口,包含的函数有文本、数值、二维图形、输入设备以及各种窗口对象。其中,输入设备可以是键盘、鼠标或触摸屏;二维图形包括图片、直线、多边形、圆、椭圆、圆弧等;窗口对象包括按钮、编辑框、进度条、复选框等。
μC/GUI函数库可以通过GUIConf.h文件进行配置,包括内存设备,窗口管理器,支持操作系统、触摸屏,以及配置动态内存的大小等。在移植中,需要根据系统需要以外设所支持的功能对GUIConf.h文件进行配置。
在LCDConf.h文件中定义了与硬件有关的各种属性,如液晶的大小、颜色以及与液晶的接口函数。而LCD驱动文件则负责把μC/GUI的各种函数解释成LCDConf.h文件定义的液晶接口函数,这个文件与具体的硬件连接无关。在移植时,需要对LCDConf.h文件进行配置,并针对LCD控制器编写相应的LCD驱动文件。
2 μC/GUI在NiOSⅡ上的移植设计
2.1 TFT LCD IP核结构
μC/GUI的移植是基于IP核的移植,编写TFT LCD控制器,所以移植时,在底层配置文件,参数的配置要和TFT LCDIP的相关参数相匹配,否则不可能移植成功,该IP核的结构如图2所示。
液晶屏采用台湾统宝公司的TRDB_LCM 3.6寸屏,该屏的分辨率是320x240,支持24位色,也就是RGB888模式,但是由于Avalon总线支持传输数据宽度的差异,因此只用16位色,即RGB为565的模式。由于DE2-70有2个32 MB的SDRAM,所以拿使用其中一块作为数据的存储器,Nio-sⅡ处理器将图像数据写入该SDRAM中,在NiosⅡIDE中用软件控制缓冲器的开启,当开启缓冲器之后,该BUFFER会源源不断地读取SDRAM中的数据,为避免读数据和NiosⅡ处理器向其中写入数据时发生冲突,Avalon总线自动在二者之间加入了一个Arbitrator仲裁模块来决定执行哪个操作。
配置LCD采用3线串行总线配置LCD,缓冲器以Avalon存储器映像主机的方式从SDRAM中读取数据,然后以Avalon Streaming Soume的方式把这些数据传送到LCD控制器上,LCD控制器是以Avalon Streaming Sink的方式接收从缓冲器传来的数据,LCD控制器生成时序,在适当时候将数据送出到TFT LCD屏上显示。
2.2 移植过程
2. 2.1 μC/GUI的文件组织结构
μC/GUI是以ANSI C源码包的形式提供的。源码包由配置文件目录(Config)和库函数目录(GUI)2个文件目录组成。在Config目录中包含了LCDConf.h、GUITouchConf.h、GUIConf.h 3个配置文件,这3个文件分别用于LCD底层接口的配置、触摸屏底层接口的配置以及μC/GUI自身的配置。在GUI目录中的库函数文件按照不同功能又分成若干子目录如图3所示,各子目录所实现的功能如表2所示。
2.2.2 移植过程
首先建立一个硬件系统,采用Altera公司的QuartusⅡ9.0版本的配套软件,硬件系统在QuartusⅡ集成的 SOPCBuilder系统开发工具中建立,添加NiosⅡ处理、JTAG调试模块、添加定时器SDRAM控制器、BUFFER IP、TFT LCD IP以及其他部分组件,最后生成一个硬件系统。然后在NiosⅡIDE环境下针对该系统建立一个TFT LCD软件工程,并且将μC/GUI有关的源代码拷贝到工程目录下,修改LCDConf.h、GUIConf. h、LCDLin32.c以及GUI_X_uCOS.c文件,使之与LCD控制相匹配,在该系统中,LCD采用16位数据总线,而CPU是32位的 NiosⅡ软核处理器,先查看一下μC/GUI所支持的数据宽度信息,其数据宽度和NiosⅡ处理器所支持的宽度基本吻合,只要在改动代码时注意就可以。以下是具体的代码实现情况:
因为这里是基于TFT LCD IP核的移植,所以要定义LCD的读写函数,即LCD_READ_MEM(Off)和LCD_WRITE_MEM(Off,data)以及显示缓存区的起始位置,读写函数中的Off和data都是32位的无符号数,而操作函数IORD_32DIRECT()以及IOWR_32DIRECT()都是一次执行 32位数的操作,刚好和NiosⅡ处理器的数据宽度相匹配。由于支持μC/OS-Ⅱ操作系统,所以要对GUI_X_uCOS.c文件进行修改,增加系统延时函数OSTimeDly(1),使之能与μC/OSⅡ操作系统实现无缝衔接,以及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);};LCDLin32.e是对应3200型号控制器的驱动文件,由于在LCDConf.h中已经对用到的参量进行设置,所以无需修改,剩下的工作就是把不用的文件进行剔除,以减少编译时产生多余的代码量。
3 移植验证
在NiosⅡIDE环境下修改配置文件以及驱动文件,然后编译该系统,系统编译成功,编译成功之后还有MICRIUM公司的联系方式,这个是提醒用户该系列软件如果要用于商业目的是需要买license的,用于研究目的是免费的。
图片验证是采用μC/GUI自带的位图转换工具uC-GUI-BitmapConvert.exe,该工具可以将.bmp格式图片转换成指定的C语言数组的形式保存,例如将兰博基尼跑车标志的图片转换成RGB565的格式进行保存,加入工程,编译工程,然后下载验证,如图4所示。窗口管理组件验证采用代码包中自带的一个测试代码,其效果如图5所示。实验结果表明,移植是成功的。
4 结论
本文介绍了μC/GUI界面系统,以及NiosⅡ嵌入式系统,详细介绍了移植的过程,以及最终实现移植。实验结果表明,在嵌入式系统中使用μC/GUI进行人机界面的开发,不但移植简单、使用灵活,而且功能强大,稳定高效,大大降低了在嵌入式系统中开发图形人机界面的复杂程度,而且 μC/GUI还提供了几个非常实用的工具软件,其中包括一个仿真器,它使得在进行移植工作的同时,就可以在仿真器上进行软件界面部分的程序编写,加快了整个系统的开发进度。还有位图转换工具,可以轻松地将图片转换成C语言数组的形式保存,方便界面开发。μC /GUI还支持其他PS2鼠标、PS2键盘、触摸屏,包含丰富的绘图库、动画显示优化、还可以自己加入中文字体,通过使用μC/GUI的各项功能,相信可以在嵌入式系统中开发出功能强大的人机界面,而且在嵌入式系统中有很好的应用前景。
收藏
分享
评分
回复
引用
订阅
TOP
返回列表
电商论坛
Pine A64
资料下载
方案分享
FAQ
行业应用
消费电子
便携式设备
医疗电子
汽车电子
工业控制
热门技术
智能可穿戴
3D打印
智能家居
综合设计
示波器技术
存储器
电子制造
计算机和外设
软件开发
分立器件
传感器技术
无源元件
资料共享
PCB综合技术
综合技术交流
EDA
MCU 单片机技术
ST MCU
Freescale MCU
NXP MCU
新唐 MCU
MIPS
X86
ARM
PowerPC
DSP技术
嵌入式技术
FPGA/CPLD可编程逻辑
模拟电路
数字电路
富士通半导体FRAM 铁电存储器“免费样片”使用心得
电源与功率管理
LED技术
测试测量
通信技术
3G
无线技术
微波在线
综合交流区
职场驿站
活动专区
在线座谈交流区
紧缺人才培训课程交流区
意见和建议