基于嵌入式Linux系统界面的研究
讲述了什么是嵌入式系统,分析了嵌入式操作系统的发展与特点,详细论述了图形用户界面MiniGUI的结构与特点,并提出了基于MiniGUI嵌入式Linux系统的雷达显示界面软件设计。
In this paper, we introduce the concept of embed systems. We also analyse thedevelopment and the characteristics of embed operating systems, especially embed LinuxWe particularize the framework and the feature of MiniGUI,and put forward design of embed Linux system based on MiniGUI in radar
1 概述
1.1什么是嵌入式系统
嵌入式系统一般指非PC系统,有计算机功能但又不称之为计算机的设备或器材。他是以应用为中心,以计算机技术为基础,并且软硬件可裁减的,适用于对功能、可靠性、成本、体积、功耗等综合性严格要求的专用计算机系统。
1.2 嵌入式操作系统的发展
嵌入式技术的发展,大致经历了4个阶段:
第一阶段是以单芯片为核心的可编程控制器形式的系统,同时具有与监测、伺服、指示设备相配合的功能。这种系统大部分应用于一些专业性极强的工业控制系统中,一般没有操作系统的支持,通过汇编语言编程对系统进行直接控制,运行结束后清除内存。
第二阶段是以嵌入式CPU为基础、以简单操作系统为核心的嵌入式系统。这一阶段的操作系统具有一定的兼容性和扩展性,但用户界面不够友好。
第三阶段是以嵌入式操作系统为标志的嵌入式系统。这一阶段系统的主要特点是:嵌入式操作系统能运行于各种不同类型的微处理器上,兼容性好;操作系统内核精小、效率高,并且具有高度的模块化和扩展性;具备文件和目录管理、设备支持、多任务、网络支持、图形窗口以及用户界面等功能;具有大量的应用程序接口(API),开发应用程序简单;嵌入式应用软件丰富。
第四阶段是以基于Internet为标志的嵌入式系统,这是一个正在迅速发展的阶段。目前大多数嵌入式系统还孤立于Internet之外,但随着Internet的发展以及Internet技术与信息家电、工业控制技术等结合日益密切,嵌入式设备与Internet的结合将代表着嵌入式技术的真正未来。
1.3嵌入式操作系统的特点
与其他类型的操作系统相比,嵌入式操作系统具有以下一些特点。
(1)体积小
嵌入式系统有别于一般的计算机处理系统,他不具备像硬盘那样大容量的存储介质,而大多使用闪存(Flash Memory)作为存储介质。这就要求嵌入式操作系统只能运行在有限的内存中,不能使用虚拟内存,中断的使用也受到限制。因此,嵌入式操作系统必须结构紧凑,体积微小。
(2)实时性
大多数嵌入式系统都是实时系统,而且多是强实时多任务系统,要求相应的嵌入式操作系统也必须是实时操作系统(RTOS)。实时操作系统作为操作系统的一个重要分支已成为研究的一个热点,主要探讨实时多任务调度算法和可调度性、死锁解除等问题。
(3)特殊的开发调试环境
提供完整的集成开发环境是每一个嵌入式系统开发人员所期待的。一个完整的嵌入式系统的集成开发环境一般需要提供的工具是编译/连接器、内核调试/跟踪器和集成图形界面开发平台。其中的集成图形界面开发平台包括编辑器、调试器、软件仿真器和监视器等。
2 嵌入式Linux
嵌入式Linux是按照嵌入式操作系统的要求而设计的一种小型操作系统。由一个Kernel(内核)及一些根据需要进行定制的系统模块组成。其Kernel很小,一般只有几百kB左右。即使加上其他必须的模块和应用程序,所需的存储空间也很小。他有多任务、多进程的系统特征,有些还具有实时性。一个小型的嵌入式Linux系统只需要引导程序、Linux微内核、初始化进程3个基本元素。运行嵌入式Linux的CPU可以是x86,Alpha,Sparc,MIPS,PPC等。与这些芯片搭配的主板都很小,与一张PCI卡大小相当,有的甚至更小。嵌入式Linux所需的存储器不是软磁盘、硬盘、Zip盘、CDROM,DVD这些众所周知的常规存储器,他使用Rom,CompactFlash,MSystems的DiskOnChip,Sony的MemoryStick,IBM的MicroDrive等体积极小与主板上的BIOS大小相近,存储容量不太大的存储器。他的内存可以使用普通的内存,也可以使用专用的RAM。与其他嵌入式操作系统相比,Linux的源代码是开放的,不存在黑箱技术。Linux作为一种可裁剪的软件平台系统,是发展未来嵌入式设备产品的最佳资源。
3图形用户界面系统MiniGUI
3.1图形用户界面简介
计算机用户界面是指计算机与其使用者之间的对话接口,是计算机系统的重要组成部分。计算机的发展史不仅是计算机本身处理速度和存储容量飞速提高的历史,也是计算用户界面不断改进的历史。用户界面的重要性在于他极大地影响了最终用户的使用,影响了计算机的推广应用,甚至影响了人们的工作和生活。由于开发用户界面的工作量极大,加上不同用户对界面的要求也不尽相同,因此,用户界面已成为计算机软件研制中最困难的部分之一。
GUI 在嵌入式系统或者实时系统中的地位将越来越重要,这些系统对 GUI 的基本要求包括:
①轻型、占用资源少。
②高性能。
③高可靠性。
④可配置。
3.2MiniGUI图形用户系统
3.2.1MiniGUI特色
MiniGUI由原清华大学教师魏永明先生开发,是中国人做得较好的自由软件之一。MiniGUI是一种面向嵌入式系统或者实时系统的图形用户界面支持系统。他主要运行于 Linux 控制台,实际可以运行在任何一种具有 POSIX 线程支持的 POSIX 兼容系统上。MiniGUI 同时也是国内最早出现的几个自由软件项目之一。
MiniGUI 的主要特色有:
(1)遵循 LGPL条款的纯自由软件。
(2)提供了完备的多窗口机制。包括多个单独线程中运行的多窗口;单个线程中主窗口的附属;对话框和预定义的控件类(按钮、单行和多行编辑框、列表框、进度条、工具栏等)。
(3)消息传递机制。
(4)多字符集和多字体支持。
(5)BMP,GIF,JPEG,PCX 等常见图像文件的支持。
(6)Windows 的资源文件支持,如位图、图标、光标、插入符、定时器、加速键等。
(7)小巧
包含全部功能的库文件大小为 300 kB左右。
(8)可配置
可根据项目需求进行定制配置和编译。
(9)高稳定性和高性能。
(10)可移植性好。
(11)图形抽象层
图形抽象层对顶层 API 基本没有影响,但大大方便了 MiniGUI 应用程序的移植、调试等工作。目前包含2个图形引擎,SVGALib 和 LibGGI,利用 LibGGI 时,可在 X Window 上运行 MiniGUI 应用程序,并可非常方便地进行调试。与图形抽象层相关的还有输入事件的抽象层。
3.2.2MiniGUI的体系结构
从整体结构上看,MiniGUI是分层设计的,层次结构如图1所示。在最底层,GAL和IAL提供底层图形接口以及鼠标和键盘的驱动;中间层是MiniGUI的核心层,包括窗口系统必不可少的各个模块;最顶层是API,即编程接口。GAL和IAL为MiniGUI提供了底层的Linux控制台或者X Window上的图形接口以及输入接口,而Pthread用于提供内核级线程支持的C函数库。
MiniGUI 本身运行在多线程模式下,他的许多模块都以单独的线程运行,同时,MiniGUI还利用线程来支持多窗口。从本质上讲,每个线程有一个消息队列,消息队列是实现线程数据交换和同步的关键数据结构。一个线程向消息队列中发送消息,而另一个线程从这个消息队列中获取消息,同一个线程中创建的窗口可共享同一个消息队列。
多线程有一定的好处,但不方便的是不同的线程共享同一个地址空间,因此,客户线程可能会破坏系统服务器线程的数据,但有一个重要的优势是,由于共享地址空间,线程之间就没有额外的数据复制开销。由于 MiniGUI 是面向嵌入式或实时控制系统的,因此,这种应用环境下的应用程序往往具有单一的功能,从而使得采用多线程而非多进程模式实现图形界面有了一定的实际意义,也更加符合 MiniGUI 之“Mini”的特色。
在多线程环境中,与多进程间的通讯机制类似,线程之间也有交互和同步的需求。比如,用来管理窗口的线程维持全局的窗口列表,而其他线程不能直接修改这些全局的数据结构,而必须依据“先来先服务”的原则,依次处理每个线程的请求,这就是一般性的C/S模式。MiniGUI 利用线程之间的同步操作实现了客户线程和服务器线程之间的微C/S机制,之所以这样命名,是因为客户和服务器是同一进程中的不同线程。
4 MiniGUI在雷达显示界面上的应用
我们自主裁剪了Linux系统,并在此基础上安装了基于SVGALib图形引擎的MiniGUI轻量级图形用户界面支持系统,基于MiniGUI编写了图形用户界面雷达终端显示应用程序。
5结语
嵌入式Linux系统是源代码开放的一种可裁剪的软件平台系统,不存在黑箱技术。他的小巧、稳定、多任务、可配置、高性能、高可靠性、硬件的良好支持和价格的优势,尤其网络功能的强大,使他迅速成长发展,受到广大开发人员的青睐。
MiniGUI是国人自行开发研制的适合嵌入式系统的轻量级图形用户界面支持系统,他采用WIN32体系架构,提供了完备的多窗口机制、对话框和预定义的控件类,消息传递机制等,大大地简化了开发人员的界面设计。
但是,国产的嵌入式操作系统在技术含量、兼容性、市场运作模式等方面也还有很多工作要做,我们应该在跟踪国外嵌入式操作系统的最新技术的同时,坚持自主产权,力争找到自己的突破点,探索出一条自己的发展道路。Linux正提供了一个这样的平台。
参考文献
[1]邹思轶.嵌入式Linux设计与应用[M].北京:清华大学出版社,2002.
[2]魏忠,蔡勇,雷红卫.嵌入式开发详解[M].北京:电子工业出版社,2003.
[3]Daniel Bovet P,Marco Cesati.深入理解Linux内核[M].陈莉君,冯锐,牛欣源,译.北京:中国电力出版社,2001.
In this paper, we introduce the concept of embed systems. We also analyse thedevelopment and the characteristics of embed operating systems, especially embed LinuxWe particularize the framework and the feature of MiniGUI,and put forward design of embed Linux system based on MiniGUI in radar
1 概述
1.1什么是嵌入式系统
嵌入式系统一般指非PC系统,有计算机功能但又不称之为计算机的设备或器材。他是以应用为中心,以计算机技术为基础,并且软硬件可裁减的,适用于对功能、可靠性、成本、体积、功耗等综合性严格要求的专用计算机系统。
1.2 嵌入式操作系统的发展
嵌入式技术的发展,大致经历了4个阶段:
第一阶段是以单芯片为核心的可编程控制器形式的系统,同时具有与监测、伺服、指示设备相配合的功能。这种系统大部分应用于一些专业性极强的工业控制系统中,一般没有操作系统的支持,通过汇编语言编程对系统进行直接控制,运行结束后清除内存。
第二阶段是以嵌入式CPU为基础、以简单操作系统为核心的嵌入式系统。这一阶段的操作系统具有一定的兼容性和扩展性,但用户界面不够友好。
第三阶段是以嵌入式操作系统为标志的嵌入式系统。这一阶段系统的主要特点是:嵌入式操作系统能运行于各种不同类型的微处理器上,兼容性好;操作系统内核精小、效率高,并且具有高度的模块化和扩展性;具备文件和目录管理、设备支持、多任务、网络支持、图形窗口以及用户界面等功能;具有大量的应用程序接口(API),开发应用程序简单;嵌入式应用软件丰富。
第四阶段是以基于Internet为标志的嵌入式系统,这是一个正在迅速发展的阶段。目前大多数嵌入式系统还孤立于Internet之外,但随着Internet的发展以及Internet技术与信息家电、工业控制技术等结合日益密切,嵌入式设备与Internet的结合将代表着嵌入式技术的真正未来。
1.3嵌入式操作系统的特点
与其他类型的操作系统相比,嵌入式操作系统具有以下一些特点。
(1)体积小
嵌入式系统有别于一般的计算机处理系统,他不具备像硬盘那样大容量的存储介质,而大多使用闪存(Flash Memory)作为存储介质。这就要求嵌入式操作系统只能运行在有限的内存中,不能使用虚拟内存,中断的使用也受到限制。因此,嵌入式操作系统必须结构紧凑,体积微小。
(2)实时性
大多数嵌入式系统都是实时系统,而且多是强实时多任务系统,要求相应的嵌入式操作系统也必须是实时操作系统(RTOS)。实时操作系统作为操作系统的一个重要分支已成为研究的一个热点,主要探讨实时多任务调度算法和可调度性、死锁解除等问题。
(3)特殊的开发调试环境
提供完整的集成开发环境是每一个嵌入式系统开发人员所期待的。一个完整的嵌入式系统的集成开发环境一般需要提供的工具是编译/连接器、内核调试/跟踪器和集成图形界面开发平台。其中的集成图形界面开发平台包括编辑器、调试器、软件仿真器和监视器等。
2 嵌入式Linux
嵌入式Linux是按照嵌入式操作系统的要求而设计的一种小型操作系统。由一个Kernel(内核)及一些根据需要进行定制的系统模块组成。其Kernel很小,一般只有几百kB左右。即使加上其他必须的模块和应用程序,所需的存储空间也很小。他有多任务、多进程的系统特征,有些还具有实时性。一个小型的嵌入式Linux系统只需要引导程序、Linux微内核、初始化进程3个基本元素。运行嵌入式Linux的CPU可以是x86,Alpha,Sparc,MIPS,PPC等。与这些芯片搭配的主板都很小,与一张PCI卡大小相当,有的甚至更小。嵌入式Linux所需的存储器不是软磁盘、硬盘、Zip盘、CDROM,DVD这些众所周知的常规存储器,他使用Rom,CompactFlash,MSystems的DiskOnChip,Sony的MemoryStick,IBM的MicroDrive等体积极小与主板上的BIOS大小相近,存储容量不太大的存储器。他的内存可以使用普通的内存,也可以使用专用的RAM。与其他嵌入式操作系统相比,Linux的源代码是开放的,不存在黑箱技术。Linux作为一种可裁剪的软件平台系统,是发展未来嵌入式设备产品的最佳资源。
3图形用户界面系统MiniGUI
3.1图形用户界面简介
计算机用户界面是指计算机与其使用者之间的对话接口,是计算机系统的重要组成部分。计算机的发展史不仅是计算机本身处理速度和存储容量飞速提高的历史,也是计算用户界面不断改进的历史。用户界面的重要性在于他极大地影响了最终用户的使用,影响了计算机的推广应用,甚至影响了人们的工作和生活。由于开发用户界面的工作量极大,加上不同用户对界面的要求也不尽相同,因此,用户界面已成为计算机软件研制中最困难的部分之一。
GUI 在嵌入式系统或者实时系统中的地位将越来越重要,这些系统对 GUI 的基本要求包括:
①轻型、占用资源少。
②高性能。
③高可靠性。
④可配置。
3.2MiniGUI图形用户系统
3.2.1MiniGUI特色
MiniGUI由原清华大学教师魏永明先生开发,是中国人做得较好的自由软件之一。MiniGUI是一种面向嵌入式系统或者实时系统的图形用户界面支持系统。他主要运行于 Linux 控制台,实际可以运行在任何一种具有 POSIX 线程支持的 POSIX 兼容系统上。MiniGUI 同时也是国内最早出现的几个自由软件项目之一。
MiniGUI 的主要特色有:
(1)遵循 LGPL条款的纯自由软件。
(2)提供了完备的多窗口机制。包括多个单独线程中运行的多窗口;单个线程中主窗口的附属;对话框和预定义的控件类(按钮、单行和多行编辑框、列表框、进度条、工具栏等)。
(3)消息传递机制。
(4)多字符集和多字体支持。
(5)BMP,GIF,JPEG,PCX 等常见图像文件的支持。
(6)Windows 的资源文件支持,如位图、图标、光标、插入符、定时器、加速键等。
(7)小巧
包含全部功能的库文件大小为 300 kB左右。
(8)可配置
可根据项目需求进行定制配置和编译。
(9)高稳定性和高性能。
(10)可移植性好。
(11)图形抽象层
图形抽象层对顶层 API 基本没有影响,但大大方便了 MiniGUI 应用程序的移植、调试等工作。目前包含2个图形引擎,SVGALib 和 LibGGI,利用 LibGGI 时,可在 X Window 上运行 MiniGUI 应用程序,并可非常方便地进行调试。与图形抽象层相关的还有输入事件的抽象层。
3.2.2MiniGUI的体系结构
从整体结构上看,MiniGUI是分层设计的,层次结构如图1所示。在最底层,GAL和IAL提供底层图形接口以及鼠标和键盘的驱动;中间层是MiniGUI的核心层,包括窗口系统必不可少的各个模块;最顶层是API,即编程接口。GAL和IAL为MiniGUI提供了底层的Linux控制台或者X Window上的图形接口以及输入接口,而Pthread用于提供内核级线程支持的C函数库。

