Maemo指导手册小节参考译文Word文件下载.docx
《Maemo指导手册小节参考译文Word文件下载.docx》由会员分享,可在线阅读,更多相关《Maemo指导手册小节参考译文Word文件下载.docx(16页珍藏版)》请在冰豆网上搜索。
2软件层
这一部分简短地描述了Maemo的软件层。
在下一部分会给出一个更加详细的描述(软件分解视角)。
2.1操作系统层和启动引导
引导装载程序需要关注一些硬件细节的初始化,然后在启动过程的早期阶段装入操作系统内核。
Maemo系统基于Linux2.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基于标准的GNUC语言库,并且也实现了标准的C++库。
关于网络安全,OpenSSL库可以提供加密,并且libcurl可以为应用程序提供HTTP支持。
对于硬件抽象,Maemo提供了HAL(HardwareAbstractionLayer)。
它提供了一个拥有设备对象API的共享库。
一个设备对象有很多属性,并且这些属性还要取决于实际的设备驱动是否支持这些属性。
因此,当一个新设备被探测到,创建或者修改/dev的文件,跟踪设备的状态,或者提供使用设备的方法时,HAL就需要加载正确的设备驱动。
2.3系统服务
应用程序间进行通信的主要通道是DBUS。
DBUS也提供了系统和应用程序间进行交互的通道。
除此之外,DBUS也被用于通过发送消息来调用应用程序。
系统提供了一个SQL数据库SQLite3,可以用来存储用户应用程序的数据。
SQLite数据库可以通过一个库接口来使用,并且没有集中服务器进程需要连接。
2.4Hildon框架
用户接口是基于带有Matchbox窗口管理器的X窗口系统。
X顶部的应用程序编程API是一个带有Hildon扩展的GTK+部件工具集。
GTK+也是GNOME工程的UI框架。
其他的GNOME构件也包含在了Maemo中,例如GConf应用程序配置管理,XML库,GnomeVFS,地址簿和日历管理的数据库后端服务器,GSF结构文件流,以及SVG(ScalableVectorGraphics)。
基于G-Streamer的多媒体框架也包含在其中。
Hildon框架提供了在GNOME构件之上的构件来支持控制面板、状态栏、任务导航器和主窗口小程序。
Hildon框架也提供了备份/还原框架、帮助框架和一个应用程序管理器。
2.5应用程序
应用程序建立在Hildon框架之上。
简单的应用程序只需要链接Hildon库、GTK+、Glib和提供图形用户接口的libosso。
更多的复杂应用程序根据它们的需求使用了其他的服务,比方说它们为了使用多媒体而链接G-Streamer或者为了使用HTTP而链接libcurl。
3软件分解视角
3.1软件构件
Maemo的主要构件在下表中列出。
更多的细节可以在点击所需的构件后看到。
Maemo构件的分划并不是在实际的包的分划上做一一的映射,因为Maemo添加了一些抽象的构件。
也就是说,图片中的各层并不代表实际的包的上层会依赖于下层,尽管其中的某些依赖关系是存在的。
比方说,GTK+层之下的所有构件都不依赖于GTK+这一层。
Applications
Fonts
Sounds
Icons
5.3.1Connecticity
5.3.1SystemUI
5.3.1Search
5.3.1TextInput
5.3.1MIMETypes
5.3.1HomeApplets
5.3.1ControlPanel
5.3.1TaskNavigator
5.3.1StatusBar
5.3.1Backup
5.3.1Installer
5.3.1Alarm
5.3.1Help
5.3.1Launcher
XML
E-D-S
Telepathy
GConf
GStreamer
GnomeVFS
GSF
5.3.1Sapwood
5.3.1HildonWidgets
5.3.1HildonFileUI
HTMLWidget
GTK+
GDK
GdkPixbuf
Pango
Cairo
Atk
GLib
GObject
Samba
GPS
Obex
3.1ConIC
UPnP
JPEG
PNG
TIFF
SVG
Matchbox
D-BUS
HAL
SQLite
curlHTTP
3.1Clipboard
SSL
5.3.1SystemSW
5.3.1Cert.mgnt
5.3.1libosso
X
LibstdC++
5.3.1Com-
pression
dpkg
apt
Freetype
Fontconfig
Sysvinit
5.3.1
Base
Files
Busybox
GNUCLibrary
CoreLibs
Core
Utils
5.3.1CoreDaemons
BlueZ
3.1Powermgnt
WLANsecurity
ALSA
Video4-
Linux
Bootloader
LinuxkernelincludingJFFS2,TCP/IP
InitFSin-
Cluding
uClibc
dsme
标记着黄颜色的构件通常只提供二进制程序(虽然一些子构件可能会提供源代码),其他的构件会附带有源代码。
然而一些特定的应用程序会提供源代码。
一些Maemo专有的构件如下所述。
Maemo连接控制子系统
Maemo连接控制体系的构件包括:
●Maemo连接控制UI—连接控制的用户接口部分。
这些包括连接管理器,控制面板小程序和一些不同的对话框。
●Maemo连接控制守护进程(ICd)—和ICd一起运行的LibConICAPI操纵着所有的互联网访问点(IAPs)。
IC守护进程控制着WLAN和蓝牙连接。
●OBEX封装—OBEX服务的接口。
这个库的主要目标用户是OBEXgnome-vfs模块。
●OpenOBEX—对象交换协议(OBEX)的开源实现。
可以从
●BlueZ蓝牙堆栈—实际的Linux蓝牙的实现。
可以从http:
//www.bluez.org看到更多的信息。
●BluezD-BUSAPI—Bluez通过D-BUS接受命令。
●WLAN连接控制守护进程—这个守护进程控制着WLAN的连接。
●WLAN设备驱动—无线网(IEEE802.11g)的设备驱动。
内核驱动由两个部分组成:
一个二进制部分(闭源)和一个开源封装,这个包装把二进制部分和Linux内核绑定在一起。
Maemo系统用户接口
系统UI由两个部分组成。
一个部分是系统UI自身,而另外一个部分由系统UI的插件程序组成。
●系统UI为系统UI插件提供了主应用程序,包含了插件加载和卸载的功能。
●系统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(默认)andsettingdirectories/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调用成为可能。
包含在子系统中的包有:
●Libalarm
●alarmd
Maemo帮助框架
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库初始化更加有效。
尽管它可以节省内存空间。
Sapwood
Sapwood为访问主题图像提供了服务器和客户端库。
服务器负责加载主题相关的图像,并且将它们发布给客户端。
Pixbuf引擎不会在应用程序之间共享位图,而Sapwood与Pixbuf引擎相比更加节省内存。
另外,Sapwood也会更快,因为它使用XServer来拼贴16位图像,然而pixbuf引擎会在客户端判断24/32位图像并且把它们转化到16位从而XServer可以blitting(按块处理)。
Hildon部件
Hildon组件在GTK+标准组件集之上还提供了很多GUI扩展。
这些包括了应用程序组件(例如HildonApp,HildonWindow以及HildonProgram),选择器(例如HildonCalenderPopup),编辑器(例如HildonRange),通知器(例如HildonBanner)等。
Hildon文件UI
这个包为访问文件系统提供了图形用户接口组件。
LibOSSO
LibOSSO是一个共享库,它包含了使得Maemo应用程序可以更好地集成在平台上的必需的和有帮助的服务。
系统软件
系统软件子系统为应用程序和用户提供了整个系统范围的服务。
这些服务包括了设备状态管理(dsm),模式控制(mce),电池管理(bme)和一些图形用户接口元素来管理这些服务的行为。
以下是关于这些组件更多的细节描述:
●设备状态管理:
负责管理设备的状态,包括关闭和启动。
另外,dsm还负责保持设备运行和工作。
这个可以通过检测关键进程的状态来实现,例如D-BUS,X11和窗口管理器。
最后,dsm还负责跟踪不活动状态,并且在此基础上初始化省电操作(例如关闭屏幕)。
●模式控制:
为控制各种设备模式提供接口,例如离线模式(禁用蓝牙和WLAN);
提供各种系统级的用户接口,例如设备锁、触摸屏和键盘锁、LED等。
●电池管理:
负责电池电压监测和识别,电池充电和充电器识别。
电源管理
电源管理(PM)框架考虑到了各种概念,包括dynamictick、操作系统空闲、时钟框架和DVFS。
PM框架可以分为两个独立的机制:
操作系统空闲和DVFS。
●操作系统空闲基于操作系统的调度器。
不论何时调度器没有任务执行,它就会调用空闲函数。
空闲函数之后会选择关闭全部或部分硬件从而节省电源。
省电的级别要根据使用的时钟和电压。
●DVFS允许在运行时按比例减小SoC的频率和电压来降低电流泄露,从而节省电源。
ARM和DSP处理器降频(从而降压)的根据处理器上的负载程序而不同。
操作系统空闲和DVFS两者是独立触发的。
DVFS的触发是基于所需处理的电源的增加或者减少,而操作系统空闲的触发是靠Linux调度器。
目前Linux驱动模型提供的待机和恢复功能还不能使用。
同样,内核级的电源管理也不能从用户空间得到引导。
剪贴板
在Maemo中,有很多X剪贴板和Gtk+的剪贴板改进使得:
●支持当应用程序所独有的剪贴板退出时保留剪贴板数据,
●在不同的应用程序的Gtk+文本视图之间复制和粘贴富文本数据。
●普遍提供了更好的用户体验;
使得应用程序开发人员可以更加容易做到当应用程序不支持剪贴板中的数据格式时让“粘贴”的菜单项变灰。
压缩
这个子系统为一般目的的数据压缩和解压提供了多个库和程序。
支持的压缩算法包括Lempel-Ziv(gzip),而该算法也被用为zip和PKZIP。
支持的压缩格式包括:
●zlib
●deflate
●gzip
ConIC
ConIC为操作和使用互联网访问点(IAP)和IAP连接提供了一个接口。
证书管理
Maemo平台提供了API来证书的存储和处理。
这样可以使得软件的每个部分可以访问到所有的证书,从而使得很多操作更易实现,例如,安装一个新的CA证书从而在所有相关的程序(如Web浏览器、e-mail、VPN和无线连接)中立即生效。
这样可以节省工作量和磁盘空间。
核心守护进程
守护进程用来执行一些特定任务的服务进程。
大多数的守护进程,像dbus-daemon,被分别描述从而这个子系统可以有多种多样的进程。
这部分的包包括:
●Sysklogd(系统消息日志)
基本文件
这个子系统会传递Debian系统的基本的文件系统层次,同时也会传递包含用户和组ID的用户数据库文件(/etc/passwd和/etc/group)原拷贝。
●base-files
●base-passwd
3.2内核
Maemo使用一个Linux2.6的操作系统内核。
Linux是一个开源的操作系统,它是由成千上万的志愿者和公司开发的,他们都在GNUGPL协议的基础上共享了他们的工作成果。
结构上Linux有一个整体的内核。
所有内核代码都在超级用户模式下运行。
Linux内核可以通过动态加载内核模块在运行时扩展。
还有很多设备驱动、文件系统以及网络协议模块的API。
开发人员可以增加新的内核模块。
Maemo内核是基于ARM内核分支并且可以由开发人员修改,再编译并且拷贝到闪存。
一些模块只有二进制程序,例如WLAN,那么如果开发人员改变了内核,这些模块的API应该保持不变。
3.3闪存分区
在基于Maemo的设备上有四个独立的闪存分区。
这些分区是:
●启动加载分区
●内核分区
●初始文件系统(在一个小的JFFS2分区)
●根文件系统分区(在一个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很大程度上基于和Debi