摘要:随着嵌入式的飞速发展, 嵌入式Linux系统人机界面受到人们越来越多的关注, 如何开发出一套具有高可靠性、使用寿命长、可进行多线程、多任务实时性等性能成为现如今人机界面交互的研究重点。本文采用Power PC嵌入式平台植入Linux操作系统, 使用Mini GUI图形开发, 设计出具有实时性和高效性的人机界面。
关键词:PowerPC; Linux; MiniGUI; 人机界面;
Abstract:With the rapid development of embedded system, the man-machine interface of embedded Linux system has received more and more attention. How to develop a set of high reliability, long service life, multi-threading, multi-task real-time performance, etc. Become the focus of research on human-machine interface interaction. This article adopts Power PC embedded platform to implant Linux operating system, use Mini GUI graphics development, and design a human-machine interface with real-time and high efficiency.
Keyword:PowerPC; Linux; MiniGUI; Human-machine Interface;
1、引言
如今, 嵌入式开发已经作为一个热门话题, 涉及到各个领域。由于嵌入式的飞速发展, 嵌入式操作系统中的Linux系统具有功耗低、可靠性强、功能强大、性价比高、实时性强、支持多任务、占用空间小、效率高等特点, 得到了越来越多开发者的青睐, 本文采用了Power PC嵌入式平台移植Linux操作系统进行人机界面的设计开发。
2、原理设计
2.1、Power PC平台
本文所用到的powerpc平台为南瑞自主研发的基于Linux系统的, powerpc通用平台, 采用MPC8309处理器, 主频达400 MHz;DDR2时钟266 MHz;对外提供1个CAN网接口;提供8/16个RS-485串口, 最高速率38400;提供2个10M/100M自适应以太网口;基于Linux操作系统, 内核版本2.6以上。
图1 Powerpc平台框图
2.2、Linux系统
Linux操作系统是UNIX操作系统的一种克隆系统, 它诞生于1991年的10月5日。Linux是一套免费使用和自由传播的类Unix操作系统, 是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以络为核心的设计思想, 是一个性能稳定的多用户网络操作系统。在嵌入式开发方面更是具有其它操作系统无可比拟的优势。
2.3、人机界面软件设计
图2 系统软件整理框架
从图2中, 可得本文所设计的人机界面具有有参数配置, 数据实时显示, 采集可控等功能, 系统采用Linux2.6.34版本, 通过系统接口调用来完成内部进程及外设的交互。主要包括:u-boot引导、kernel、ramdisk+ubifs文件系统及mini GUI库, 以及相关驱动程序。通过启动多进程显示各个功能, 如启动采集控制进程, 可进行共享内存建立、实时数据采集交互等功能;启动数据告警进程, 可进行数据分析和告警条件判断等功能;还可启动外设通讯接口进程, 进行串口、以太网口及can网的通讯功能。
2.4、图形界面开发
本文采用Mini GUI图形系统进行界面显示开发, Mini GUI具有可伸缩强、轻型、占用资源少、高性能、高可靠性、可配置性等特点, 所以本文嵌入式系统Mini GUI进行界面开发。
由于在目标板中调试Mini GUI较繁琐, 需要频繁的往目标板中下载程序, 所以通常, 我们先将Mini GUI安装在PC机中, 在PC机开发调试, 最后进行交叉编译后下载到目标板中。
本文将Mini GUI安装在PC机中的Ubuntu10.04虚拟机中。现在虚拟机中安装minigui的相关库文件, 如libminiguigpl、libmgplus、Freetype、jpegsrc、libpng、qvfb、zlib等库, 通过命令configure和make将这些库安装完成, 即可进行Mini GUI程序编写工作。
3、Mini GUI的图形界面开发
本文界面显示流程图如图3所示。
图3 本文界面显示流程图
3.1、Mini GUI程序开发头文件
Mini GUI的应用程序中必须要包含<minigui/common.h>、<minigui/minigui.h>、<minigui/gdi.h>和<minigui/window.h>这四个头文件。
common.h包括Mini GUI常用的宏以及数据类型的定义。
minigui.h包含了全局的和通用的接口函数以及某些杂项函数的定义。
gdi.h包含了Mini GUI绘图函数的接口定义。
window.h包含了窗口有关的宏、数据类型、数据结构定义以及函数接口声明。
使用预定义控件的Mini GUI应用程序还必须包括另外一个头文件<minigui/control.h>;
control.h包含了libminigui中所有内建控件的接口定义。
所以一个minigui程序的开始通常都要包括以下的头文件:
3.2、Mini GUI程序开发入口程序
一般Mini GUI程序的入口点为Mini GUIMain函数, 本文所使用的函数原型为:int Mini GUIMain (int argc, const char*argv[]) 。
因为main函数已经在Mini GUI的库函数中定义, 该函数在进行一些Mini GUI的初始化工作后调用Mini GUIMain函数。所以每个M i n i G U I应用程序的入口点均为Mini GUIMain。参数argc和argv与C程序main函数的参数含义是一样的, 分别为命令行参数个数和参数字符串数组指针。
3.3、Mini GUI界面程序
每个Mini GUI应用程序的初始界面一般都是一个主窗口, 通过调用Create Main Window函数来创建主窗口, 其参数是一个指向MAINWINCREATE结构的指针, 本文创建窗口函数为:
主窗口函数中定义Create Info为MAINWINCREATE结构;Create Info.dw Style=WS_VISIBLE|WS_BORDER;设置主窗口风格, 窗口设置为初始可见, 并具有边框;Create Info.dw Ex Style=WS_EX_NONE;设置主窗口的扩展风格, 该窗口没有扩展风格;Create Info.sp Caption=“标题”;设置窗口标题;Create Info对窗口属性进行设置, 还设置了主窗口主菜单样式、光标样式、主窗口图标、主窗口在屏幕上的位置、主窗口背景色、主窗口形式等。调用Show Window (h Main Wnd, SW_SHOWNORMAL) 函数将创建的窗口显示到屏幕上, 第一个参数为要显示的窗口句柄, 第二个参数为窗口显示方式。
调用Show Window函数后, 主窗口会显示到屏幕上, 然后进入消息循环。Mini GUI为每一个Mini GUI程序维护一个消息队列。在发生事件之后, Mini GUI将事件转换为一个消息, 并将消息放入目标程序的消息队列之中。消息循环代码如下:
只要从消息队列中取出的消息不为MSG_QUIT, Get Message就返回一个非0值, 消息循环将持续下去。MSG_QUIT消息使Get Message返回0, 导致消息循环的终止。Translate Message函数把击键消息转换为MSG_CHAR消息, 然后直接发送到窗口过程函数。Dispatch Message函数最终将把消息发往该消息的目标窗口的窗口过程, 让它进行处理。本文中的窗口过程函数为Logo Win Proc, 函数代码如下:
本文所使用个消息有MSG_CREATE窗口创建消息, MSG_PAINT窗口绘制消息, MSG_ERASEBKGND窗口绘制背景消息, MSG_KEYDOWN键盘消息, MSG_TIMER系统消息定时器, MSG_CLOSE系统关闭消息。当点击关闭按钮时, 窗口过程函数将收到一个MSG_CLOSE消息, 应该程序收到MSG_CLOSE消息时调Destroy Main Window函数销毁主窗口, 程序最后调用Main Window Thread Cleanup清除主窗口所使用的消息队列等系统资源并最终由Mini GUIMain返回。
3.4、目标板环境移植及程序下载
将minigui相关的库通过Power PC工具编译链交叉编译, 安装到Linux系统文件的lib库中, 并将安装好的Linux系统移植到目标板中, 这样目标板环境移植完成。然后将写好的应用程序通过Power PC工具编译链交叉编译, 生成的目标程序下载到目标板中, 运行该目标程序。
3.5、显示效果
本文powerpc平台采用VGA液晶显示, 需要在Mini GUI.cfg中配置gal_engine=fbcon, defaultmode=800x600-16bpp, 显示效果分别如图4、图5所示。
图4 实时显示界面
图5 参数配置界面
4、结束语
本文所介绍的Power PC平台移植Linux系统进行的人机界面开发已经用于实际工程中, 具有多线程、多任务、响应及时的特点, 为今后的嵌入式系统人机界面的开发工作起到了一定的借鉴作用。
参考文献
[1]北京飞漫软件.Mini GUI移植指南[M].北京:飞漫软件技术有限公司, 2006.