原创 Microchip Graphics Library源码分析笔记

2011-8-1 19:35 5316 7 13 分类: MCU/ 嵌入式

  最近在学习GUI,初次接触这类东东,想由简单点的入手,因而拿Microchip的图形库作为入手点。在学习时,同时写了一篇源码分析笔记。放在这里,供大家参考。由于该笔记比较长,所在这里只摘录了其中的一小部分。


完整的源码分析笔记以及关于该GUI的参考资料包含在以下附件中。




模拟器 


------------------------------------------------------------------------------------------------------------------------------------------


第1章  源码分析概述


  该篇学习笔记基于Microchip Graphics Library V2.0,该图形库的体系结构如图1.1。这里主要分析显示驱动层(DDL层)的设计、图形原语层的设计(GPL层)、图形目标层(GOL层)的设计。该体系结构的突出特点是采用了分层的结构设计。


2710c81b-09f2-459c-ab4f-e0a7dac54ff2.jpg



         图1.1 Microchip Graphic Library体系结构


  底层为图形设备驱动层(DDL层),直接同硬件交互,屏蔽掉与硬件相关的细节,向上提供一些与具体设备无关的接口,主要是画点函数。往上一层是图形原语层(GPL层),它基于图形设备驱动层(DDL层)提供的接口,向上提供了更为复杂功能函数的实现,如画线、画圆。图形原语层(GPL层)之上是图形物件层(GOL层),该层基于图形设备驱动层(DDL层)的简单图形绘制函数,实现了我们常见到的诸如窗口、进度条等物件抽像,同时也提供了消息接口。最后是应用层,应用层由用户实现,在应用层中可以直接调用各层提供的接口函数,灵活性较大。


采用分层结构的设计的优点有:


  1. 各模块的结构很清晰,在代码维护时较容易;发现BUG时,可容易定位到出现问题的模块,在保证各层提供的接口函数不变情况下,可直接进行相应的修改。


  2. 每层的代码设计要容易得多:对于某一层而言,它仅需要知道下一层提供的是何种接口,向上提供哪些接口,并不需要知道最底层的细节;在定义好这些接口后,整个软件的各个部分可以分别交给不同的人员进行设计,最后很容易整合在一块;


  3. 从硬件往上逐层提供了更为高级的抽像,同时屏蔽一些无关的细节,比较符合人的思维方式。特别是在GOL层之上,用户完全不需要知道使用的是哪种LCD控制器,他所面对的就是窗口等更为直观的物件,极大地增强了软件的易用性。当然,在该图形库中并未完全如此,应用层可直接同各层进行交互。


对于各层中的一些细节这里将不作分析,没有必要。相关的一些细节可以参考其它资料。




  • DDL层:不分析其移植方法;不分析对具体LCD控制器的编程;


  • GPL层:不分析直线、圆形等绘制算法,这些算法可参考计算机图形学方法方面的资料;


  • GOL层:只分析几个较简单的物件设计,其它物件的工作原理类似。

  从我个人的观点来说,学习这个图形库的设计思路是最主要的目标;至于一些相关细节,可以查找数据手册,或者参考相关的书籍,因而就没必要深入了解。分析源码的目的是理解GUI的工作原理,在学会使用这个相对简单的GUI同时,能够触类旁通的学会使用其它的GUI。当然,如果以后有时间和有想法,写出一个比较简单的、属于自己的GUI出来,那更是我所期望的。


以下几个方面,是我在这篇文档中所关注的:




  • 如何抽像出按键、窗口、进度条等物件;


  • 如何基于GPL层提供的基本图形绘制函数来实现丰富的物件显示;


  • 如何对显示的物件进行管理;


  • 如何设计的消息管理机制以实现方便的人机接口;


  •  该图形库有哪些不足和优点。

接下来的几章,将从最底层的DDL层开始,逐层向上分析。


 

文章评论6条评论)

登录后参与讨论

用户432512 2012-10-15 15:39

我能弱弱的问一下,免费开源的GUI还有哪些吗?

用户1618693 2012-6-15 14:38

对作者也许很简单, 但是写出来给我这种入门的看就太给力了。 还没看。 估计英爱会有很大帮助。 非常感谢作者付出的劳动。

用户420151 2012-4-17 11:10

有没有最新的microchip的图形开发资料?

用户1325707 2011-11-12 11:17

hao

用户1480107 2011-11-7 13:37

正需要這方面的資料.謝謝!!

用户1284804 2011-5-12 21:38

楼主资料真不错,太感谢了,先学习了.

用户245924 2010-6-5 20:24

下载不了 ,请问能否发到我的邮箱 miaojunfei0602@126.com 急用谢谢

用户526022 2009-7-27 18:51

谢谢

用户555278 2009-7-27 15:13

peyoba1988@yahoo.com.cn,谢谢了

用户208692 2009-6-2 23:12

打不开啊,我的邮箱:371158586@163.com 帮忙发一下,谢谢了!~~~
相关推荐阅读
用户403611 2014-01-20 07:28
与TKScope仿真器同行(1) - 看门狗会让你无法调试
  前几日,中矿龙科的李工向我反映了一个有意思的问题: 在使用TKScope仿真器(型号AK100pro)调试STM32时,出现了一个非常奇怪的现像。在Keil环境中的源代码设置了一...
用户403611 2013-02-27 13:41
ARM指令仿真项目经历纪录一
这两天接了个新项目-ARM指令仿真项目,开发时间预期在两个月左右。这次将继承沿续自己以前做Cortex-A8、A9内核仿真项目时的方法,用日志纪录在开发过程中的各种问题解决方案和体会。限于某些原因...
用户403611 2013-02-27 13:39
电子工程师应尝试产品经理的角色
做技术两三年了,发现自己一直陷入到技术细节当中,而从来没有尝试跳出来去从整个产品的角度进行观察。这其中可能是因为需要了解的技术细节太多,没有闲暇去关注技术之外的东西。另一方面也与个人的视野不够开阔...
用户403611 2011-11-13 20:05
EDNChina的博客已经改得面目全面了
 之前有些日子没去ENDChina了。从08年起,断断续续地在这上面写一些技术类的Blog,到现在已经有快4年,虽然文章写的不多,但挺有感情的。   这两天回去看看,访问http://blog...
用户403611 2011-10-14 22:02
TKScope仿真器使用入门视频教程
  相对来说,看视频肯定要比看PDF文档要容易的多吧。部门之前仅在网上发布了TKScope仿真器使用的PDF文档。虽然文档写的很详细,但实际真正愿意去看的不多。前些日子自己录制了TKScope仿真AR...
用户403611 2011-09-18 23:00
尝试建立一个部门内部的知识库站点
前些天有事直接去找了下戚工反映TKScope仿真器方面的几个问题。问题解决之后闲聊了几句,其中就提及了建立一个共享的内部网络站点。当时我听了很兴奋,因为这个想法与我的不谋而合。早在刚进入这个部门不久,...
我要评论
6
7
关闭 站长推荐上一条 /3 下一条