嵌入式GUI开发设计
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.2 嵌入式GUI系统的设计原则

嵌入式GUI系统,要提供给上层的应用程序绘制图形界面以及接收用户输入的能力。从实现的方式上,它既可以是一套库,也可以是和应用程序一起编译的源代码。

在嵌入式系统中,GUI系统是实现图形化界面的核心。由于嵌入式系统的特殊性。在设计原则方面,嵌入式的GUI系统应该具有以下几个特点:

● 可移植性

相比通用计算机系统统一的软硬件结构,各个不同的嵌入式系统之间相差较大。作为一款成功的嵌入式GUI系统,应该能在不同的嵌入式平台中运行,这就需要嵌入式GUI系统具有较强的可移植性。

所谓可移植性,体现在操作系统和硬件结构两个方面。在操作系统方面,由于嵌入式GUI系统需要建立在操作系统提供的一定机制上面(例如多任务支持、任务间通信等),而不同的操作系统提供的机制完全不同。为了能在不同的操作系统中运行,嵌入式GUI就需要具有一定的可移植层来支持不同的操作系统。硬件方面又包括了CPU体系结构、输出设备、输入设备等方面:适应不同CPU体系结构,需要嵌入式GUI系统的代码可以在不同的编译器上编译,一般来说C语言实现的系统可以满足这个要求,但使用特定体系结构汇编的实现就不能适应这种需求;输出设备(显示屏)和输入设备(键盘、鼠标、触摸屏、按键)在不同的嵌入式系统中相差也很大,这也要求嵌入式GUI系统可以支持不同系统的硬件接口。

● 较高的稳定性和可靠性

嵌入式系统对稳定性和可靠性有很严格的要求。个人PC的崩溃可以通过重新启动等方式弥补,但是嵌入式系统的崩溃就可能导致无法挽回的严重后果。因此嵌入式GUI系统,需要具有更强的稳定性和可靠性。例如:在一些控制、通信系统中,GUI系统属于提供的是辅助的人机交互功能,如果由于GUI系统的问题,导致系统核心功能崩溃,这绝对是得不偿失的。

事实上,在一些嵌入式系统中,缺少了不同任务的保护机制,整个系统运行在一个内存空间内,因此,由于一个子系统的问题导致整个系统崩溃的概率更高。对于嵌入式GUI系统,一方面需要有较高的稳定性和可靠性,减少崩溃的概率;另一方面,在GUI系统已经崩溃的情况下,也需要确保尽量较少影响其他子系统的工作,将问题控制在一定范围内。

● 系统开销少

相对PC系统,嵌入式系统的资源都是相对有限的。系统的资源包括,包括处理器的频率、Flash的空间和RAM空间等几个部分。在嵌入式系统中,不但资源有限,而且通常还运行着一些比GUI系统更重要的程序。因此,嵌入式GUI系统必须具有开销小的特点,不能抢占系统过多的资源。从编译的角度,GUI子系统代码规模要有限制,避免占用太多的Flash;从运行的角度,GUI子系统的处理器开销和内存开销也是需要严格限制的。如果占用系统资源太多,不但GUI系统将无法正常运行,甚至造成整个系统无法工作。

● 较高可配置性

在嵌入式应用中,由于不同的系统相差较大,因此嵌入式GUI系统最好具有一定的可配置型,从而适应不同系统的需求。成功的嵌入式GUI系统需要适应不同嵌入式应用的需求。

可配置性通常包括可裁减性、界面特性配置、皮肤和主题配置等方面。在剪裁性方面,GUI系统可以提供很多的功能,但是在所有的功能并不是都要在某种特定系统上使用,可以去掉不相关的功能来节省系统的开销。对于界面的特性配置,需要适应不同的解决方案需求,例如,一个智能手机的界面和一个工控仪表的界面相差很大,用户输入方式的差别更大。此外,在界面基本相同的情况下,皮肤和主题的更改和配置也可提供系统的灵活性。

可配置性的实现通常有两种手段,一种是通过条件编译来实现,一种是通过配置文件实现运行时(Run Time)的配置。

提示:在学习一个嵌入式GUI特性和功能的时候,需要关注可移植性、稳定性和可靠性、系统开销、可配置性等几个方面的内容。

一般来说,嵌入式GUI系统的设计并不依赖于某个特定的系统。实现嵌入式系统的GUI应用程序的开发,只需要对GUI系统移植和使用。在嵌入式系统的开发中,GUI系统一般属于中间层,不需要改动。对于某些开源的GUI系统,也可以针对特定的应用改动或者优化。对于嵌入式GUI系统,关注的重点在上层的接口应用和下层的移植两个方面。