首页 » 技术文章 » 基于EPM7312的新型嵌入式系统的实现

基于EPM7312的新型嵌入式系统的实现

作者:  时间:2010-12-02 14:13  来源:EDN

  Microwindows采用分层结构设计方法,在底层提供对屏幕,鼠标或触摸屏,键盘的驱动,是程序能够访问实际的硬件和其他用户订制设备;中间层实现了一个可以移植的图形引擎,这个图形引擎实现画线,填充,多边行,剪辑和多种颜色模式;最上层实现了多种API以适应不同的应用环境。每一层都可以根据不同的应用需求修改代码或重新编码。

  系统中最底层针对显示屏,鼠标,触摸屏,键盘等各定义了一个数据结构供图形引擎使用,分别为struct _mwscreendevice struct _mousedevice  struct _kbddevice 包含了针对指定设备的硬件驱动代码接口。

  在Microwindows中的图形引擎支持framebuffer ,因此只要修改src/中针对基于ARM平台的Linux的配置文件config.ads,指定使用framebuffer作为底层图形支持引擎即可。Microwindows下支持Linux的鼠标驱动为mou-gpm.c,键盘驱动为kbd_tty.c。在本系统中并没有从头开始编写鼠标键盘各数据结构的成员函数,只对原驱动中针对特定硬件部分作了相应改动。

  24 ViewML

  ViewML是第一个开放源代码的,专门面对嵌入式Linux系统的快速发展而开发的小型浏览器。其代码文件只有800KB,运行所需的内存空间约2MB,使用FLTK作为GUI平台开发,采用C++面向对象的设计。ViewML浏览器可以运行于X Windows Microwindows系统之上,所以可在Linux平台上进行调试和改进。这极大的方便了对浏览器的进一步完善。本系统中对ViewML 的改进是在基于X Windows 平台的Microwindows系统上完成的。

  ViewML浏览器的体系结构如图2。其应用层很小,完全用C++ FLTKFast Light Tool Kit)应用框架编写,提供基本的图形用户界面布局,同时该层还处理网络和本地文件存取要求。其语法分析器和显示引擎选用了源码开放的KDE桌面的kfm文件管理器中的KDE 1.0 HTML窗口部件(即图1中的KHTML View和窗口部件模块)。该窗口管理部件工作稳定,支持全部的HTML 3.2功能及部分JavaScript 1.1KDE的窗口部件采用的是QT窗口部件集合,为适应嵌入式系统的要求,ViewML采用了轻量级图形库FLTKQT兼容层提供了HTML窗口部件和FLTK应用框架之间的接口。底层的网络协议采用万维网协会的WWWLib库执行所有的异步网络输入输出和HTTP获得功能。

  ViewML是直接针对嵌入式Linux环境的一种高品质的网络浏览器。通过包含源代码开放的核心部件,能够在占用很少的RAMROM资源的条件下使用高质量的图形引擎。但在实际是移植使用中发现了一些该浏览器的欠缺之处,下面重点讨论本系统针对ViewML窗口界面的改进。

  3 ViewML窗口界面的改进

  Viewml的应用层很小,只提供了基本的图形用户界面布局。作为与用户交互的窗口,要求有美观性,实用性和可操作性。为了使用户界面更为完善,本系统主要的工作增加对HTML文件的打开﹑保存和关闭;Web页的刷新﹑前进﹑返回等。

  编写界面部分主要应用FLTK窗口部件,FLTK提供了比较丰富的控件,如:按钮﹑滚动条﹑文本框﹑对话框﹑列表框等等。所有这些窗口部件的框架类都在FLNK(FLTK移植到MicrowindowsNano-X API上的版本)的文件夹FL中包含的100个头文件中定义。ViewML中窗口的实现是通过创建类VMLAppWindow来构建基本的图形用户界面  ,其中只包括三个函数:VMLAppWindow(int x, int y, int w, int h) : PARENT_WINDOW(x,y,w,h,"ViewML Browser") { }virtual void resize_noTIfy(int x, int y, int w, int h) virtual int handle(int event);}在图形界面上添加按钮save,open,reload,forword,backward等,需在类VMLAppWindow中定义的相应函数。

  extern Fl_Button *Save

  extern Fl_Button *Open

  extern Fl_Button *Forward;

  extern Fl_Button *Backward;

  extern Fl_Button *Reload;

  详情参阅头文件Fl_Window.Hf Fl_Widget.H。编写好图形界面后,通过响应鼠标事件将图形和相应的事件关联起来。

  在ViewML应用层中原有两个函数static int send(Fl_Widget* o, int event) :向HTTP发送请求并将请求事例放入队列;int VMLAppWindow::handle(int event):调用线程对事例队列进行处理。除了实例化上面定义的函数,在这里还加入处理网页的保存,后退,前进的函数都要用到的函数int VMLAppWindow::temp(int event),其功能是临时保存网页。其处理流程为:

  (1)在处理事例队列为非空时,从队列中取出一处理过的HTTP请求

  (2)将HTTP请求结果用HTML三步:Tokenizer , HTNL-Parser , HTML-Layout进行处理

  (3)把HTTP处理的结果加入临时保存队列中

  (4)从处理事例队列中删除此请求结果

  队列采用链表实现,当需要从当前页面后退时,其处理流程为:

  (1)捕获鼠标事件

  (2)从队首搜索至工作指针的下一个元素为当前指针时,当前指针后退

  (3)将当前指针所指向的元素调用HTML引擎处理

  前进和刷新功能实现流程与后退类似,这里就不赘叙了。保存当前HTM法略微复杂些,因为在保存页面时还要同时保存页面中的图像文件,算法如下:

  (1)输入存盘路径和文件名

  (2)对文件名进行自动处理如加上后缀htm,创建一个目录,以files为后缀存放图形文件

  (3)从临时保存队列中取当前指针,指针为非头指针时取其所指向HTML文件,处理文件。

  (4)将文件存入磁盘

  基于嵌入式系统的硬件条件有限,无存储量大的磁盘等设备.,且FLASHROM等存储介质的价格相对于台式机上使用的硬盘﹑光盘等是比较昂贵的 。所以嵌入式系统只能以小巧且高效来赢得市场。完善了窗口功能的系统完全能满足大部分用户的应用需求了。

  4 结束语

  当前通讯正在快速地成为嵌入式系统的一般需求。 本文主要阐述了一种新的嵌入式系统,支持图形界面,支持浏览器。该系统已在自主开发的硬件平台上成功运行了。在以后的工作中将致力于在该系统中增加更全面的功能,如对Java虚拟机的支持,增加邮件收发等。

相关推荐

Ctrack选用u-blox GPS和蜂巢式模组开发车队管理解决方案

u-blox  嵌入式  Ctrack  2014-05-21

动作撷取追踪的嵌入式体感控制新技术

嵌入式  体感控制  2013-12-06

嵌入式系统的固件更新

嵌入式  Flash  RAM  缓冲区  2013-09-12

Linux将进军汽车智能系统领域

Linux  汽车智能系统  2013-07-09

汽车电子向一体化集成、网络化与智能化发展

汽车电子  嵌入式  2013-05-23

东芝开发嵌入式SRAM低功耗技术智能手机

东芝  嵌入式  SRAM  2013-02-23
在线研讨会
焦点