Maemo手册(51-53小节)参考译文.doc_第1页
Maemo手册(51-53小节)参考译文.doc_第2页
Maemo手册(51-53小节)参考译文.doc_第3页
Maemo手册(51-53小节)参考译文.doc_第4页
Maemo手册(51-53小节)参考译文.doc_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Maemo手册(5.1-5.3小节)参考译文计53班 特力更体系结构本文从应用程序编程人员的视角出发描述了Maemo平台的高层体系结构(参考第3部分来得到更多的细节描述)。本文还包含Maemo与流行的Ubuntu和Debian桌面Linux发行版本之间的比较。1 简介Maemo是基于Debian GNU/Linux这种继承自Unix体系结构的操作系统的开发平台。Linux,GNU和Debian是开源的项目(或者是包含了多个独立项目的项目),他们都支持共享源代码,共同协作以及开放编程模型。Maemo同样提倡这些做法,它通过共享源码并直接向上游软件项目做出贡献提供了完整的基于开源软件的移动设备平台。1.1 关键部件Maemo基于Linux操作系统内核。Linux是支持多种硬件平台的独立内核并且可以升级来支持更宽范围更多种类的设备,其支持的设备可以从腕表到大型的服务器系统。现在所有基于Maemo的设备都有OMAP芯片组,其包括通用目的的ARM处理器和DSP单元。Maemo设备目前运行2.6版本内核。用户空间软件与标准的GNU C语言库接口进行链接。除了一些使用了一些进行过大小优化的C语言库(例如uClibc)的最小化的嵌入式系统之外,目前大多数主要的Linux发行版本都包含了GNU C语言库。GNU C语言库是保持POSIX兼容的,而Maemo旨在与主流Linux兼容,尽可能地降低移植应用程序和应用程序引擎的工作量,并且尽可能地引进最好的移动计算的开源解决方案。Maemo的包管理框架,文件系统层次,和通用设计方案来自于Debian发行版本。Maemo旨在尽可能地遵循Debian的设计方法。到目前为止Debian发行版本拥有最大的开发社区;到2007年9月,Debian支持十多个不同的硬件架构,并且拥有多于18000个软件组件可供使用。Maemo的用户接口结构基于GNOME框架,尤其是GTK+部件集。GNOME是最主要的桌面Linux系统的应用框架。Maemo从GNOME项目中继承了很多核心组件,包括比如GTK+,GStreamer多媒体框架,GConf配置管理,和XML库。Maemo通过提供移动桌面Hildon扩展来扩展GTK+/GNOME。1.2 开发环境Maemo使用了基于Scratchbox的交叉编译环境。在Linux系统中交叉编译并不完善,因为通常其生成脚本利用了自动工具,而自动工具还未被设计完善以适用于交叉编译。所以,许多的Linux发行版本都回避了交叉编译的问题,并且使用专用硬件来运行本地交叉编译。这是一个很大的限制,因为有时本地硬件生成环境搭建起来很困难。并且即使它是可以使用的,那么通常生成脚本过程运行起来也会比交叉编译慢数倍。Scratchbox完全分离了目标和主机环境从而解决了这个问题。基于自动工具的生成脚本可以不经修改地运行于Scratchbox,从而在拥有不同于目标系统的硬件平台的主机系统上生成目标平台的二进制程序。官方的Maemo API提供的是C语言的。Maemo的核心API还有C+和Python版本的。还存在使用于其他语言和环境的非官方的版本2 软件层这一部分简短地描述了Maemo的软件层。在下一部分会给出一个更加详细的描述(软件分解视角)。2.1 操作系统层和启动引导引导装载程序需要关注一些硬件细节的初始化,然后在启动过程的早期阶段装入操作系统内核。Maemo系统基于Linux 2.6操作系统。在内核引导过程的最后阶段,InitFS(一个小的JFFS2文件系统镜像)将会被映射。InitFS将在引导阶段被用作根文件系统,并且在通常的设备操作中被映射到/mnt/initfs。最终的根文件系统在JFFS2镜像之上,而这个镜像是在InitFS引导脚本运行结束以后被映射的。InitFS上的应用程序会连接uClibc库,这是一个体积很小的C语言库的版本,可以减少空间的占用。设备状态管理实体(dsme)也在InitFS中。Dsme守护进程的存在是至关重要的,因为它也用于检查硬件监视程序。Linux内核是系统的核心软件部分。它为系统的设备提供硬件抽象层、内存管理、进程管理、还有包括链路和传输层协议例如TCP/IP的网络服务、包括文件系统的文件管理以及多种其他的服务。内核的一部分在功能上可以被实现为动态加载的内核模块。一个内核模块可以在运行时被加载或者被移除。例如设备驱动、网络协议、或者文件系统等内核功能都可以被实现为内核模块。在Maemo设备上的基于ARM/OMAP的Linux内核在内核核心的虚拟服务层之上实现了一些针对特定硬件的设备驱动和总线驱动。这些设备驱动包括USB、LCD、WLAN、摄像头和音频等。而总线驱动包括了Flash总线、SPI、I2C和串行总线等。2.2 系统库Maemo基于标准的GNU C语言库,并且也实现了标准的C+库。关于网络安全,OpenSSL库可以提供加密,并且libcurl可以为应用程序提供HTTP支持。对于硬件抽象,Maemo提供了HAL(Hardware Abstraction Layer)。它提供了一个拥有设备对象API的共享库。一个设备对象有很多属性,并且这些属性还要取决于实际的设备驱动是否支持这些属性。因此,当一个新设备被探测到,创建或者修改/dev的文件,跟踪设备的状态,或者提供使用设备的方法时,HAL就需要加载正确的设备驱动。2.3 系统服务应用程序间进行通信的主要通道是DBUS。DBUS也提供了系统和应用程序间进行交互的通道。除此之外,DBUS也被用于通过发送消息来调用应用程序。系统提供了一个SQL数据库SQLite3,可以用来存储用户应用程序的数据。SQLite数据库可以通过一个库接口来使用,并且没有集中服务器进程需要连接。2.4 Hildon框架用户接口是基于带有Matchbox窗口管理器的X窗口系统。X顶部的应用程序编程API是一个带有Hildon扩展的GTK+部件工具集。GTK+也是GNOME工程的UI框架。其他的GNOME构件也包含在了Maemo中,例如GConf应用程序配置管理,XML库,GnomeVFS,地址簿和日历管理的数据库后端服务器,GSF结构文件流,以及SVG(Scalable Vector Graphics)。基于G-Streamer的多媒体框架也包含在其中。Hildon框架提供了在GNOME构件之上的构件来支持控制面板、状态栏、任务导航器和主窗口小程序。Hildon框架也提供了备份/还原框架、帮助框架和一个应用程序管理器。2.5 应用程序应用程序建立在Hildon框架之上。简单的应用程序只需要链接Hildon库、GTK+、Glib和提供图形用户接口的libosso。更多的复杂应用程序根据它们的需求使用了其他的服务,比方说它们为了使用多媒体而链接G-Streamer或者为了使用HTTP而链接libcurl。3 软件分解视角3.1 软件构件Maemo的主要构件在下表中列出。更多的细节可以在点击所需的构件后看到。Maemo构件的分划并不是在实际的包的分划上做一一的映射,因为Maemo添加了一些抽象的构件。也就是说,图片中的各层并不代表实际的包的上层会依赖于下层,尽管其中的某些依赖关系是存在的。比方说,GTK+层之下的所有构件都不依赖于GTK+这一层。ApplicationsFontsSoundsIcons5.3.1 Connecticity5.3.1 System UI5.3.1 Search5.3.1 Text Input5.3.1 MIME Types5.3.1 Home Applets5.3.1 Control Panel5.3.1 Task Navigator5.3.1 Status Bar5.3.1 Backup5.3.1 Installer5.3.1 Alarm5.3.1 Help5.3.1 LauncherXMLE-D-STelepathyGConfGStreamerGnomeVFSGSF5.3.1 Sapwood5.3.1 Hildon Widgets5.3.1 Hildon File UIHTML WidgetGTK+GDKGdkPixbufPangoCairoAtkGLibGObjectSambaGPSObex3.1 ConICUPnPJPEGPNGTIFFSVGMatchboxD-BUSHALSQLitecurl HTTP3.1 ClipboardSSL5.3.1 System SW5.3.1 Cert. mgnt5.3.1 libossoXLibstd C+5.3.1 Com-pressiondpkgaptFreetypeFontconfigSysvinit5.3.1BaseFilesBusyboxGNU C LibraryCore LibsCoreUtils5.3.1 Core DaemonsBlueZ3.1 Power mgntWLAN securityALSAVideo4-LinuxBootloaderLinux kernel including JFFS2, TCP/IPInitFS in-CludinguClibcdsme标记着黄颜色的构件通常只提供二进制程序(虽然一些子构件可能会提供源代码),其他的构件会附带有源代码。然而一些特定的应用程序会提供源代码。一些Maemo专有的构件如下所述。Maemo连接控制子系统Maemo连接控制体系的构件包括:l Maemo连接控制UI 连接控制的用户接口部分。这些包括连接管理器,控制面板小程序和一些不同的对话框。l Maemo连接控制守护进程(ICd) 和ICd一起运行的LibConIC API操纵着所有的互联网访问点(IAPs)。IC守护进程控制着WLAN和蓝牙连接。l OBEX封装 OBEX服务的接口。这个库的主要目标用户是OBEX gnome-vfs模块。l OpenOBEX 对象交换协议(OBEX)的开源实现。可以从/obex/看到更多的信息。l BlueZ蓝牙堆栈 实际的Linux蓝牙的实现。可以从看到更多的信息。l Bluez D-BUSAPI Bluez通过D-BUS接受命令。l WLAN连接控制守护进程 这个守护进程控制着WLAN的连接。l WLAN设备驱动 无线网(IEEE 802.11g)的设备驱动。内核驱动由两个部分组成:一个二进制部分(闭源)和一个开源封装,这个包装把二进制部分和Linux内核绑定在一起。Maemo系统用户接口系统UI由两个部分组成。一个部分是系统UI自身,而另外一个部分由系统UI的插件程序组成。l 系统UI为系统UI插件提供了主应用程序,包含了插件加载和卸载的功能。l 系统UI插件为很多功能提供了用户接口,包括功能键菜单、闪屏、警报器、设备锁、触摸屏、小键盘锁以及模式转换。Maemo全局搜索Maemo全局搜索构件为Maemo提供了搜索框架。Maemo输入法嵌入式设备对于文本输入有着特殊的需求。这个框架为Maemo提供了输入法。Hildon主窗口小程序主窗口小程序(也可以称为插件)是一些主窗口上的小应用程序。它们可以提供很多功能,例如在线天气信息查询,或者最新新闻条目视图。Hildon控制面板Hildon控制面板为系统中应用程序、服务器等提供终端用户修改设置的功能。Hildon任务导航Hildon任务导航提供了应用程序间切换的菜单。为了使得Hildon任务导航中的应用程序可见,应用程序的桌面文件是必需的。这个文件包含了在菜单中显示应用程序入口所需的所有基本信息,例如文件名、二进制名和D-BUS服务名。文件名应该为应用程序.desktop,以及在文件系统中的位置“/usr/share/applications/hildon/”。Hildon状态栏状态栏是一个UI组件,可以在主屏幕上用小按钮显示多个系统任务的状态。Maemo状态栏也可以包含用户定义的项目。通常可以容纳两个附加的项目。这两个位置默认被usb连接显示器和警报显示器使用,但是也可以被任何插件程序使用。虽然插件程序可以被指明一个优先级,但是目前版本的状态栏不能够处理插件程序的优先级,所以只有最新的两个插件程序是可见的。MIME类型注册这个组件提供了MIME类型注册。Maemo备份Maemo备份程序可以保存并且恢复存储在一些特定目录中的用户数据,这些目录包括“/MyDocs(默认) and setting directories/files/etc/osso-af-init/gconf-dir”(这是一个链接,链接到GConf数据库“/var/lib/gconf”),“/etc/osso-af-init/locale”和“/etc/bluetooth/name”。同样也可以配置备份程序去备份其他的位置或者文件,具体方法可以参考自定义配置文件。Maemo备份程序的备份或者恢复操作绝对不能被其他应用程序的读写操作打断。对于恢复过程,备份程序会征求用户的同意,让应用程序关闭器去关闭所有的应用程序,然后一直等待直到它完成。对于备份过程,备份开始和备份结束的D-BUS信号会被发送到会话总线上,指示应用程序不能够写入磁盘。Maemo应用程序管理器Maemo应用程序管理器是一个可以管理应用程序安装和升级的应用程序。这个结构是基于dpkg和apt的。Maemo警报框架Maemo警报框架提供了一个管理定时事件的机制。定时事件在功能上由alarmd守护进程提供。它使得应用程序获得D-BUS消息或者在特定时间得到exec调用成为可能。包含在子系统中的包有:l Libalarml alarmdMaemo帮助框架Maemo帮助框架集中地向用户程序提供提供帮助服务。Maemo平台拥有一个嵌入式的帮助系统,可以使用帮助框架来操纵所有的程序的帮助文档。对于这个,有一些库可以将程序注册到帮助框架,这样只需要写入实际的帮助文档的内容就可以了。一个ID标签会交给XML格式的帮助文件。这种方法容易控制,当用户寻求帮助的时候,只要调用正确的帮助内容的ID就可以载入帮助文件了。如果使用帮助框架,那么在使用Maemo平台帮助程序的时候,就可以使用程序的帮助文档。Maemo启动器Maemo启动器可以启动Maemo平台上的大部分应用程序。通过Maemo启动器来共享一些应用程序的初始化数据可以加速应用程序的启动过程。Maemo启动器由两部分组成:(I)Maemo调用器;(II)Maemo启动器。Maemo调用器由D-BUS守护进程或者脚本执行来启动应用程序提供的服务;而Maemo启动器是一个初始化大多数应用程序所需数据的服务。Maemo调用器会要求Maemo启动器启动实际的应用程序。使用Maemo启动器需要应用程序被编译为一个共享库。有一套辅助Debian软件包规则可以使得在给定合适的生成选项的时候可以让应用程序自动地使用Maemo调用器。应用程序的二进制名通过其启动扩展被链接到Maemo调用器。默认的情况下,Maemo调用器会一直等待直到Maemo启动器通知它应用程序已经退出,这样它就可以向调用程序返回正确的返回值。Maemo启动器是一个服务进程,它可以初始化应用程序的数据,例如Glib类型,Gtk主题和一些Gtk部件类。当它被Maemo调用器调用来启动应用程序的时候,Maemo启动器并没有执行二进制程序,而是dl-load应用程序作为一个共享库,fork并且调用main()。通过fork,初始化数据被处理为copy-on-write,也就是说,被共享直到它被修改。如果应用程序异常退出,Maemo启动器会通知桌面,这样桌面可以向用户展示这些。因为预链接并不与dl-loaded库共同工作,Maemo启动器不能加速应用程序的启动过程,而库链接在启动过程的加速要远比AF库初始化更加有效。尽管它可以节省内存空间。SapwoodSapwood为访问主题图像提供了服务器和客户端库。服务器负责加载主题相关的图像,并且将它们发布给客户端。Pixbuf引擎不会在应用程序之间共享位图,而Sapwood与Pixbuf引擎相比更加节省内存。另外,Sapwood也会更快,因为它使用X Server来拼贴16位图像,然而pixbuf引擎会在客户端判断24/32位图像并且把它们转化到16位从而X Server可以blitting(按块处理)。Hildon部件Hildon组件在GTK+标准组件集之上还提供了很多GUI扩展。这些包括了应用程序组件(例如HildonApp,HildonWindow以及HildonProgram),选择器(例如HildonCalenderPopup),编辑器(例如HildonRange),通知器(例如HildonBanner)等。Hildon文件UI这个包为访问文件系统提供了图形用户接口组件。LibOSSOLibOSSO是一个共享库,它包含了使得Maemo应用程序可以更好地集成在平台上的必需的和有帮助的服务。系统软件系统软件子系统为应用程序和用户提供了整个系统范围的服务。这些服务包括了设备状态管理(dsm),模式控制(mce),电池管理(bme)和一些图形用户接口元素来管理这些服务的行为。以下是关于这些组件更多的细节描述:l 设备状态管理:负责管理设备的状态,包括关闭和启动。另外,dsm还负责保持设备运行和工作。这个可以通过检测关键进程的状态来实现,例如D-BUS,X11和窗口管理器。最后,dsm还负责跟踪不活动状态,并且在此基础上初始化省电操作(例如关闭屏幕)。l 模式控制:为控制各种设备模式提供接口,例如离线模式(禁用蓝牙和WLAN);提供各种系统级的用户接口,例如设备锁、触摸屏和键盘锁、LED等。l 电池管理:负责电池电压监测和识别,电池充电和充电器识别。电源管理电源管理(PM)框架考虑到了各种概念,包括dynamic tick、操作系统空闲、时钟框架和DVFS。PM框架可以分为两个独立的机制:操作系统空闲和DVFS。l 操作系统空闲基于操作系统的调度器。不论何时调度器没有任务执行,它就会调用空闲函数。空闲函数之后会选择关闭全部或部分硬件从而节省电源。省电的级别要根据使用的时钟和电压。l DVFS允许在运行时按比例减小SoC的频率和电压来降低电流泄露,从而节省电源。ARM和DSP处理器降频(从而降压)的根据处理器上的负载程序而不同。操作系统空闲和DVFS两者是独立触发的。DVFS的触发是基于所需处理的电源的增加或者减少,而操作系统空闲的触发是靠Linux调度器。目前Linux驱动模型提供的待机和恢复功能还不能使用。同样,内核级的电源管理也不能从用户空间得到引导。剪贴板在Maemo中,有很多X剪贴板和Gtk+的剪贴板改进使得:l 支持当应用程序所独有的剪贴板退出时保留剪贴板数据,l 在不同的应用程序的Gtk+文本视图之间复制和粘贴富文本数据。l 普遍提供了更好的用户体验;使得应用程序开发人员可以更加容易做到当应用程序不支持剪贴板中的数据格式时让“粘贴”的菜单项变灰。压缩这个子系统为一般目的的数据压缩和解压提供了多个库和程序。支持的压缩算法包括Lempel-Ziv(gzip),而该算法也被用为zip和PKZIP。支持的压缩格式包括:l zlibl deflatel gzipConICConIC为操作和使用互联网访问点(IAP)和IAP连接提供了一个接口。证书管理Maemo平台提供了API来证书的存储和处理。这样可以使得软件的每个部分可以访问到所有的证书,从而使得很多操作更易实现,例如,安装一个新的CA证书从而在所有相关的程序(如Web浏览器、e-mail、VPN和无线连接)中立即生效。这样可以节省工作量和磁盘空间。核心守护进程守护进程用来执行一些特定任务的服务进程。大多数的守护进程,像dbus-daemon,被分别描述从而这个子系统可以有多种多样的进程。这部分的包包括:l Sysklogd(系统消息日志)基本文件这个子系统会传递Debian系统的基本的文件系统层次,同时也会传递包含用户和组ID的用户数据库文件(/etc/passwd和/etc/group)原拷贝。这部分的包包括:l base-filesl base-passwd3.2 内核Maemo使用一个Linux 2.6的操作系统内核。Linux是一个开源的操作系统,它是由成千上万的志愿者和公司开发的,他们都在GNU GPL协议的基础上共享了他们的工作成果。结构上Linux有一个整体的内核。所有内核代码都在超级用户模式下运行。Linux内核可以通过动态加载内核模块在运行时扩展。还有很多设备驱动、文件系统以及网络协议模块的API。开发人员可以增加新的内核模块。Maemo内核是基于ARM内核分支并且可以由开发人员修改,再编译并且拷贝到闪存。一些模块只有二进制程序,例如WLAN,那么如果开发人员改变了内核,这些模块的API应该保持不变。3.3 闪存分区在基于Maemo的设备上有四个独立的闪存分区。这些分区是:l 启动加载分区l 内核分区l 初始文件系统(在一个小的JFFS2分区)l 根文件系统分区(在一个JFFS2分区)根文件系统分区包含了组件分解表的所有组件,而不是让这些组件在更低的层次。3.4 应用程序框架应用程序框架的设计目的是为了提供一个应用程序的标准结构来帮助应用程序的开发。带有图形用户接口的应用程序都会有一个类似的结构,比方说,事件驱动的运行时模型。这些事件由用户触发,例如在触摸屏上触摸了一个按钮。事件也可以被应用程序引擎自身触发。一个例子就是从网络上接受到新的数据。Maemo的应用程序框架叫做Hildon。Hildon一部分基于和GNOME框架同样的技术,比较明显的就是GTK+的组件。Hildon有一些GNOME/GTK+的附加和扩展,包括Hildon组件集,Sapwood主题引擎和图像服务器、任务导航器、Hildon控制面板和状态栏。与标准GNOME的一些不同之处,例如Sapwood,其设计的目的是为了减少内存的需求以及提高在小型手持设备上的运行速度。另外,Hildon框架有很多支持移动性的特点,例如自动存储状态、触摸屏输入技术以及小型便携设备上的窗口管理。框架的编程API对于GNOME和GTK+程序员来说非常熟悉。框架在下层有Glib和GObject对象管理系统。GTK+组件集和Hildon扩展一起提供。进程间的通信使用了D-BUS消息。用户文件可以通过GNOME-VFS访问,并且多媒体应用程序可以使用GStreamer来获得对于多种编解码器的加速支持。用户配置通过GConf来存储,并且还可以获得一个XML分析器的API。图表1:主要应用程序框架组件图表1说明了Maemo应用程序开发员必需处理的最至关紧要的组件和它们从属组件。这些组件在下一个部分将会解释更多的细节。3.5 基本发行版本Maemo很大程度上基于和Debian Linux发行版本同样的开源组件。Maemo在GNU/Linux之上构建了操作系统核心和GNOME/GTK+用户接口体系结构。Maemo使用了和Debian-dpkg-tool二进制包相同的组件包系统。可以安装新的包,而旧的包可以被卸载,并且整个系统可以通过包管理框架进行升级更新。整个文件系统结构也来自于Debian。Maemo有很多优化和扩展可以使得在Internet Tablet上运行软件。这些包括电源管理相关的问题,触摸屏输入,性能和大小优化。为了减少空间,Maemo使用了shell和Busybox的命令行工具。很明显Maemo平台很紧密地附属于GNOME移动平台。在写操作的时候,Maemo使用了与GNOME移动平台完全相同的组件,除了服务发现功能部分。标准Debian系统的基本包和Delta核心版本是Debian,例如对于安装包管理使用了dpkg和apt之类的工具。同样,sysvinit,base-files和base-passwd也被包含在Debian Etch基本包列表中。然而与标准Debian想比也有几个不同的地方。一个是用Busybox

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论