嵌入式系统Linux-Qt
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.绪论
1.1课题研究的背景
本世纪是嵌入式计算系统时代,在日常生活和工作中人们所接触的设备大部分都是嵌入式设备,这些嵌入式设备一般都具有强大计算能力的。
嵌入式系统指的是把计算机系统作为一个信息处理件嵌入到应用系统中而形成的系统,是适应具体应用系统在功能、可靠性、成本及功耗诸方面更多的综合要求的专用计算机系统,它是计算机技术追求经济型、小型化、可靠性、高速度和节能型的必然结果。
近年来,随着计算机、微电子、通信及网络技术的发展,嵌入式系统已经应用于工业控制、家用电器等领域,并广泛用于移动计算机平台、信息家电、无线通信设备、电子商务平台及军事设备。
1.1.1嵌入式系统的基本概念
嵌入式系统(Embedded Systems)是以应用为中心,以计算机技术为基础,软硬件可裁减,适应于应用系统对功能、可靠性、成本、体积、功耗等综合性严格要求的专用计算机系统。
近年来,随着芯片制造技术、通信技术和网络技术等快速发展,嵌入式系统诸多方面也有突飞猛进的发展,大约90%的商用微处理器最终是被用在了嵌入式系统上。
1.1.2嵌入式系统的技术特点
嵌入式系统一般指非PC系统,它包括硬件和软件两部分。
硬件包括处理器/微处理器、存储器及外设器件和I/O端口、图形控制器等。
软件部分包括操作系统软件(OS)(要求实时和多任务操作)和应用程序编程.有时设计人员把这两种软件组合在一起。
应用程序控制着系统的运作和行为;而操作系统控制着应用程序编程与硬件的交互作用。
嵌入式系统的核心是嵌入式微处理器。
处理器一般具备以下4个特点:
1、对实时多任务有很强的支持能力,能完成多任务并且有较短的中断响应时间,从而使内部的代码和实时内核心的执行时间减少到最低限度。
2、具有功能很强的存储区保护功能。
这是由于嵌入式系统的软件结构已模块化,而为了避免在软件模块之间出现错误的交叉作用,需要设计强大的存储区保护功能,同时也有利于软件诊断。
3、可扩展的处理器结构,以能最迅速地开展出满足应用的最高性能的嵌入式微处理器。
4、嵌入式微处理器必须功耗很低,尤其是用于便携式的无线及移动的计算和通信设备中靠电池供电的嵌入式系统更是如此,如需要功耗只有mw甚至μW 级。
嵌入式处理器的应用软件是实现嵌入式系统功能的关键。
对嵌入式处理器系统软件和应用软件的要求也与同用计算机有所不同。
1、软件要求固化存储。
为了提高执行速度和系统可靠性,嵌入式系统中的软件一般都固化在存储芯片或单片机中,而不是存储在磁盘等载体中。
2、软件代码高质量和高可靠性。
尽管半导体技术的发展,使处理器速度不断提高,芯片上存储容量不断增加,但在大多数应用中,存储空间仍然是宝贵的,还存在实时性的要求。
为此,要求程序编写和编译工具的质量要高,以减少程序二进制代码长度,提高执行速度。
3、许多应用要求系统软件(OS)具有实时处理能力。
在多任务嵌入式系统中,对重要性各不相同的任务进行统筹兼顾的合理调度是保证每个任务及时执行的关键。
单纯通过提高处理器速度是无法完成和没有效率的。
这种任务调度只能由嵌入式操作系统来完成,因此要求操作系统具有实时处理能力。
1.1.3嵌入式系统的应用前景
后PC时代是一个真实的阶段,而且是一个可以预测的时代。
嵌入式系统就是与这一时代紧密相关的产物,它将拉近人与计算机的距离,形成一个人机和谐的工作与生活环境。
从某一个角度来看,嵌入式系统可应用于人类工作与生活的各个领域,具有极其广阔的应用前景。
嵌入式系统的主要应用如表1-1所示:
表1-1 嵌入式系统的应用领域
1.2嵌入式操作系统
1.2.1几种常用的嵌入式操作系统
嵌入式操作系统EOS(Embedded Operating System)是一种支持嵌入式系统应用的操作系统软件,它是嵌入式系统(包括软、硬件的)极为重要的组成部分,通
常包括与硬件相关的底层驱动软件、系统内核、通信协议、图形界面、标准化浏览器等。
嵌入式操作系统具有通用操作系统的最基本功能,如任务调度、同步机制、中断处理、文件处理等外,还具有可裁减;统一的接口;操作方便、简单;提供强大的网络功能:强稳定性,弱交互性;可固化代码;良好的移植性等。
嵌入式操作系统负责嵌入式系统的全部软、硬件资源的分配、调度、控制协调并发活动,它必须体现其所在系统的特征,能通过装卸某些模块来达到系统所要求的功能。
在嵌入式操作系统环境下开发应用程序使程序的设计和扩展变得容易,不需要大的改动就可以增加新的功能。
通过将应用程序分割成若干独立的任务模块,使应用程序的设计过程大为简化,而且对实时性要求苛刻的事件都得到了快速、可靠的处理。
通过有效的系统服务,嵌入式操作系统使得系统资源得到更好的利用。
以下简要介绍几种目前市场上流行的嵌入式操作系统:l、VxWorks
VxWorks是美国WindRiver公司于1983年设计开发的一种实时嵌入式操作系统(RTOS),提供了高性能的内核、友好的用户开发环境、高效的实时任务调度、中断管理,实时的系统资源以及实时的任务间通信。
它支持如x86、i960、Sun Spare、MotorolaMC68xxx、MIPS RX000、Power PC等多种处理器,是当前嵌入式系统中使用最广泛、市场占有率最高的操作系统。
但由于VxWorks的开发和使用都需要支付高额的专利费,因此大大增加了用户的开发成本;同时由于VxWorks的源码不公开,造成它部分功能的更新滞后。
2、Windows CE
Windows CE是微软开发的一个开放的、可升级的32位嵌入式操作系统,是基于掌上型电脑类的电子设备操作系统,是精简的Windows 95。
Windows CE具基于Linux的嵌入式GUI的研究与开发有模块化、结构化和基于Win32应用程序接口以及与处理器无关等特点;它不仅继承了传统的Windows图形界面,并且用户在Windows CE平台上可以使用Windows上的编程工具、也可以使用同样的函数、使用同样的界面风格,绝大多数Windows上的应用软件只需简单的修改和移植就可以在Windows CE平台上继续使用,使得熟悉PC机Windows系统的用户能很快学会它的使用。
与VxWorks一样,Windows CE的价格也很昂贵。
3、QNX
QNX是加拿大QNX公司的一个实时的、可扩充的操作系统,是业界公认的X86平台上最好的嵌入式实时操作系统之一,它提供了一个很小的微内核以及一些可选的配合进程,其内核仅提供4种服务:进程调度、进程间通信、底层网络通信和中断处理。
这独一无二的微内核实时平台,是建立在微内核和完全地址空间保护基础之上的,它同样具有实时性强、稳定可靠的优点。
其它的嵌入式操作系统如:μC/OS-II也是一个典型的实时操作系统。
它的特点是公开源代码,代码结构清晰,注释详尽,组织有条理,可移植性好,可裁减,可固化及抢占式的多任务实时内核。
而Nucleus实时操作系统是Accelerator Tochnology公司开发的嵌入式RTOS,产品只需一次性购买Licenses就可以获得操作系统的源码,并且免版税。
Nucleus的内核非常小巧,只有4KB---20KB,稳定性高。
Nucleus得到许多第三方工具厂商和方案提供商的支持。
目前Nucleus在国内得到广泛的应用,特别是在手机制造行业,几乎所有的手机厂商都采用了Nucleus解决方案。
但在所有的操作系统中.Linux是一个发展最快、应用最广泛的操作系统。
下一节将进一步详细介绍。
1.2.2嵌入式linux系统
免费使用和自由传播的类UNIX操作系统Linux是一个源代码开发的、成熟而稳定的网络操作系统。
Linux自发布以来,在嵌入式领域取得了飞速的发展,目前在开发的嵌入式系统中,49%的项目选择Linux作为嵌入式操作系统。
Linux之所以能在嵌入式系统市场上取得如此快的发展,与它自身的优良特性有着不可分割的关系。
(1)开放源码,丰富的软件资源
Linux是自由的操作系统,它的开放源代码使用户获得了最大的自由度。
Linux上的软件资源十分丰富,每一种通用程序在Linux上都可以找到,并且每天都在增加。
在Linux开发程序往往不需要从头做起,而是先选择一个类似的自由软件,进行二次开发。
这就大大节省了开发工作量,缩短了开发时间。
Linux还具备一整套工具链,容易自行建立嵌入式系统的开发环境和交叉运行环境,可以跨越嵌入式系统开发中仿真工具的障碍。
如利用GNU的gee做编译器,用gdb,kgdb,xgdb做调试工具,能够很方便地实现从操作系统到应用软件各个级别的调试。
(2)功能强大的内核,性能高效、稳定、多任务Linux的内核非常稳定。
它的高效和稳定性已经在各个领域,尤其在网络服务器领域得到了事实的验证,而且Linux内核小巧灵活,易于裁剪。
这时Linux能适合嵌入式系统的应用。
(3)支持多种体系结构
Linux能支持X86、ARM、MIPS、SH、XSCALE等多种体系结构。
目前,Linux 已被移植到数十种硬件平台上,几乎所有流行的CPU,Linux都能支持。
现在Linux 已经可以在没有MMU的处理器上运行了。
这就进一步促进了Linux在嵌入式系统中的应用。
(4)完善的网络通信、图形和文件管理机制
Linux诞生于因特网时代并具有Unix的特性,强大的网络功能保证了它支持所有标准的因特网协议,可以利用Linux的网络协议栈开发嵌入式的TCP/IP网络协议栈。
在支持图形方面,Linux上既有成熟的X Window,也有QT、MiniGUI 等嵌入式GUI。
此外Linux还支持ext2、ext3、fatl6、fat32、romfs等多种文件系统,有的文件系统还具有防断电功能,这为开发嵌入式系统打下了很好的基础。
(5)支持大量的周边硬件设备,驱动丰富
Linux上的驱动非常丰富,支持各种主流硬件设备和最新硬件技术,而且随着Linux的广泛应用,许多芯片厂家也开始提供Linux上的驱动。
这进一步促进了Linux各种硬件平台上的应用。
(6)大小功能都可定制
Linux继承了Unix的优秀设计思想,内核与用户界面是完全独立的。
它非常灵活,各部分的可定制性都很强,能适合多种需求,能根据嵌入式设备的个性需要量体裁衣,是硬件资源有限的嵌入式系统的首选。
且Linux符合IEEE POSIX.1标准,使应用程序具有较好的可移植性。
正是嵌入式操作系统的特殊要求,为Linux在嵌入式系统中的发展提供了广阔的空间。
由于Linux的高度灵活性,程序员可以很容易地根据应用领域的特点对它进行定制开发,以满足自己的实际应用需要。
Linux固有的多任务、高效、稳定的系统特征,使Linux成为嵌入式操作系统中的新贵。
嵌入式Linux一般是按照嵌入式目标系统的要求而设计,由一个体积很小的内核及一些可以根据需要进行裁剪的系统模块组成。
一般来说,整个系统所占用的空间不会超过几兆大小。
1.3本论文主要内容
该课题的主要任务是在嵌入式Linux-Qt4平台下,设计一款显示软件,该软件会自动从串口采集数据,并进行简单处理,进行温湿度控制显示,并提供越界报警等功能。
该课题目的在于综合训练学生运用所学的C语言设计与C++语言设计,操作系统,微机原理,接口技术,计算机控制技术等的基本理论、基本知识和基本技能,锻炼提高学生的分析和解决实际工作问题的能力,培养学生具有从事本专业生产和科学研究的初步能力。
第一章,绪论,主要介绍嵌入式系统得基本概念和发展概况,包括常用的嵌入式操作系统。
第二张,串口通信,介绍了本控制系统的硬件平台即串口通信,并详细介绍了Linux下串口通信的基本原理和实现方法。
第三章,介绍了常用的嵌入式GUI并对图形用户界面Qt进行了详细介绍,
包括Qt的原理和重要模块的功能,重点说明应用到嵌入式平台上及基本编程方法。
第四章,上层软件实现,也是本文最重要的部分,结合源程序,详细介绍温度控制系统上层软件的具体实现方法,包括界面程序编写和主控制程序各个部分的具体技术细节。
第五章,总结与展望,总结了本论文的主要涉及内容,并展望了嵌入式的发展前景。
2.串口通信
2.1串口通信的基本原理
计算机与外界信息交换称为通信。
通信的基本方式可分为并行通信和串行通信两种,第一种是并行通信,它是指数据的各位同时进行传送的通信方式。
其优点是传送速度快,缺点是一个并行数据有多少位,就需要多少根传输线。
所以在位数较多时不适合于远距离传输。
第二种是串行通信,它是指数据逐位顺序传送的通信方式。
其优点是仅需单线传输信息,适用于远距离通信,其缺点是传送速度较低。
数据通信是涉及两台设备之间传输数据的问题,串行通信是两台设备之间传输数据的一种通信方式。
由于计算机中的数据是采用并行处理的方式,在两台计 算机之间进行数据通信时,需要把数据由并行转换为串行进行发送,在接受时在 将串行数据转换为并行数据,然后交计算机处理。
串行是指计算机在某一时刻只传输二进制数据的一位(0或者1)。
串行数据的传输速度用bps(bits per second 位/秒)表示,或者用波特率表示。
常用的波特率如下:300bps ,600bps ,1200bps ,2400bps ,4800bps ,9500bps ,19200bps ,38400bps ,43000bps ,56000bps ,57600bps ,1 15200bps 。
在异步通信系统的数据传输过程中,接收器和发射器的时钟不是同步的。
数据可以在任何时候接受和发送。
这就需要一种方法决定什么时候应该开始接受、数据是什么和什么时候数据发送完毕。
在通常情况下,异步传输是以独立的字节方式传输的:每个字节前有一个起始位,紧随其后的数据位和奇偶校验位,最后是停止位。
如图2-1所示
0.5比特
1比特8位数据位,有奇偶校验位,一位停止位
图2-1异步通信时序图
Figure 2-1 The scheduling of AC
在异步通信时序图中,起始位为0,数据位可以是6、7或8位,奇偶校验位可选,停止位可以是一位或两位,这些通讯细节在数据传输开始前都要预先指定。
RS-232C标准是由美国电子工业协会(Electronic EIA)定义的用于串行通信的电气接口标准。
RS-232C定义了25针,但实际上只是使用了其中的9针,在PC 机上都是9针的接口。
PC机上的串行通信接口定义如下:针脚1:DCD(Data Carrier Detect)、针脚2:RXD(Receive Data)、针脚3:FXD(Transimit)、针脚4:DTR(Data Terminal Ready)、针脚5:GND (SIGNAL Ground)、针脚6:DSR(Data Set Ready)、针脚7:RTS(Request To Send)、针脚8:CTS(CLEAR To Send)、针脚9:RI (Ring Indicator)。
针脚排列如图2-2
图2-2 RS-232串口针脚排列图
Figure 2-2 The Appearance And Pin Map Of RS-232
2.2 Linux下串口通信的实现
嵌入式设备与外围设备通信的方式方法一直是人们关心的问题。
本章讨论使用串行通信口与外部设备通信的闯题。
首先,介绍在Linux下的串行通信规范及如何进行串行通信编程的基本知识和范例。
最后,着重讲述嵌入式Linux环境下使用RS--232接收传递数据的编程方法和实现过程,并给出详尽的分析。
嵌入式Linux内核一般不包含串口控制模块,因此,在移植编译内核时就应加入串口通信控制模块。
同所有的设备一样,Linux通过设备文件访问串行口。
为了访问串行口,仅需打开相应的设备文件即可。
在Linux系统里,每个串行端口有一个或多个设备文件同其相关联(在/dev目录中)。
如COM1对应/dev/ttys0,COM2对应/dev/ttys1。
2.2.1串口控制界面
Linux系统对串口控制由一个终端控制数据结构termios和11个控制函数组成,其定义在<termios.h>头文件中。
termios数据结构定义如下:#include<termios.h>
struct termios
{
tc_flag c_iflag;// 指明输入方式的标志位
tc_flag c_oflag;// 指明输出方式的标志位
tc_flag c_cflag;// 指明控制方式的标志位
tc_flag c_lflag;// 指明局部方式的标志位
cc_t c_cc[NCCS];// 指明用于控制的特殊字符
}
termios结构的五个成员分别对应终端的输入方式、输出方式、控制方式、局部方式以及特殊字符。
对终端访问控制函数如表2-1所示,
表2-1控制函数
这些函数一起构成了通用的终端界面,提供对终端有效控制操作,使得嵌入式设备具有复杂的异步串口设备处理能力。
2.2.2 串行设备三种不同的输入方式
(一)标准输入模式
这是终端设备的标准处理模式,在与其它的以行为单位的输入通讯中也很有用。
这种方式中,read会传回一整行完整的输入一行的结束,默认是以NL(ASCII 值LF),文件结束符,或是一个行结束字符。
默认设置中,CR(DOS/Windows 里的默认行结束符)并不是行结束标志。
标准的输入处理还可以处理清除,删除字,重画字符,转换CR为NL等等功能。
(二)非标准输入模式
非标准输入处理可以用于需要每次读取固定数量字符的情况下,并允许使用字符接收时间的定时器。
这种模式可以用在每次读取固定长度字符串的程序中,或者所连接的设备会突然送出大量字符的情况下。
(三)异步输入模式
前面两种模式都可以用在同步与异步的传输模式。
默认是在同步的模式下工作的,也就是在尚未读完数据之前,read的状态会被阻塞(block)。
而在异步模式下,read的状态会立即返回并送出一个信号到所调用的程式直到完成工作。
这个信号可以由信号处理程式handler来接收。
2.2.3串口通信步骤
下面将列出嵌入式Linux下的串口通信的步骤:
(1)用open打开设备文件。
此时需要使用O_NONBLOCK和O_NONCCTY 打开标志。
O_NONBLOCK标志使得open不等待就立即返回,O_NONCCTY指明串口设备不是控制终端;
(2)使用tcgetattr获得当前设备方式;
(3)设置termios成员c_iflag,c_oflag,c_cflag和c_cc;
(4)使用cfsetispeed和cfsetospeed设置通信波特率;
(5)使用tcsetattr设置设备的工作方式;
(6)使用read和write读写串口设备终端:
(7)程序使用tcflush,tcdrain,tcsendbreak等函数对端口上的数据适当控制:
(8)输入/输出完成,用close关闭串口。
2.2.3串口通信的实现
下面将对嵌入式Linux系统与PC机通信的关键源代码加以分析。
(1)Linux下串口操作需要的头文件有
#include <stdio.h> /*标准输入输出定义*/
#include <stdlib.h> /*标准函数库定义*/
#include <unistd.h> /*Unix 标准函数定义*/
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h> /*文件控制定义*/
#include <termios.h> /*PPSIX 终端控制定义*/
#include <errno.h> /*错误号定义*/
(2)串口打开程序:
/*open打开串口,成功返回设备文件描述符,错误返回-1。
*/
int open_port(void)
{
int fd;/*设备文件描述符*/
fd=open(“/dev/ttys0”,O_RDWR|O_NONCTTY);/*p打开串口文件设备,在Linux下,ttys0表示串13 1,ttysl表示串口2*/
if(fd = -1) //错误的话打印不能读取串口
{
printf(“unable to open/dev/ttys0”);
return -1;
}
return fd;//正确打开返回文件标识符
}
(3)串口读写程序:
从端口读写数据是很容易的,只要使用read/write函数就可以了。
char buffer[255]; //定义缓冲区
int n=read(fd,buffer,5); //把数据从串口读到缓冲区
n=write(fd,”Data”,4);//把数据由缓冲区写到Data里
(4)串口配置程序
int setupcom(int fd) /*fd为设备文件描述符*/
{
struct termios options;
int result;
result=tegetattr(fd,&options);/*取得源文件描述符*/
if(result<0)
{
printf(”error in tcgetattrha”);/*没有成功获取终端属性的文件操作符*/
retum -1;
}
/*设置奇偶校验、无奇偶校验*/
options.c_cflag&=~PARENB;
options.c_cflag&=~CSTOPB;
options.c_cflag&=~CSIZE;
options.c_cflagl=CS8;
/*设置非加工方式输入*/
options.c_iflag&=~(ICANONJECHOJISIG);
/*设置非流控制*/
options.c_iflag&=~(IXONIIXOFFIIXANY);
options.c_cflag&=~CRNL;
options.c_cflag&=~OPOST;
/*输入输出字节控制、读写返回控制*/
options.c_cc[VMIN]=5;
options.c_cc[VTIME]=1;
/*设置通信波特率*/
cfsetospeed(&options,B1200);
cfsetispeed(&options,B1200);
tcsetattr(fd,TCSANOW,&options);
return 1;
}
经过上面的设定之后,串口就按己经设定的方式工作了,可以用标准的文件读写命令read和write来完成串口通信操作。
最后在退出前,用close函数来关闭串口。
2.3本章小结
本章首先介绍了RS-232串口的基本通信原理及基本概念,主要介绍了嵌入式Linux环境下串口通信实现的方法。
Linux通过设备文件访问串行口,为了访问串行口,仅需打开相应的设备文件。
嵌入式Linux与串口的通信,包括串口的打开、对串口的读写和配置。
最后,文章给出了在Linux系统下串口通信的实例。
3. 嵌入式GUI与Qt
目前的桌面机操作系统大多有着美观、操作方便、功能齐全的GUI(图形用户界面),例如KDE 或者GNOME。
GUI(图形用户界面)是指计算机与其使用者之间的对话接口,可以说,GUI是当今计算机技术的重大成就。
它的存在为使用者提供了友好便利的界面,并大大地方便了非专业用户的使用,使得人们从繁琐的命令中解脱出来,可以通过窗口、菜单方便地进行操作
目前业界的GUI系统很多,嵌入式系统领域有两大阵营:一个是微软公司的WinCE系统,还有一个是基于嵌入式Linux系统的图形用户界面。
WinCE系统是一个抢占式多任务并具有强大通信能力的Win32嵌入式操作系统,其包括嵌入式操作系统内核、GUI平台和图形用户界面。
由于WinCE系统未开源,只能整套使用,这样就限制了WinCE系统的多样性。
而Linux本身为一个嵌入式操作系统内核,其与GUI平台分离,所以基于嵌入式Linux操作系统的GUI平台具有良好的独立性。
这使得旧的用户界面容易去除,新的方案容易被采用,而不需要对底层的操作系统进行改动,而且使用户可以挑选适合自己嵌入式产品的基于Linux操作系统的GUI平台。
由于上述优点,更为了适应日益扩大的嵌入式Linux市场的需求,国内外的相关研究机构和开发商已经或者正在开发一大批嵌入式图形系统项目和原型产品.基于嵌入式Linux系统的GUI平台有:国外:紧缩的X Windows系统(Tiny.X)、Nano.XWindow、OpenGUI、QT等。
国内:MiniGUI系统。
其中最经典的算Nano-X Window和QT了。
3.1常用嵌入式GUI
3.1.1 OpenGUI
OpenGUI采用LGPL条款发布,是基于一个用汇编实现的x86图形内核。
OpenGUI采用分层结构:最底层是使用汇编语言编写的高速图形引擎,中间层实现了用于图形绘制的API,包括线条、矩形和圆弧等,第三层是使用C++编写的完整的GUI对象集。
OpenGUI利用MMX指令进行了优化,因此其运行速度非常快。
OpenGUl支持多种操作系统平台,比如MS.DOS,QNX和Linux等等,不过目前只支持x86硬件平台。
OpenGUI的资源消耗小、可移植性差、不支持多进程,目前的发展比较缓慢。
3.1.2 Nano-X Window
Nano-X Window(MicroWindows)目前由美国一家公司在主持开发,是一个著名的完全开放式源码嵌入式GUI系统,针对商业目的的GUI平台而设计,其把图形用户界面引入到运行Linux的嵌入式设备平台上。
作为X Window等商业图形用户界面平台的替代品,Nano-X Window可以使用更少的RAM和文件存储空(100K-600K),而提供与这类平台相似的功能。
Nano-X Window可移植性好,尽管为了速度,少部分Nano-X Window程序代码用汇编语言实现,但还是可以认为Nano.X Window是完全用C语言写的.
(一)基本功能
目前Nano-X Window可以运行在支持Framebuffer的32位Linux系统上,或者也可以使用SVGALib库作为图形显示。
在Framebuffer设备上可以提供l、2、4、8、16、24、32位象素的支持。
另外还包括彩色和灰度显示,在此基础上还实现了VGAl6平面模式的支持。
在象素位上处理基于l、2、4、8调色板模式和16、24和32真彩色模式。
Nano-X Window支持Intel 16位、32位CPU。
MIPS R4000以及ARM芯片。
尽管Nano-X Window完全基于Linux上,但是它内部的可移植结构是基于一个相对简单的屏幕设备接口,可在许多不同的RTOS和裸机上运行。
这种特性的优点突出体现在用户设计的图形程序不需重写就可以被不同的工程共享,甚至可以运行在不同RTOS的不同对象上。
Nano-X Window还提供了一个简单灵活的GUI工具箱——FLTK,特别适用于占用资源很少的环境。
它提供大多数窗口构件一一按钮、对话框、文本框以及出色的“赋值器”选择(用于输入数值的窗口构件),还包括滑动器、滚动条、刻度盘等其它构件。
针对Nano—XWindOWGUI引擎的FLTK的Linux版本被称为FLNX,它能用来为嵌入式环境创建一个出色的UI构建器,由两个构件组成:FI_Widget和FLUID。
FI_Widget 由所有基本窗口构件I组成,占用40KB~48KB 的资源。
FLUID(Fast Light User Interface Desigher,快速轻巧的用户界面设计器)是用来产生FLTK源代码的图形编辑器,占用大约380KB资源(包括每个窗口构件)。
FLTK是一个C++库,由于大多数现代GUI环境都是面向对象的,这样编写的应用程序移植到类似的API中会更容易。
·
Nano.X windOW实现了对X11的支持,基于Nano-X Window的应用程序可以运行在X Window下。
这样,基于Nano-X Window设计的应用程序就可以在主机进行编写并直接在X Window系统上编译和测试运行,而测试成功后只需交叉编译及可在目标平台上运行。
在主机X Window系统上测试运行的目标应用。