基于MiniGUI的多进程图形用户界面的研究
图2 窗口关系逻辑框图
2.2 多任务优先级分配
由于嵌入式设备在硬件资源上的局限性,GUI系统对新的任务请求进行运行优先级的分配和管理,以避免低运行级任务造成系统资源的浪费。GUI系统优先运行级别较高的任务,对新产生的任务按照预定方式分配相应的运行级别,并与当前运行的任务级别进行比较,如果新任务是最高运行级别的任务,则挂起其他任务直到新任务处理结束;如果是相同运行级别的任务则把新任务加入到运行队列的队尾,由内核分配CPU时间片和内存资源,与其他的任务一起进行多任务的并发处理;如果新任务运行级别最低则将被放入到系统等待队列中,直到其他任务处理完成再处理新任务。判断流程如图3示:
图3运行级别判断流程图
3嵌入式开发环境构建
完整的嵌入式开发环境由嵌入式目标板和宿主机构成,两者通过网线、计算机串口和JTAG连接。用户程序在宿主机平台上进行开发,交叉编译过的程序烧写到开发板中的Flash芯片中。
3.1宿主机
宿主机安装Redhat9.0操作系统、MiniGUI开发环境和开发工具集。工具集包括交叉编译器gcc、调试器gdb、C函数库glibc和二进制工具集binutils。
3.2 目标板
1)引导程序(Boot Loader)
是系统复位后执行的一段代码,首先完成系统硬件的初始化,包括时钟设置、存储区影射等,然后跳转到操作系统内核的入口,将系统控制权交给操作系统。Boot Loader独立于操作系统而高度依赖系统硬件,必须自行设计。本文采用vivi作为系统的引导程序。其启动分为两个阶段:第一阶段代码采用汇编语言编写,主要进行与CPU以及存储设备密切相关的工作,并进行初始化;第二阶段采用C语言编写,来实现一般的流程及对板级的一些驱动支持。
2)Linux内核
一般的嵌入式操作系统如uClinux、uC/OS-II通常运行在没有MMU的CPU上,因此在进程编程时具有较大的困难度,所以选择具有完整Unix特性的Linux作为操作系统。开发板采用打过补丁的Linux-2.4.18-rmk7的内核,内核和补丁可以从ARM的官方网站上下载。在配置内核时去掉无关的功能以减少内核大小,如SCSI、IrDA、手柄等。
3)根文件系统
嵌入式根文件系统(root filesystem)是嵌入式Linux系统的核心部分 ,包含系统使用的软件和库,以及所有用来为用户提供支持架构和用户使用的应用软件,并作为存储区读写结果的区域。
4多进程GUI的实现
基于以上分析,本图形用户界面系统采用微C/S机制,用共享内存的进程间通信机制实现数据交换,通过套接字实现客户程序与服务器程序通信。服务器程序实现窗口结构队列管理,获取系统产生的鼠标和键盘消息并进行分发。客户进程从IPC消息队列获取发往自己的消息,并通过共享内存实现窗口剪切。
经过交叉编译的可执行图形应用程序可以通过NFS下载到开发板,然后通过串口调试工具进行远程调试。在应用程序调试完成后将裁减后的MiniGUI的函数库、配置文件放到为开发板准备的根文件系统中,并把主界面的可执行文件加入到文件系统的启动脚本,用重新得到的根文件系统生成镜像文件,然后烧写到开发板Flash上,在开发板启动后即可以进入到图形界面。该系统在嵌入式开发平台上能够实现多窗口运行,并且在调用产生高任务级别的任务时能够顺利实现任务挂起功能。
5结束语
目前嵌入式产品的在功能实现上日益复杂化,简单的图形用户界面系统已经很难满足用户的实际需要,比如将来的智能手机将融入电子地图、定位导航系统、PDA、电子字典、多媒体播放等多功能,单一的窗口操作界面显然不符合用户要求。基于多进程的GUI系统能够实现多任务、支持多窗口,并且具有良好的系统稳定性,因此必然是嵌入式产品开发的一个重点,也是未来嵌入式图形用户界面的发展方向。
参考文献
[1] 周立功等. ARM嵌入式MiniGUI初步与应用开发范例[M].北京:北京航空航天大学出版社, 2006。
[2] David Mosberger, Stephane Eranian,IA-64 Linux Kernel Design and Implementation[M]。Prince Hall, Jan 30, 2002
[3] MiniGUI编程指南 V2.0 [Z]。http://www.minigui.com
[4] MiniGUI API Reference Manual for V1.3 [Z]. http://www.minigui.com
[5] 郑桦,刘清,邢航,徐智穹。构造嵌入式Linux的文件系统[J]。微计算机信息,2004,20(8):49~50
- 嵌入式系统的定义与发展历史(11-15)
- 嵌入式系统亲密接触(11-22)
- 嵌入式系统设计中的USB OTG方案(02-01)
- 嵌入式线控驾驶系统开发过程中设计和测试考虑(02-02)
- 一个典型的嵌入式系统设计和实现 (02-02)
- DDR SDRAM在嵌入式系统中的应用(02-07)