ucgui是一个开源的轻型嵌入式GUI,使用广泛,资料丰富,功能完整,尤其适合嵌入式产品的GUI。只是它开源但不免费。仅管如此,移植来玩玩还是可以的。

从这节开始,介绍ucgui移植到eCos方法与步骤。大抵分为3章节:建立ucgui编译工程、让ucgui在eCos中运行起来和触摸功能移植。本节主要介绍如何建立ucgui的编译工程。

前言^有感

从写eCos LCD驱动开始,就一直在寻找一个即开源免费又是针对嵌入式产品设计的GUI,可惜直到今天都未能如愿,我想这也是很多嵌入式工程师在选择GUI时所遇到的困惑吧。

关于ucgui,这里就不多介绍了,网上一大把。之前未曾接触这个GUI,移植完成后,发现这个GUI确实挺好用,麻雀虽小,五脏俱全,移植也方便。下面是按照本人的一个移植过程来进行介绍的。

关于ucgui版本

网上有很多ucgui源码版本,一开始我纠结于使用哪个版本更好。最后开源的版本是3.98,本应该使用这个版本,但下载下来的源码包没有JPEG功能代码,所以退而求其次,使用3.90版本的ucgui。

使用ucgui仿真工程image

以前编写单色LCD程序的时候,也有使用windows下的仿真,模拟出一个LCD屏,然后在windows下写显示程序并调试,最后再下到板子上,节省了大把程序下载调试的时间,大大提高了开发效率。

ucgui亦提供了windows下的仿真工程,使用VC6建立程,这是个很老的工程,还好可以很方便的使用Microsoft Visual Studio 2008打开并转为VS2008工程。

用VS2008直接打开ucgui3.90版本源码中的Simulation.dsw工程后,会对工程进行转换。工程转换没问题,编译也没问题,但在链接时会提示找不到LIBC.lib。

解决方法:在VS2008中忽略它就可以了,找到“项目->属性->链接器->输入->忽略特定库”,可以看到工程默认忽略的是libcmt.lib,我们把它替换为忽略LIBC.lib,这样链接就可以通过了。如果是把LIBC.lib添加到忽略特定库中,链接还是不能通过,这点需要注意。

在windows上运行ucgui的demo程序,如下图所示:

image

ucgui移植eCos步骤

  1. 建立编译工程,编写makefile;
  2. 配置ucgui,按照模板填充ucgui LCD驱动接口函数;
  3. 编写ucgui测试程序并调试;
  4. 移植ucgui触摸功能;

本节介绍建立编译工程,2、3步骤放到第二章节,4步骤放到第三章节。

移植前,如果还不太熟悉ucgui的移植,可以先阅读下面两个链接提供的介绍:

ucgui交叉编译工程

网上绝大部分ucgui的移植是基于IDE环境,如MDK、IAR等。交叉编译ucgui的例子甚少。本次交叉编译工程设计思路如下:

  • 以goAhead eCos的makefile为模板,编写ucgui eCos的makefile,把ucgui交叉编译为静态库文件;
  • 设计工程目录结构,保留ucgui源码的完整性,不破坏其代码结构;
  • 提供ucgui交叉编译测试程序,用户可以方便选择是否编译测试程序;

工程目录结构 image

工程目录结构如右图所示。

  • bin目录:存放编译目标文件;
  • obj目录:存放.o和.d文件;
  • test目录:存放测试程序;
  • UCGUI3.90:ucgui源码包;

其中,要说的是,把ucgui编译的.o和.d文件放到指定目录中,会增加makefile的设计难度,但这样设计的话,会让整体工程更加清晰,更加干净整洁。

test目录下,有测试程序源文件test_ucgui.c和UCGUI带的demo程序:GUIDemo。

makefile编写

编写makefile应当是移植ucgui到eCos工作难度比较大的一部分。但我们绝不用从0开始,可以goAhead eCos的makefile为模板,在此基础上进行修改。

这也提供了一种应用程序设计思路:使用第3方代码时,我们可以把它编译成静态库,最后链接到我们的应用程序中。实际上这也是一种通用的设计方法。很多第3方代码,虽然开源,但是想把代码加入到用户应用程序中却可能是有条件的,比如公开你的代码等。这种情况下,可能允许你使用静态库的方法而无需公开你的代码。

所以,这也是把ucgui编译为一个静态库的缘由。

具体怎么编写和修改makefile,这里就不做多介绍,因为makefile涉及较多知识内容。这里仅介绍makefile中几个变量和编译目标:

makefile中的几个变量:

1> HOST:设定你的编译主机,是LINUX还是CYGWIN;
2> 根据编译主机,修改ECOS_REPOSITORY,即ECOS仓库路径;
3> 根据编译主机,修改PKG_INSTALL_DIR,即ECOS安装路径;

编译目标:

make:     只生成ucgui静态库,名称为libucgui.a;
make test:除生成ucgui静态库外,还生成一个ucgui的测试程序映像文件:test_ucgui

源码下载

移植好的ecos ucgui工程下载链接:http://52ecos.net/thread-648-1-1.html

有兴趣的,不妨研究下其中的makefile。对于makefile,可以不进行系统的学习,但至少要能看得懂,能编写简单的makefile。了解makefile,个人觉得是每个嵌入式工程师必休课之一。

» 文章出处: reille博客—http://velep.com , 如果没有特别声明,文章均为reille博客原创作品
» 郑重声明: 原创作品未经允许不得转载,如需转载请联系reille#qq.com(#换成@)
分享到:

 Leave a Reply

(必须)

(我会替您保密的)(必须)

*

   
© 2012 velep.com | reille blog | 管理| 粤ICP备12094833号-2| 谷歌地图| 百度地图| Suffusion theme|Sayontan Sinha

无觅相关文章插件,快速提升流量