靠近硬件的底层是内核,即Linux常驻内存部分。中间层是内核之外的Shell层,即操作系统的系统程序部分。最高层是应用层,即用户程序部分。内核是Linux操作系统的主要部分,它是实现进程管理、内存管理、文件系统、设备驱动和网络系统等功能,从而为核外的所有程序提供运行环境。Linux系统内核结构图如下:
图 2-3 Linux系统内核结构
本课题是在linux系统上开发的,linux内核是2.6版本的。与其他系统相比Linux系统具有它本身的特点:
1.与UNIX兼容。
2.自由软件和源码公开。
3.性能高和安全性强。
4.便于定制和再开发。
5.互操作性高。
6.全面的多任务和真正的32位操作系统。
现在市面上有很多linux的版本,例如Red Hat,红旗linux,Debian,SuSE linux,Ubuntu等等。在这里我的宿主机使用的版本是fedora,目标机(PXA270)上运行的操作系统是由博创公司提供的已经剪裁过的linux系统。
2.2.2 MiniGui简介
Minigui项目的最初目标是为基于Linux的实时嵌入式操作系统提供的一个轻量级的图形用户界面支持系统。发展到今天,Minigui已进入成熟和稳定阶段,并且所支持的操作系统已不仅仅限于Linux,它还可以再uClinux,uC/OS-II,eCos和VxWorks等系统上运行。
Minigui为应用程序定义了一组轻量的窗口和图形设备接口,利用这些接口,每个应用程序可以建立多个主窗口,然后在这些主窗口中创建按钮、编辑框等控制。Minigui还为用户提供了丰富的图形功能,以显示各种各样的位图并在窗口中绘制复杂的图形。
MiniGui和嵌入式系统的关系如下图 1-4:
图 1-4 MiniGui和嵌入式系统的关系图
基于MiniGui的应用程序一般通过ANSI C库以及MiniGui自身提供的API来实现自己的功能。作为操作系统和应用程序之间的中间件,MiniGui将低层操作系统及硬件平台差别隐藏起来,并对上层应用程序提供了一致的功能特性。例如完善的多窗口机制和消息传递机制,常用的控件类,各种图形文件的支持,以及多字符集合多字体支持等等。
MiniGui的运行模式主要分以下三种:
第一种 MiniGui-Thread 模式。该模式为多线程的应用模式,运行在MiniGui-Thread上的应用程序可以在不用的线程中建立多个窗口,但所有的窗口在同一个进程或者地址空间中运行。
第二种 MiniGui-Lite模式。运行在MiniGui-Lite上的每一程序是单独的进程,每一个进程可以建立多个窗口。使用MiniGui-Lite模式时,需要有一个服务器进程(mginit),负责初始化一些输入设备,并通过UNIX DOMain套接字将输入设备的消息发送到前台的MiniGui-Lite客户进程。
第三种 MiniGui-Standalone模式。该模式为独立进程的应用模式。此时MiniGui程序以独立进程的方式运行,既不需要多线程的支持,也不需要多进程的支持。这中运行模式适合于功能单一的应用场合。
目前,流行的面向嵌入式系统的图形系统有MicoroWindows/NanoX、Qt/Embedded、MiniGUI、DirectFB、PicoGUI以及GTK+/FB等。它们中的大多数遵循LGPL条款发布,而MicoroWindows/NanoX遵循的是MGPL,Qt/Embedded采用QGPL条款发布。
MicroWindows/NanoX能够在没有任何操作系统或其他图形系统的支持下运行,它能对裸显示设备进行直接操作。这样,MicroWindows就显得十分小巧,便于移植到各种硬件和软件系统上。然而MicroWindows/NanoX的免费版本开发进展慢,而且缺乏全面专业的技术支持。
Qt/Embedded功能强大,但是,由于它是基于C++类库的,所以和其他GUI相比系统消耗资源较大,一般应用于手持式高端信息产品。
GTK+/FB与Qt/Embedded类似,跳过X层直接与FrameBuffer沟通,也具有Qt/Embedded的几项优点,但发展速度缓慢。
DirectFB是专注于Linux FrameBuffer加速的一个图形库,并试图建立一个兼容GTK的嵌入式GUI系统。
PicoGUI是一种新型的小巧的嵌入式图形系统。同X Windows系统一样具有一个弹性的客户服务端架构。PicoGUI将字体,位图,窗口小部件,以及其他应用程序需要的东西都直接建立在服务器上,与X Windows相比,虽然灵活性有所降低,但速度显著提升、体积大大缩小。
MiniGUI为实时嵌入式操作系统提供了非常完善的图形及用户界面支持。MiniGUI本身的可移植性设计,使得不论在哪个硬件平台,哪种操作系统上运行,MiniGUI均能为上层应用程序提供一致的应用程序编程接口(API)。MiniGUI小巧、灵活且对中文的支持性最好。所以在界面开发工具上选择了MiniGui。
2.2.3 Sqlite简介
1. SQLite总体简述
SQLite 是 D. Richard Hipp 用 C 语言编写的开源嵌入式数据库引擎。它是完全独立的,不具有外部依赖性。它是作为 PHP V4.3 中的一个选项引入的,构建在 PHP V5 中。SQLite 支持多数 SQL92 标准,可以在所有主要的操作系统上运行,并且支持大多数计算机语言。SQLite 还非常健壮。其创建者保守地估计 SQLite 可以处理每天负担多达 100,00 次点击率的 Web 站点,并且 SQLite 有时候可以处理 10 倍于上述数字的负载。
2. SQLite功能
SQLite 对 SQL92 标准的支持包括索引、限制、触发和查看。SQLite 不支持外键限制,但支持原子的、一致的、独立和持久 (ACID) 的事务。这意味着事务是原子的,因为它们要么完全执行,要么根本不执行。事务也是一致的,因为在不一致的状态中,该数据库从未被保留。事务还是独立的,所以,如果在同一时间在同一数据库上有两个执行操作的事务,那么这两个事务是互不干扰的。而且事务是持久性的,所以,该数据库能够在崩溃和断电时幸免于难,不会丢失数据或损坏。SQLite 通过数据库级上的独占性和共享锁定来实现独立事务处理。这意味着当多个进程和线程可以在同一时间从同一数据库读取数据,但只有一个可以写入数据。在某个进程或线程向数据库执行写入操作之前,必须获得独占锁定。在发出独占锁定后,其他的读或写操作将不会再发生。
SQLite 网站上记录了完整的 SQLite locking semantics。
3. SQLite内部结构
在内部,SQLite 由以下几个组件组成:SQL 编译器、内核、后端以及附件。SQLite 通过利用虚拟机和虚拟数据库引擎(VDBE),使调试、修改和扩展 SQLite 的内核变得更加方便。所有 SQL 语句都被编译成易读的、可以在 SQLite 虚拟机中执行的程序集。图2-5描述了SQLite的内部结构:
图 2-5 SQLite 的内部结构图
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] ... 下一页 >>