MiniGUI 本身运行在多线程模式下,他的许多模块都以单独的线程运行,同时,MiniGUI还利用线程来支持多窗口。从本质上讲,每个线程有一个消息队列,消息队列是实现线程数据交换和同步的关键数据结构。一个线程向消息队列中发送消息,而另一个线程从这个消息队列中获取消息,同一个线程中创建的窗口可共享同一个消息队列。
多线程有一定的好处,但不方便的是不同的线程共享同一个地址空间,因此,客户线程可能会破坏系统服务器线程的数据,但有一个重要的优势是,由于共享地址空间,线程之间就没有额外的数据复制开销。由于 MiniGUI 是面向嵌入式或实时控制系统的,因此,这种应用环境下的应用程序往往具有单一的功能,从而使得采用多线程而非多进程模式实现图形界面有了一定的实际意义,也更加符合 MiniGUI 之“Mini”的特色。
在多线程环境中,与多进程间的通讯机制类似,线程之间也有交互和同步的需求。比如,用来管理窗口的线程维持全局的窗口列表,而其他线程不能直接修改这些全局的数据结构,而必须依据“先来先服务”的原则,依次处理每个线程的请求,这就是一般性的C/S模式。MiniGUI 利用线程之间的同步操作实现了客户线程和服务器线程之间的微C/S机制,之所以这样命名,是因为客户和服务器是同一进程中的不同线程。
4 MiniGUI在雷达显示界面上的应用
我们自主裁剪了Linux系统,并在此基础上安装了基于SVGALib图形引擎的MiniGUI轻量级图形用户界面支持系统,基于MiniGUI编写了图形用户界面雷达终端显示应用程序。
5结语
嵌入式Linux系统是源代码开放的一种可裁剪的软件平台系统,不存在黑箱技术。他的小巧、稳定、多任务、可配置、高性能、高可靠性、硬件的良好支持和价格的优势,尤其网络功能的强大,使他迅速成长发展,受到广大开发人员的青睐。
MiniGUI是国人自行开发研制的适合嵌入式系统的轻量级图形用户界面支持系统,他采用WIN32体系架构,提供了完备的多窗口机制、对话框和预定义的控件类,消息传递机制等,大大地简化了开发人员的界面设计。
但是,国产的嵌入式操作系统在技术含量、兼容性、市场运作模式等方面也还有很多工作要做,我们应该在跟踪国外嵌入式操作系统的最新技术的同时,坚持自主产权,力争找到自己的突破点,探索出一条自己的发展道路。Linux正提供了一个这样的平台。
参考文献
[1]邹思轶.嵌入式Linux设计与应用[M].北京:清华大学出版社,2002.
[2]魏忠,蔡勇,雷红卫.嵌入式开发详解[M].北京:电子工业出版社,2003.
[3]Daniel Bovet P,Marco Cesati.深入理解Linux内核[M].陈莉君,冯锐,牛欣源,译.北京:中国电力出版社,2001.
本文来源:现代电子技术 作者:杨小军
关于嵌入式Linux操作系统 单芯片 的资讯
热点资讯(一周点击率)
最受工程师关注文章
热评博文
评一评已有 0 位网友对此文发表了看法。 我也来评一下

