下载
加入VIP
  • 专属下载特权
  • 现金文档折扣购买
  • VIP免费专区
  • 千万文档免费下载

上传资料

关闭

关闭

关闭

封号提示

内容

首页 uc gui的移植

uc gui的移植.doc

uc gui的移植

小猫腻
2018-05-29 0人阅读 举报 0 0 暂无简介

简介:本文档为《uc gui的移植doc》,可适用于领域

ucgui的移植ucgui是一个优秀的嵌入式图形用户界面前段时间将它移植到niosII系统上。在阅读了相关文档后动手实践这下面的很多过程都是自己摸索出来的并通过了实验的验证。写这篇文章的目的一是由于自己记性不好所以需要给自己留个备忘免得以后忘的一干二净。一、源码和文档下载目前能下到的最新版本是不过还有一些组件不是很完整但作基础开发已经够用了。在使用的基础上我还添加了版本的JPEG文件夹以便于从SD卡中读取图片数据。在开发过程中有两个东西是特别管用的。UCGUI的中、英文用户手册(英文中包含了更多详细内容)另外一个是下载的源码中GUIV自带的例程对于各个模块的使用都有详细例子。这个主要在uCSampleGUI里面只要将例程添加到uCGUIVStartApplication中便能看到实际效果。这是GUI的一个特点在VC下模拟应用程序效果。开发软件:quartusII,NiosIIIDE。二、移植过程先来看看解压后都有些什么东西:核心的东西包括Config和GUI两个文件夹这里面是ucgui的所有源码和配置文件。ConvertColor包含彩色转换函数ConvertMono包含灰度到彩色转换的函数Core包含核心程序Font是字体文件LCDDriver包含多种控制器驱动Widget是窗口控件库WM是窗口库提供复杂的功能。其他文件夹包含一些应用范例以及一些有用的工具留待慢慢探索。、config文件的移植:Config文件夹是ucgui的配置文件夹里面有个文件:GUIConfh:gui的基本属性配置文件有很多开关可以配置具体可以参考ucgui的用户手册这里只需配置几个必要的参数如下:#ifndefGUICONFH#defineGUICONFH#defineGUIOS()#defineGUISUPPORTTOUCH()#defineGUISUPPORTMOUSE()#defineGUISUPPORTUNICODE()#defineGUIDEFAULTFONTGUIFontx#defineGUIALLOCSIZE#defineGUIWINSUPPORT#defineGUISUPPORTMEMDEV#defineGUISUPPORTAA#endifLCDConfh:LCD控制器的硬件配置文件这个文件与硬件直接相关一般是根据你所使用的LCD的类型和所用的LCD控制器的类型来配置。我的配置是一块友晶公司的*的触摸屏支持位色不过我只使用位RGB色彩模式足矣。LCD控制器就是写的一个硬件模块挂在avalon总线上负责读取显示缓冲区中的数据然后按照该LCD的时序输出显示到LCD上。显示缓冲区直接开辟在系统内存中系统使用一块KSRAM作为系统内存CPU可以直接对其进行位读写访问。通过仔细阅读ucgui的用户手册可以知道在我这种硬件配置条件下可以选择LCDLinc这个驱动文件那么对应了LCDCONTROLLER配置为。在实际配置时LCD大小为*这是因为在硬件工程的pixbuffer模块中对分辨率进行了硬扩。#includesystemh#includealteraavalonpioregsh#defineLCDXSIZE()#defineLCDYSIZE()#defineLCDBITSPERPIXEL()#defineLCDCONTROLLER#defineLCDENDIANBIG#defineLCDFIXEDPALETTE#defineLCDSWAPRB#defineLCDVRAMADRSRAMBASE#defineLCDBUSWIDTH#defineLCDOPTIMIZE#defineLCDREADMEM(Off)IORDDIRECT(LCDVRAMADR,(Off))#defineLCDWRITEMEM(Off,data)IOWRDIRECT(LCDVRAMADR,(Off),data)#defineLCDINITCONTROLLER()在这里最重要的就是LCDREADMEM(Off)LCDWRITEMEM(Off,data)的定义当时在LCD驱动文件上花了很大时间仔细研究了LCDLinc文件后发现很多都是针对特定的LCD控制器写的我们根本用不到由于LCD控制器中已经对LCD屏进行了初始化所以在这里LCDINITCONTROLLER()也不必定义。GUITouchConfh:触摸屏的配置文件。#defineGUITOUCHADLEFT#defineGUITOUCHADRIGHT#defineGUITOUCHSWAPXY#defineGUITOUCHMIRRORX#defineGUITOUCHMIRRORY这里要根据特定的触摸屏来定义主要修改GUICoreGUITOUCHDriverAnalogc文件在后面将会继续讲述。至此config文件移植完毕。、LCDdevice驱动的移植将GUILCDDriver里面的其他驱动程序删掉只留下前面所说的LCDLinc文件。LCDLinc在GUILCDDriver文件夹中其中定义了几个关键的函数用于gui对显示缓冲区进行操作如voidLCDLSetPixelIndex(intx,inty,intPixelIndex)unsignedintLCDLGetPixelIndex(intx,inty)voidLCDLXorPixel(intx,inty)voidLCDLDrawHLine(intx,inty,intx)voidLCDLDrawVLine(intx,inty,inty)voidLCDLFillRect(intx,inty,intx,inty)voidLCDLDrawBitmap(intx,inty,intxsize,intysize,intBitsPerPixel,intBytesPerLine,constUGUIUNIPTR*pData,intDiff,constLCDPIXELINDEX*pTrans)voidLCDOn(void)voidLCDOff(void)由于我的LCD不具备打开和关闭功能所以LCDOn()和LCDOff()定义为空函数。在上述的几个画点画线函数中与硬件(显示缓冲区)直接相关的就是LCDWRITEMEM(Off,data)LCDREADMEM这两个函数在头文件中已经定义好。在研究过程中为了方便我将一些不会用到的函数删掉。这样LCDLinc就基本上修改完毕了。当然我们还可以修改其画点画线矩阵填充画位图等函数使之对于我们特定的硬件更加优化以提高执行效率这是后话。到目前为止gui已经能够正确地操作我们的硬件了。三、运行第一个程序:hellogui下面我们就让刚移植好的gui到实际的系统上去运行一下。、配置好FPGA的硬件、打开niosIIIDE以helloworld工程为模版建立一个新的工程hellogui、将ucgui的Config和GUI两个文件夹(包含有我们刚刚修改过的几个文件)复制到工程目录下、在hellogui工程选项中添加如下includepaths:yourprojectdirsoftwarehelloguiConfigyourprojectdirsoftwarehelloguiGUICoreyourprojectdirsoftwarehelloguiGUIWidgetyourprojectdirsoftwarehelloguiGUIWM、修改helloworldc的内容为:#include"GUIH"#includesystemhvoidmain(void){GUIInit()GUISetBkColor(GUIBLUE)GUIClear()GUISetColor(GUIRED)GUIDispString("Helloworld~")while()}、在systemlibrary选项中选择RTOS为MicroCOSII这时如果编译工程会出现一些未定义错误类似于GUIX未定义等等原来是缺少GUIXc文件这个文件定义了gui与rtos的接口以及debug错误报告等函数于是我们需要添加这个文件。经过寻找在Sample文件夹中发现了GUIX这个文件夹打开一看里面有我们所需要的GUIXc文件由于我们使用了MicroCOSII操作系统所以我们使用其中的GUIXuCOSc文件将这个文件copy到工程目录下并在文件结尾添加下面这几行:voidGUIXLog(constchar*s){GUIUSEPARA(s)}voidGUIXWarn(constchar*s){GUIUSEPARA(s)}voidGUIXErrorOut(constchar*s){GUIUSEPARA(s)}并将其中的:voidGUIXExecIdle(void){OSXDelay()}改为:voidGUIXExecIdle(void){OSTimeDly()}方可编译通过。、Debugashardware这样就可以看见结果了。我的结果是LCD上用篮底红字显示出了"helloworld~"字样。表示ucgui在NiosII上初步移植成功~四、总结至此ucgui在NiosII上的移植获得了初步的成功。在这个过程中花费了比较多的时间最后发现移植下来还比较容易不得不承认很多东西都要亲自动手去做才会有所收获。

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

文档小程序码

使用微信“扫一扫”扫码寻找文档

1

打开微信

2

扫描小程序码

3

发布寻找信息

4

等待寻找结果

我知道了
评分:

/7

uc gui的移植

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利