面向Tizen平台开发人员和制造商的白皮书除非另有注明,否则,本文中的内容(代码示例除外)基于CreativeCommonsAttribution3.
0获得许可,而本文中包含的所有代码示例都基于BSD-3条款获得许可.
有关详细信息,请参阅内容许可.
面向Tizen平台开发人员和制造商的白皮书1.
Tizen简介41.
1Tizen体系结构.
42.
获取源代码和生成内部版本72.
1获取源代码72.
2生成平台内部版本72.
3生成内核内部版本92.
4生成映像内部版本103.
TizenSystemLayer(系统层)113.
1Kernel和BSP113.
2System143.
2.
1SystemFramework(系统框架)143.
2.
2传感器框架.
153.
2图形和Window系统(OpenGL、XServer)173.
3Multimedia.
223.
3.
1编解码器.
223.
3.
2Camcorder(摄像机)(包括摄像头)233.
3.
3无线电253.
3.
4音频.
263.
4Connectivity283.
4.
1WLAN.
283.
4.
2蓝牙.
303.
4.
3NFC.
323.
5Telephony333.
6Security363.
6.
1访问控制(Smack)363.
6.
2证书管理.
373.
6.
3防病毒(CSR框架)393.
7Location414.
优化43AppendixA.
词汇表.
46目录除非另有注明,否则,本文中的内容(代码示例除外)基于CreativeCommonsAttribution3.
0获得许可,而本文中包含的所有代码示例都基于BSD-3条款获得许可.
有关详细信息,请参阅内容许可.
2|页面向Tizen平台开发人员和制造商的白皮书概述本文档是一个指南,面向构建基于Tizen的设备的Tizen平台开发人员和制造商.
本文内容基于Tizen2.
3Alpha内部测试版.
本文档提供有关如何在新硬件上引导Tizen以及创建基于Tizen操作系统的产品的信息.
本文通过详尽阐述Tizen体系结构、所需工具和开发环境设置,以及演示如何创建Tizen映像和执行跨不同功能领域所需的修改,详细地介绍了移植过程.
除非另有注明,否则,本文中的内容(代码示例除外)基于CreativeCommonsAttribution3.
0获得许可,而本文中包含的所有代码示例都基于BSD-3条款获得许可.
有关详细信息,请参阅内容许可.
3|页面向Tizen平台开发人员和制造商的白皮书1.
Tizen简介Tizen是一种基于标准的平台,它为开发用于多种设备类别的应用程序提供Web和本机API.
Tizen目前针对移动、可穿戴、电视、IVI和摄像头设备,并且计划在将来扩展到更多的设备类别.
下图阐释了Tizen体系结构.
图1.
Tizen体系结构ApplicationFramework(应用程序框架)ApplicationFramework提供应用程序管理,包括使用程序包名称、URI或MIME类型启动其他应用程序.
它还启动预定义的设备,例如系统拨号器应用程序.
ApplicationFramework向应用程序通知常见事件,例如内存不足、电池电量不足、屏幕方向变化和推送通知.
BaseBase模块包含基于Linux*的基本系统库,它提供数据库支持、国际化和XML分析等关键功能.
1.
1Tizen体系结构KernelCoreWebFrameworkW3C/HTML5DeviceAPIsWebUITouchCSS3WebGLWorker…VideoBTCallNFCNotiSystemInfo…WebRuntimeApplicationFrameworkGraphics&UIMultimediaWebMessagingLocationSecuritySystemBaseConnectivityTelephonyPIMLinuxKernel&DeviceDrivers除非另有注明,否则,本文中的内容(代码示例除外)基于CreativeCommonsAttribution3.
0获得许可,而本文中包含的所有代码示例都基于BSD-3条款获得许可.
有关详细信息,请参阅内容许可.
4|页面向Tizen平台开发人员和制造商的白皮书Connectivity(连接性)Connectivity模块由所有与网络和连接性相关的功能构成,例如3G、Wi-Fi、蓝牙、HTTP和NFC(近距离通信).
数据网络基于ConnMan(连接管理器),它提供基于3G和Wi-Fi的网络连接管理.
图形和UI就移动方面而言,图形和UI模块由系统图形和UI堆栈构成,它们称作"本机框架".
该模块在内部利用EFL(基本类库)来用于基于X11的窗口管理和电话指示器.
还通过EFL的基本框架提供用于流畅动画的专门的控制.
该本机框架具有不同的内置输入方法和OpenGLESAPI.
该模块提供能够在完整浏览器UI或专用WebRuntime(无浏览器窗口)内运行的基于WebKit的图形,全都基于Tizen自己的HTML5画布WebKitEFL实现方式.
以后的支持将涵盖针对UI的基于WebGL和Web的框架,例如jQueryMobile(有助于移植现有jQuery代码).
LocationLocation模块提供基于位置的服务(LBS),包括位置信息、地理编码、卫星信息和GPS状态.
它还提供来自不同定位来源的位置信息,这些位置来源包括GPS、WPS(Wi-Fi定位系统)、小区ID和传感器等.
MessagingMessaging模块提供SMS、MMS、电子邮件和IM功能.
Multimedia(多媒体)MultimediaFramework(多媒体框架)提供不同的多媒体功能.
它由播放器/流式传输框架、摄像头/记录框架、媒体内容框架和屏幕镜像框架构成.
PIM(个人信息管理)通过PIM模块,可以在设备上实现用户数据管理.
它使您能够管理日历、联系人和任务,并且检索与设备环境有关的数据(例如设置位置和缆线状态).
SecuritySecurity模块负责跨系统的安全部署.
它由支持平台安全性的功能构成,例如访问控制、证书管理和防病毒框架.
SystemSystem模块由系统和设备管理功能构成,包括:用于访问设备(例如传感器、显示器或振动器)的接口.
电源管理,例如LCD显示器背光变化和应用程序处理器休眠.
在USB、MMC、充电器和耳机插孔事件等情况下的设备监视和事件处理.
除非另有注明,否则,本文中的内容(代码示例除外)基于CreativeCommonsAttribution3.
0获得许可,而本文中包含的所有代码示例都基于BSD-3条款获得许可.
有关详细信息,请参阅内容许可.
5|页面向Tizen平台开发人员和制造商的白皮书系统升级.
移动设备管理.
TelephonyTelephony模块由与调制解调器进行通信的蜂窝功能构成:管理针对UMTS和CDMA的呼叫相关的和非呼叫相关的信息和服务.
管理针对UMTS和CDMA的数据包服务和网络状态信息.
管理针对UMTS和CDMA的SMS相关服务.
管理SIM文件、电话簿和安全性.
管理针对UMTS的SIM应用程序工具包服务.
WebWeb模块提供为低功率设备优化的TizenWebAPI的完整实现.
它包括WebKit,这是精心设计的一种布局引擎,可允许Web浏览器呈现网页.
它还为Web应用程序提供WebRuntime.
除非另有注明,否则,本文中的内容(代码示例除外)基于CreativeCommonsAttribution3.
0获得许可,而本文中包含的所有代码示例都基于BSD-3条款获得许可.
有关详细信息,请参阅内容许可.
6|页面向Tizen平台开发人员和制造商的白皮书2.
获取源代码和生成内部版本本章介绍如何检索源代码以及生成平台、内核和映像内部版本.
要获取源代码:1.
从TizenGerrit项目列表(https://review.
tizen.
org/gerrit/#/admin/projects)确认程序包名称.
还可以使用以下命令:$sshreview.
tizen.
orggerritls-projects2.
使用以下命令克隆Gerrit项目:$gitclone[-b]ssh://@review.
tizen.
org:29418/[]例如:$gitclonessh://@review.
tizen.
org:29418/platform/upstream/dbus要克隆所有项目,请阅读https://source.
tizen.
org/documentation/developer-guide/getting-started-guide/cloning-tizen-source中的说明.
要生成平台内部版本:1.
要获取访问权限,请在https://www.
tizen.
org/user/register处注册一个帐户.
2.
安装下图中定义的Tizen平台开发工作流程执行.
2.
1获取源代码2.
2生成平台内部版本除非另有注明,否则,本文中的内容(代码示例除外)基于CreativeCommonsAttribution3.
0获得许可,而本文中包含的所有代码示例都基于BSD-3条款获得许可.
有关详细信息,请参阅内容许可.
7|页面向Tizen平台开发人员和制造商的白皮书图2.
Tizen平台开发工作流程GitGit是一种特别强大、灵活和低系统开销的版本控制系统,能够实现高效、强健的协作开发.
有关详细信息,请参阅:Git社区手册:http://git-scm.
com/documentationGitWiki:https://git.
wiki.
kernel.
org/index.
php/Main_PageGit手册页:https://git.
wiki.
kernel.
org/index.
php/Main_PageGerritGerrit是一种基于Web的代码检查系统,有助于使用Git版本控制系统进行针对项目的在线代码检查.
通过在并排显示中显示更改和支持行内注释,Gerrit可以优化代码检查过程,增强检查质量.
此外,通过允许任何授权用户将更改提交到中央Git存储库,Gerrit简化了基于Git的项目的维护,实现了对Git的更加集中的使用.
有关详细信息,请参阅:Gerrit文档页:https://review.
tizen.
org/gerrit/Documentation/index.
html除非另有注明,否则,本文中的内容(代码示例除外)基于CreativeCommonsAttribution3.
0获得许可,而本文中包含的所有代码示例都基于BSD-3条款获得许可.
有关详细信息,请参阅内容许可.
8|页面向Tizen平台开发人员和制造商的白皮书OBS开放式生成服务(OBS)是一种开放且完备的分发开发平台,它为开发人员提供基础结构,以便为不同硬件体系结构上的不同Linux分发轻松地创建和发布开放源软件.
此外,OBS提供协作性环境,使开发人员团队能够生成和提交对其他项目的更改.
有关详细信息,请参阅:开放式生成服务:http://openbuildservice.
org/OBS门户:http://en.
opensuse.
org/openSUSE:Build_ServiceGBSTizen开发人员使用git和gbs命令行工具来进行其大多数工作.
使用Git生成系统(GBS),您可以在本地生成您的git存储库.
有关详细信息,请参阅:使用GBS在本地生成:https://source.
tizen.
org/documentation/developer-guide/getting-started-guide/building-packages-locally-gbsMICMICImageCreator可用于创建可下载的二进制映像:还可以使用MIC在您的本地创建自定义二进制映像.
有关详细信息,请参阅:使用MIC创建Tizen映像:https://source.
tizen.
org/documentation/developer-guide/getting-started-guide/creating-tizen-images-mic要生成TizenARM内核内部版本:1.
如果目标和您的主机不同(例如x86),则在您的系统上安装并且设置交叉编译工具.
您可以使用其Linarotoolchain二进制文件或Ubuntu程序包对您的环境进行设置,以便用于交叉编译工具(例如,exportCROSS_COMPILE=.
.
.
.
).
2.
为RD-PQ设置.
config文件:$makeARCH=armtrats2_defconfig3.
在根据您的需要重新配置后(使用makeARCH=armmenuconfig命令)或者使用原有配置(无需修改)后,生成内核:$makeARCH=armuImage4.
构建和生成Kernel模块映像.
注意:如果需要,首先执行sudo以便让sudo-n在脚本中起作用.
$sudols$scripts/mkmodimg.
sh2.
3生成内核内部版本除非另有注明,否则,本文中的内容(代码示例除外)基于CreativeCommonsAttribution3.
0获得许可,而本文中包含的所有代码示例都基于BSD-3条款获得许可.
有关详细信息,请参阅内容许可.
9|页面向Tizen平台开发人员和制造商的白皮书5.
通过lthor将映像发送到目标:$lthorarch/arm/boot/uImageusr/tmp-mod/modules.
img或者从以下两个文件生成您自己的tar文件:$tarcfFILENAME_YOU_WANT.
tar-Carch/arm/bootuImage-Cusr/tmp-modmodules.
img生成二进制映像:1.
将平台程序包安装到临时根系统目录中.
2.
运行自定义脚本.
3.
使用分区信息创建文件系统.
Tizen2.
x要定义如何为配置文件生成二进制映像,可使用2个特殊的gerrit项目:tools/package-groups(https://review.
tizen.
org/gerrit/gitwebp=tools/package-groups.
git)定义程序包组.
查看patterns目录:每个*.
yaml文件都定义程序包组.
tools/image-configurations(https://review.
tizen.
org/gerrit/gitwebp=tools/image-configurations.
git)定义如何构建二进制映像.
可以定义多个配置(configurations.
yaml):-具有大写字母的目录存储每个二进制配置.
-"custom/part"承载分区.
-"custom/scripts"在安装所有平台程序包后承载脚本.
每个二进制配置都可以承载不同的程序包组.
使用"@"描述组.
2.
4生成映像内部版本除非另有注明,否则,本文中的内容(代码示例除外)基于CreativeCommonsAttribution3.
0获得许可,而本文中包含的所有代码示例都基于BSD-3条款获得许可.
有关详细信息,请参阅内容许可.
10|页面向Tizen平台开发人员和制造商的白皮书3.
TizenSystemLayer(系统层)本章详细介绍TizenSystemLayer.
内核是驱动平台的操作系统.
在本文中,"内核"指的是为Tizen平台自定义的开放源Linux内核.
下面几节概要介绍Tizen内核配置以及用于自定义内核的环境.
内核配置下表定义了要用于Tizen平台的推荐的内核配置.
表1.
内核配置配置说明CONFIG_CGROUPS/CONFIG_CGROUP_MEM_RES_CTRL控制组CONFIG_CMA/CONFIG_DMA_CMA连续内存分配器CONFIG_DMA_SHARED_BUFFER在dma设备中共享缓冲区CONFIG_DRM指示呈现管理器图形基础结构CONFIG_VIDEO_V4L2_SUBDEV_API用于多媒体API的Linux的视频CONFIG_USB_GADGETUSBgadget支持CONFIG_USB_G_SLPTizenusb_mode(sdb,ether)组合驱动程序CONFIG_ANDROID_LOGGERDlog日志驱动程序CONFIG_EXT4_FSExt4文件系统CONFIG_SECURITY_SMACKSMACK安全访问控制Tizen文件系统Tizen采用ext4文件系统作为默认的根文件系统.
与Android不同,Tizen不使用ramdisk和initramfs.
该VFAT文件系统可用于外部SD卡.
3.
1Kernel和BSP除非另有注明,否则,本文中的内容(代码示例除外)基于CreativeCommonsAttribution3.
0获得许可,而本文中包含的所有代码示例都基于BSD-3条款获得许可.
有关详细信息,请参阅内容许可.
11|页面向Tizen平台开发人员和制造商的白皮书Tizen分区布局下图阐释了Tizen分区布局的一个示例.
产品供应商可根据需要修改其设备的顺序或分区布局.
图3.
Tizen分区布局分区1:CSA(配置保存区域)包含作为调制解调器的校准值的非易失性数据.
分区2:根包含内核映像、调制解调器映像和DeviceDriver模块.
分区3:平台包含根文件系统、基本的Tizen框架以及某些一般的Linux实用工具.
分区4:数据包含应用程序、应用程序库和平台数据库.
分区5:CSC(客户软件配置)存储客户的软件配置.
分区6:UMS(USB大量存储)包含默认(媒体)内容.
除非另有注明,否则,本文中的内容(代码示例除外)基于CreativeCommonsAttribution3.
0获得许可,而本文中包含的所有代码示例都基于BSD-3条款获得许可.
有关详细信息,请参阅内容许可.
12|页面向Tizen平台开发人员和制造商的白皮书Tizen中的文件系统体系结构标准每个分区都具有下图中所阐释的体系结构.
图4.
文件系统体系结构/usr/apps:内部应用程序/opt/usr/apps(/opt/apps):第三方和可下载应用程序/opt/dbspace:针对Tizen框架的数据库文件/opt/storage/sdcard:外部sdcard装入点/smack:用于加载和存储smack规则的SMACK文件系统Tizen中的内存管理Tizen使用cgroup维护进程及其资源.
如果某一进程从后台移到前台,则进程组将移入"前台"cgroup.
根据前台组策略,将提升该流程的优先级,以便降低在内存不足的情况下终止该进程的可能性.
如果系统内存达到了内存不足阈值,则内核将会通知资源.
资源将回收后台组以便获取足够的可用内存.
如果资源未能获取可用内存,它会尝试终止具有最高分数("oom_score_adj"x"进程的内存大小")的放弃的进程.
除非另有注明,否则,本文中的内容(代码示例除外)基于CreativeCommonsAttribution3.
0获得许可,而本文中包含的所有代码示例都基于BSD-3条款获得许可.
有关详细信息,请参阅内容许可.
13|页面向Tizen平台开发人员和制造商的白皮书本节介绍系统和传感器框架.
3.
2.
1SystemFramework(系统框架)下图阐释SystemFramework.
图5.
SystemFrameworkSystemserver(系统服务器)SystemServer处理系统事件,例如内存不足事件以及电池电量水平和即插即用设备状态中的变化,还可以管理进程"看门狗"功能.
Powermanager(电源管理器)PowerManager是用于管理系统电源的会话守护程序.
它提供条件状态转换.
Tizen电源管理器功能控制显示器背光变化和设备休眠.
3.
2System除非另有注明,否则,本文中的内容(代码示例除外)基于CreativeCommonsAttribution3.
0获得许可,而本文中包含的所有代码示例都基于BSD-3条款获得许可.
有关详细信息,请参阅内容许可.
14|页面向Tizen平台开发人员和制造商的白皮书Devicemanager(设备管理器)Devicemanager提供用于控制所有设备的接口,例如LCD背光变化和应用程序处理器休眠.
USBmanager(USB管理器)USBmanager对USB配置进行设置以便连接到PC,以及监控外部USB主机设备,例如键盘、鼠标、摄像头、USB存储和USB打印机.
移植OALInterface(OAL接口)(必需)SystemFramework具有针对应用程序的libdeviced库,以及作为OAL(OEM适配层)的包装程序库的libdevice-node库.
OAL接口通过根据设备类型组合OALAPI,为设备访问内核提供了一个轻松的方法.
OALAPI支持供应商指定的所有设备.
OEM开发人员必须实现在devman_plugin_intf.
h中定义的API并且将其库编译为libslp_devman_plugin.
so.
Devman库使用sysfs用于与DeviceDriver和Kernel的接口.
sysfs是Linux2.
6或更高版本提供的虚拟文件系统.
要配置OALInterface:1.
将作为libslp_devman_plugin.
so的OEM库安装到/usr/lib.
2.
OALAPI定义位于devman_plugin_intf.
h头文件中,该文件位于libdevice-node中.
SystemOAL内核配置(必需)电源管理支持、CPU空闲PM支持、CPUDVFS、CPU热插拔、使用动态热插拔systemdsystemd是用于执行用户空间的第一个进程.
它管理引导顺序,并且启动设备、资源和其他守护程序.
Tizen的单元文件位于/usr/lib/systemd/system和/usr/lib/systemd/user中.
您必须在那里添加您自己的单元文件.
您必须在systemd的内核配置中启用"cgroup"和"autofs"选项.
systemd还依赖于dbus和一些库,例如libnotify和libudev.
有关系统的更详细信息,请参阅systemdwiki(http://www.
freedesktop.
org/wiki/Software/systemd/).
3.
2.
2传感器框架传感器框架向应用程序和系统组件提供传感器事件.
传感器事件是来自基于传感器或虚拟传感器的硬件的测量信息.
除非另有注明,否则,本文中的内容(代码示例除外)基于CreativeCommonsAttribution3.
0获得许可,而本文中包含的所有代码示例都基于BSD-3条款获得许可.
有关详细信息,请参阅内容许可.
15|页面向Tizen平台开发人员和制造商的白皮书Tizen支持针对以下传感器的单独的插件框架:Accelerometersensor(加速计传感器)Gyroscopesensor(回转器传感器)Proximitysensor(近距离传感器)Geomagneticsensor(地磁传感器)Lightsensor(光传感器)下图阐释传感器框架.
图6.
传感器框架移植OALInterface(必需)传感器OAL包含处理器插件、筛选器插件和传感器插件.
以Accelerometersensor(accel)为例阐释各种插件原型的实现方式.
您可以在git中使用常见的传感器插件(处理器、筛选器、传感器):sensor-framework/sensor-plugin-source.
处理器插件:处理数据或从筛选器或传感器数据生成事件的主动组件(具有线程)传感器插件:从内核节点获取原始数据的被动组件筛选器插件:将传感器原始数据转换为其他类型的数据的被动组件.
除非另有注明,否则,本文中的内容(代码示例除外)基于CreativeCommonsAttribution3.
0获得许可,而本文中包含的所有代码示例都基于BSD-3条款获得许可.
有关详细信息,请参阅内容许可.
16|页面向Tizen平台开发人员和制造商的白皮书配置传感器框架加载sf_sensor.
conf、sf_filter.
conf、sf_processor.
conf和sf_datastream.
conf配置文件以便用于加载传感器、筛选器和处理器插件.
所有配置文件都包括在传感器框架程序包中.
要向库中添加传感器API和枚举,请添加用于您的传感器的API并且为事件/数据类型分配您的专用编号.
有关传感器框架的更详细信息,请参阅Tizenwiki网站(https://wiki.
tizen.
org/wiki/Porting_Guide#Description_2)的"传感器框架"部分.
下图阐释了TizenUI和图形模块体系结构.
图7.
UI和图形模块体系结构图形Tizen提供高性能的3D图形作为UI和图形模块的组件.
存在针对3D应用程序(例如3D游戏)的硬件加速OpenGLES(开放图形库嵌入系统)和EGL(嵌入系统图形库)功能.
OpenGLES是以手持和嵌入设备为目标的用于高级3D图形的应用程序编程接口(API).
为了克服设备约束,例如受限的处理功能和内存可用性,它提供了OpenGL中的一部分功能.
添加了嵌入系统特定的功能以便增强呈现效率,例如向来自OpenGLES2.
0的着色语言添加了精度限定器.
3.
2图形和Window系统(OpenGL、XServer)除非另有注明,否则,本文中的内容(代码示例除外)基于CreativeCommonsAttribution3.
0获得许可,而本文中包含的所有代码示例都基于BSD-3条款获得许可.
有关详细信息,请参阅内容许可.
17|页面向Tizen平台开发人员和制造商的白皮书OpenGL3D图形库下图阐释了用于OpenGL的Tizen高性能3D图形库的接口.
图8.
3D图形库接口移植要求3D图形供应商必须满意以下移植要求以便Tizen正常行使功能:OpenGLESo要求的OpenGLES版本:1.
1和2.
0o驱动程序还必须支持对OpenGLES1.
1的以下扩展:GL_OES_framebuffer_objectGL_OES_blend_subtractGL_OES_blend_func_separateGL_OES_matrix_paletteGL_OES_draw_textureGL_OES_texture_cube_mapGL_OES_query_matrixGL_OES_point_size_arrayo驱动程序还必须支持对OpenGLES2.
0的以下扩展:GL_OES_EGL_imageGL_EXT_texture_format_BGRA8888GL_OES_get_program_binaryGL_OES_texture_npotGL_OES_fragment_precision_highGL_OES_rgb8_rgba8GL_OES_depth24GL_OES_vertex_half_floatGL_OES_texture_floatGL_OES_compressed_ETC1_RGB8_textureGL_OES_packed_depth_stencilGL_OES_standard_derivatives除非另有注明,否则,本文中的内容(代码示例除外)基于CreativeCommonsAttribution3.
0获得许可,而本文中包含的所有代码示例都基于BSD-3条款获得许可.
有关详细信息,请参阅内容许可.
18|页面向Tizen平台开发人员和制造商的白皮书GL_OES_element_index_uintGL_OES_mapbufferGL_EXT_multi_draw_arraysGL_OES_vertex_array_objectGL_IMG_texture_compression_pvrtcGL_OES_read_formatGL_EXT_multisampled_render_to_textureo供应商需要提供工具以便在Linux上生成二进制着色器.
EGLoEGL所需的最低版本为1.
4.
EGL必须支持DRI2.
o常用3D应用程序使用基于DRI2的EGL.
o3D组合窗口管理器要求基于DRI2的EGL.
o驱动程序必须支持对EGL1.
4的以下扩展:GL_KHR_imageEGL_KHR_image_baseEGL_KHR_gl_texture_2D_imageEGL_KHR_gl_texture_cubemap_imageEGL_KHR_gl_renderbuffer_imageEGL_KHR_image_pixmapEGL_KHR_lock_surfaceEGL_KHR_fence_syncEGL_KHR_reusable_syncEGL_IMG_context_priorityFBDEVbasedEGL(可选)oFBDEV必须基于三缓冲区机制.
必须基于翻页功能而不是复制缓冲区对其进行操作.
o为了避免撕裂问题,应使用LCDvsync信号进行协调.
通常,复合器使用eglSwapInterval()API启用vsync.
基于DRI2的EGL(必需)o非常重要!
o必须基于X11DRI2协议实现EGL.
oEGL必须支持来自pixmap的纹理(使用EGL_KHR_image_pixmap和GL_OES_EGL_image).
GPU同步APIo为避免闪烁,需要等待缓冲区复制命令完成的内部EGLAPI.
标头和库名称o必须根据KhronosAPI实现者指南在驱动程序内提供头文件和库.
注意:您可能需要实现一些内存管理技术,以便在您的CPU和图形处理单元之间共享内存.
除非另有注明,否则,本文中的内容(代码示例除外)基于CreativeCommonsAttribution3.
0获得许可,而本文中包含的所有代码示例都基于BSD-3条款获得许可.
有关详细信息,请参阅内容许可.
19|页面向Tizen平台开发人员和制造商的白皮书Window系统(Xserver)下图阐释了XServer的主要部分以及Linuxkernel中的相反部分.
图9.
XServer组件与其他Unix/Linux系统相似,Tizen包含基于XServer的窗口系统.
XWindow(X窗口)系统提供用于操作资源(例如窗口、像素图和gc)的界面.
X客户端将请求发送到X服务器以便绘制内容或操作窗口.
X服务器接受客户端请求并且返回答复.
此外,在来自设备的输入事件挂起时,或者在X服务器遇到X客户端感兴趣的事件(例如配置事件或公开事件)时,X服务器将向客户端发送X事件.
Tizen使用X.
org实现Xserver,这是XWindow系统(http://www.
x.
org/)的开放源实现方式.
X.
orgserver可以划分为两个部分:DIX层是执行独立于设备的任务的独立于设备的层.
DDX层是执行依赖于设备的任务的依赖于设备的层.
为使XWindow系统能够在设备上工作,您必须在DDX层中移植X输入/视频驱动程序.
X输入驱动程序有2种X输入驱动程序:XEvdevdriver(XEvdev驱动程序)和XEvdev-multitouchdriver(XEvdev-multitouch驱动程序).
每种驱动程序都从各输入设备节点读取输入事件流,生成X内部事件,并且将这些事件放置于X服务器的内部事件队列中.
为执行此操作,X输入驱动程序主要使用在X服务器内的xf86DDX层上实现的接口.
除非另有注明,否则,本文中的内容(代码示例除外)基于CreativeCommonsAttribution3.
0获得许可,而本文中包含的所有代码示例都基于BSD-3条款获得许可.
有关详细信息,请参阅内容许可.
20|页面向Tizen平台开发人员和制造商的白皮书Evdevdriver:该驱动程序解释来自内核Evdevsubsystem(Evdev子系统)的事件,以便用于键(键盘)设备、鼠标设备或触摸板等设备.
注意:基本上,可以在不进行任何修改的情况下使用该驱动程序.
有关要为设备实现的数据结构和基本功能的信息,请参阅http://www.
x.
org/wiki/Development/Documentation/XorgInputHOWTO/.
Evdev-multitouch驱动程序:该驱动程序解释来自内核Evdevsubsystem的事件,以便用于触摸屏设备.
它支持2种类型的MT协议:oMT协议A(包括跟踪ID)oMT协议B注意:基本上,如果设备内核支持MT协议B,则可以使用该驱动程序.
您可以通过修改源代码支持旧式的单触点协议.
建议使用MT协议B.
要支持新的触摸协议,请执行以下操作之一:o在驱动程序内为新的触摸协议实现一些内容.
o克隆evdevmulti-touchdriver并且在克隆中实现新的触摸协议.
o从新协议转换到现有协议,evdevmulti-touchdriver默认支持此转换.
X输入驱动程序配置:"ServerFlags"之下的以下选项是必不可少的:oAllowEmptyInput:"true"意味着启动X服务器且没有任何键盘/鼠标驱动程序.
oAutoAddDevices:"false"意味着不支持热插拔输入设备.
oAutoEnableDevices:"true"意味着"DevicePresenceNotify"事件默认发送给所有X客户端.
有关X配置的更详细信息,请参阅http://www.
x.
org/releases/current/doc/man/man5/xorg.
conf.
5.
xhtml.
通过应用和修改配置文件(例如xorg.
conf或xorg.
conf.
d目录下的文件),您可以应用可选功能.
除非另有注明,否则,本文中的内容(代码示例除外)基于CreativeCommonsAttribution3.
0获得许可,而本文中包含的所有代码示例都基于BSD-3条款获得许可.
有关详细信息,请参阅内容许可.
21|页面向Tizen平台开发人员和制造商的白皮书X视频驱动程序X视频驱动程序是一个驱动程序库,包含支持xf86DDX层的实现,以便在屏幕上显示内容:DriverModule(驱动程序模块)o针对xf86DDX的DriverModule的实现.
ModeSetting(模式设置)o使设备在其上显示图像的实现.
o内核可以支持模式设置(例如,Drm模式设置).
EXAo针对图形加速体系结构的实现.
内存分配和附加绘制基元.
DRI2o针对DRI2(直接呈现基础结构版本2)的实现.
o对于图形加速,必须通过全局内存管理分配和共享图形内存.
XVoXFree86提供X视频扩展(XV),这允许客户端将视频视作任何其他基元并且使视频处于可绘制模式.
默认情况下,该扩展不会将任何视频适配器报告为可用,因为DDX层尚未初始化.
移植X视频驱动程序X视频驱动程序必须实现以下驱动程序模块和扩展,并且在X服务器中使用xf86DDX和X扩展提供的接口.
在http://www.
x.
org/releases/X11R7.
6/doc/xorg-server/DESIGN.
txt中描述了所有步骤.
本节介绍MultimediaFramework的各个组件.
3.
3.
1编解码器TizenMultimediaFramework提供基于Gst-OpenMaxILCodecplug-in(Gst-OpenMaxIL编解码器插件)的HW编解码器.
Gst-openmaxIL编解码器插件是允许与OpenMAXIL组件进行通信的GStreamer插件程序包.
3.
3Multimedia除非另有注明,否则,本文中的内容(代码示例除外)基于CreativeCommonsAttribution3.
0获得许可,而本文中包含的所有代码示例都基于BSD-3条款获得许可.
有关详细信息,请参阅内容许可.
22|页面向Tizen平台开发人员和制造商的白皮书图10.
MultimediaFramework中的编解码器移植OALInterfaceGst-openmaxIL编解码器插件用作其他GStreamer插件.
有关详细信息,请参阅http://www.
freedesktop.
org/wiki/GstOpenMAX.
参考有关OpenMAXIL组件的详细信息,请参阅:http://www.
khronos.
org/openmax/il/3.
3.
2Camcorder(摄像机)(包括摄像头)多媒体Camcorder框架控制GStreamer的摄像头插件,以便捕获来自设备的摄像头数据.
除非另有注明,否则,本文中的内容(代码示例除外)基于CreativeCommonsAttribution3.
0获得许可,而本文中包含的所有代码示例都基于BSD-3条款获得许可.
有关详细信息,请参阅内容许可.
23|页面向Tizen平台开发人员和制造商的白皮书图11.
MultimediaFramework中的摄像头请注意,对于不同的芯片集,控制摄像头设备的内核接口可能不同,因此,必须针对各芯片集实现摄像头插件.
每个配置文件都包含它自己的依赖于硬件的特定信息.
针对GStreamer的摄像头源插件o从摄像头设备获取摄像头数据(预览图像或捕获的图像)o继承"GstPushSrc"用于多媒体Camcorder框架的配置文件ommfw_camcorder.
ini:Camcorder设置文件.
ommfw_camcorder_dev_video_pri.
ini:该文件包含高分辨率后摄像头的设置.
ommfw_camcorder_dev_video_sec.
ini:该文件包含低分辨率前摄像头的设置.
移植OALInterfaceGStreamer摄像头插件:因为对于不同的芯片集,控制摄像头设备的内核接口可能不同,所以,必须针对各芯片集实现摄像头插件.
要开发新插件,请参阅GSteamer插件开发指南(http://gstreamer.
freedesktop.
org/data/doc/gstreamer/head/pwg/html/index.
html).
摄像头的主要功能是由GStreamer摄像头控制接口和信号回调提供的,Tizen已添加了它们.
摄像头插件必须支持它们(gst-plugins-base0.
10/gst-libs/gst/interfaces/cameracontrol.
h接口和信号回调:"静止捕获").
除非另有注明,否则,本文中的内容(代码示例除外)基于CreativeCommonsAttribution3.
0获得许可,而本文中包含的所有代码示例都基于BSD-3条款获得许可.
有关详细信息,请参阅内容许可.
24|页面向Tizen平台开发人员和制造商的白皮书想要实现摄像头源插件的任何第三方开发人员都必须从GstPushSrc派生它.
参考有关所有GStreamer文档,请参阅:http://gstreamer.
freedesktop.
org/documentation/要开发GStreamer插件,请参阅:http://gstreamer.
freedesktop.
org/data/doc/gstreamer/head/pwg/html/index.
html3.
3.
3无线电MultimediaFramework的收音机接口部分支持API以便使用LinuxV4L2接口实现以下FM收音机功能:调频获取和设置频率扫描所有可用频率向上搜索和向下搜索获取频率信号图12.
MultimediaFramework中的收音机移植OALInterface针对FM收音机的OALInterface是Linux内核V4L2接口.
该收音机模块直接使用V4L2ioctls执行不同的收音机硬件配置.
除非另有注明,否则,本文中的内容(代码示例除外)基于CreativeCommonsAttribution3.
0获得许可,而本文中包含的所有代码示例都基于BSD-3条款获得许可.
有关详细信息,请参阅内容许可.
25|页面向Tizen平台开发人员和制造商的白皮书参考V4L2规范:http://v4l2spec.
bytesex.
org/spec-single/v4l2.
html3.
3.
4音频下图阐释MultimediaFramework的音频组件.
图13.
MultimediaFramework中的音频AvsystemoAvsystem是一个本机Tizen组件,它提供用于在上层的层中处理流和声音路径的API.
PulseAudiooPulseAudio是声音服务器,它接受来自一个或多个源的声音输入并且将其重定向到一个或多个接收器中.
asound.
confo用于附加ALSADAI(数字音频接口)(例如AIF1和AIF2)的配置文件.
除非另有注明,否则,本文中的内容(代码示例除外)基于CreativeCommonsAttribution3.
0获得许可,而本文中包含的所有代码示例都基于BSD-3条款获得许可.
有关详细信息,请参阅内容许可.
26|页面向Tizen平台开发人员和制造商的白皮书移植OALInterfacePulseAudio:Tizen中的PulseAudio不支持udev.
PulseAudio必须以系统模式启动.
为支持多种设备,某些配置文件已从PulseAudio隔离到mmfw-sysconf.
有关详细信息,请参阅下面的配置详细信息.
不要更改/etc/pulse/system.
pa中的默认接收器.
某些模块使用该默认接收器.
如果更改了该默认接收器,播放声音会遇到问题:load-modulemodule-remap-sinksink_name=mono_alsamaster=alsa_output.
0.
analog-stereochannels=1asound.
conf:名称AIF2和AIF3不得更改.
/etc/asound.
conf依赖于硬件.
有关更详细信息,请参阅下面的配置详细信息.
配置为支持多种设备,某些配置文件已从PulseAudio隔离到mmfw-sysconf.
PulseAudio具有以下配置文件:/etc/pulse/client.
conf/etc/pulse/daemon.
conf/etc/pulse/default.
pa/etc/pulse/system.
pa/usr/share/pulseaudio/alsa-mixer/profile-sets/default.
conf此外,还有几个配置文件.
目前,这几个配置文件没有太大影响,可根据需要进行修改.
ousr/share/pulseaudio/alsa-mixer/profile-sets/ousr/share/pulseaudio/alsa-mixer-paths/参考PulseAudio:http://www.
freedesktop.
org/wiki/Software/PulseAudioALSAhttp://www.
alsa-project.
org/除非另有注明,否则,本文中的内容(代码示例除外)基于CreativeCommonsAttribution3.
0获得许可,而本文中包含的所有代码示例都基于BSD-3条款获得许可.
有关详细信息,请参阅内容许可.
27|页面向Tizen平台开发人员和制造商的白皮书本节介绍Connectivity模块的各个组件.
3.
4.
1WLAN主要WLAN功能是:WLAN(802.
11b/g/n)WPSPBCEAP(AKA、SIM、PEAP、TTLS)下图阐释了TizenWLAN体系结构.
图14.
WLAN体系结构WLAN体系结构集中处于Linux无线(IEEE-802.
11)子系统上.
Linux无线SW堆栈定义在Tizen中需要使用的WLANHW适配SW接口.
连接管理器(ConnMan)是用于管理在Linux操作系统上运行的嵌入设备内的Internet连接的守护程序.
3.
4Connectivity除非另有注明,否则,本文中的内容(代码示例除外)基于CreativeCommonsAttribution3.
0获得许可,而本文中包含的所有代码示例都基于BSD-3条款获得许可.
有关详细信息,请参阅内容许可.
28|页面向Tizen平台开发人员和制造商的白皮书WPA客户端(wpa_supplicant)提供对WPA和WPA2(IEEE802.
11i/RSN)的支持.
该客户端是在客户端工作站中使用的IEEE802.
1X/WPA组件.
移植OALInterface该WLAN驱动程序插件是特定于Wi-FiChipset(Wi-Fi芯片集)的.
Wi-FiChipset固件和工具文件必须复制到WLAN驱动程序插件目录中,并且必须在测试Wi-Fi功能前生成和安装.
Wi-Fi驱动程序必须创建/opt/etc/.
mac.
info文件,该文件具有设备的MAC地址.
WLAN驱动程序插件包含称作wlan.
sh(/usr/bin/wlan.
sh)的文件,该文件用于加载或卸载Wi-Fi驱动程序固件.
所有其他Wi-Fi相关的功能均由ConnMandaemon(ConnMan守护程序)处理.
参考连接管理器(ConnMan)项目网站:http://connman.
net/Linux无线(IEEE-802.
11)子系统:http://linuxwireless.
org/有关LinuxWPA/WPA2/IEEE802.
1X客户端的信息:http://hostap.
epitest.
fi/wpa_supplicant/最新ConnMan版本:http://git.
kernel.
org/p=network/connman/connman.
git;a=summaryWLAN驱动程序插件git路径:adaptation/devices/wlandrv-plugin-xxx参考内核配置如果驱动程序支持cfg802.
11配置API,必须启用以下选项:CONFIG_CFG80211CONFIG_LIB80211CONFIG_MAC80211(如果驱动程序支持softMAC功能,则启用此标志.
)如果驱动程序支持无线扩展API,则必须启用以下选项:CONFIG_WIRELESS_EXT=yCONFIG_WEXT_CORE=yCONFIG_WEXT_PROC=yCONFIG_WEXT_PRIV=yCONFIG_WEXT_SPY=yCONFIG_WIRELESS_EXT_SYSFS=y除非另有注明,否则,本文中的内容(代码示例除外)基于CreativeCommonsAttribution3.
0获得许可,而本文中包含的所有代码示例都基于BSD-3条款获得许可.
有关详细信息,请参阅内容许可.
29|页面向Tizen平台开发人员和制造商的白皮书3.
4.
2蓝牙Tizen使用开放源蓝牙组件,例如Bluez和Obexd.
Bluez和Obexd以守护程序的形式运行,并且应用程序使用蓝牙框架接口库通过D-Bus接口访问Bluez或Obexd.
图15.
蓝牙体系结构支持的功能:GATT、FTP、OPP、MAP、PBAP、A2DP、AVRCP、HSP/HFP、RFCOMM、HID、HDP和PAN应用程序定义:为用户提供对话框.
控制BlueZ/ObexD/PulseAudio收集程序.
蓝牙低能耗功能是在bluez&bluetooth-frwk中实现的.
但是,没有与BLE功能有关的SDKAPI.
目前计划是在Tizen3.
0版中包括它们.
移植OALInterface以下OAL脚本在BT堆栈开始和结束序列期间运行.
这些脚本调用BT芯片特定的(例如Broadcom)脚本,芯片集供应商提供这些脚本以便执行芯片特定的配置.
这些脚本连同bluetooth-dev-tools一起提供.
在安装该程序包时,它会将这些脚本复制到/usr/etc/Bluetooth/下.
bt-stack-up.
sh:该脚本文件用于运行特定于硬件的脚本文件,以便开启或启动BT硬件以及后台进程,例如bluez和obexd.
bt-stack-down.
sh:该脚本文件用于运行特定于硬件的脚本文件,以便关闭或停止BT硬件以及后台进程,例如bluez和obexd.
bt-reset-env.
sh:该脚本文件用于通过运行bt-stack-down.
sh重置BT芯片以及执行资源清理.
除非另有注明,否则,本文中的内容(代码示例除外)基于CreativeCommonsAttribution3.
0获得许可,而本文中包含的所有代码示例都基于BSD-3条款获得许可.
有关详细信息,请参阅内容许可.
30|页面向Tizen平台开发人员和制造商的白皮书配置必须进行某些配置更改以便使特定的芯片集、脚本和其他配置信息(例如UART速度和UART终端(tty))能够针对该芯片集打开.
芯片集供应商必须提供所需更改.
以下设置是Broadcomm进行的BCM4330蓝牙芯片集的配置示例:hciattach对项目bluez/tools/hciattach.
c进行了修补,以便支持BCM4330芯片集特定的hciattach工具.
该服务以3000000的波特率将BTUARTHCI接口附加到BT堆栈.
它还负责在BCM4330上加载BT固件.
使用的蓝牙UART为/dev/ttySAC0使用的Broadcom固件为BCM4330B1_002.
001.
003.
0221.
0265.
hcd针对BCM4330B1的UART速度配置为3000000使用的bcmtool为bcmtool_4330b1.
bd_addr包含唯一蓝牙地址,这是在第一个蓝牙激活期间生成的要注册蓝牙设备:bcmtool_4330b1/dev/ttySAC0–FILE=BCM4330B1_002.
001.
003.
0221.
0265.
hcd–BAUD=3000000–ADDR=/csa/bluetooth/.
bd_addr–SETSCO=0,0,0,0,0,0,0,3,3,0–LP要使用UARTHCI将串行设备连接到针对broadcom设备的蓝牙堆栈:hciattach/dev/ttySAC0–S3000000bcm20353000000flow要运行蓝牙守护程序版本4.
101:bluetoothd要启动设备、设置设备名称和启用SSP模式:hciconfighci0uphciconfighci0name"Tizen"hciconfighci0sspmode1要开启蓝牙收音机:rfkillunblockbluetooth要关闭蓝牙收音机:rfkillblockbluetooth除非另有注明,否则,本文中的内容(代码示例除外)基于CreativeCommonsAttribution3.
0获得许可,而本文中包含的所有代码示例都基于BSD-3条款获得许可.
有关详细信息,请参阅内容许可.
31|页面向Tizen平台开发人员和制造商的白皮书3.
4.
3NFC下图阐释了NFC组件.
图16.
NFC体系结构NFC应用程序使用户能够读取和导入在NFC标记上写入的内容,以及在NFC标记中写入和保存数据.
在任何物理标记中写入或编辑标记信息时,NFCclient(NFC客户端)充当NFC应用程序和NFCmanager(NFC管理器)之间的接口.
NFCmanager是主接口,它实际上处理NFC物理标记、创建与标记的连接和检测标记.
它是用于控制NFC芯片集(例如nxppn544或lsi)的守护程序进程.
它提供标记读/写服务和基本的P2P通信服务.
它向客户端应用程序提供基本的API.
NFCplugin和DeviceDriver充当NFC芯片集和NFCManager之间的接口.
如果您是芯片供应商(例如nxp、Broadcom或lsi),则必须为TizenNFC框架提供NFC芯片集、DeviceDriver和NFCplugin.
有关可供参考的NFCplugin的实现方式,请转到Tizen公共代码网站并且下载adaptation/devices/nfc-plugin-nxp.
git.
要在TizenNFC框架中使用任何特定的NFC芯片集,必须在芯片供应商提供的NFCplugin中创建OALInterface.
移植OALInterfaceNFCplugin作为共享库实现并且它连接Tizennfc-manager和供应商NFC芯片.
NFCmanager在运行时从{library_path}/libnfc-plugin.
so加载libnfc-plugin.
so库.
任何供应商特定的插件都必须安装在相同路径中.
该插件必须使用预定义的OALAPI接口写入.
除非另有注明,否则,本文中的内容(代码示例除外)基于CreativeCommonsAttribution3.
0获得许可,而本文中包含的所有代码示例都基于BSD-3条款获得许可.
有关详细信息,请参阅内容许可.
32|页面向Tizen平台开发人员和制造商的白皮书在初始化过程中,nfc-manager加载libnfc-plugin.
so,搜索onloadAPI,并且使用接口结构实例作为映射所有OALInterface的参数调用它.
OAL/OEM接口是根据基本NFC芯片集实现的.
在完成映射后,NFCmanager与nfc-plugin交互,这将实现供应商特定的OALInterface.
nfc_oem_interface_s结构在nfc-plugin中导出.
使用此接口结构,nfc-manager在运行时与OALInterface进行通信.
有关可供参考的OALInterface的实现方式,请转到Tizen公共代码网站和下载adaptation/devices/nfc-plugin-nxp.
git,并且查看src/oem/oem_nxp.
c.
参考NFC技术规范本节介绍Telephony模块.
Telephony体系结构Telephony支持插件体系结构,它提供灵活性以便通过非常少的更改将不同类型的预定义插件包括在系统中.
3.
5Telephony除非另有注明,否则,本文中的内容(代码示例除外)基于CreativeCommonsAttribution3.
0获得许可,而本文中包含的所有代码示例都基于BSD-3条款获得许可.
有关详细信息,请参阅内容许可.
33|页面向Tizen平台开发人员和制造商的白皮书下图阐释了Telephony插件体系结构.
跨不同插件的函数调用执行TizenTelephony库(libtcore)API.
图17.
Telephony体系结构Telephony库Telephony提供2个库:TelephonyAPI(TAPI)库TAPI库(或简称为TAPI)是向应用程序提供的以便与TizenTelephony交互的一种标准接口.
核心Telephony库(或libtcore)核心Telephony库(或libtcore)为TizenTelephony提供API框架以便进行交互工作.
该libtcore提供API以便用于:o不同服务器组件(例如服务器、Communicator、HAL、插件和核心对象)的创建、破坏和维护o存储维护、队列机制和一般的实用工具oCMUX支持(创建、破坏和处理)oAT分析器除非另有注明,否则,本文中的内容(代码示例除外)基于CreativeCommonsAttribution3.
0获得许可,而本文中包含的所有代码示例都基于BSD-3条款获得许可.
有关详细信息,请参阅内容许可.
34|页面向Tizen平台开发人员和制造商的白皮书Telephony插件提供以下Telephony插件:Communicator插件o提供DBUSCommunicator以便用于TAPI和电话服务器之间的接口.
调制解调器插件o包含提供电话功能的核心功能单元.
o维护和管理电话状态.
o维护和管理与Telephony相关的数据库.
Modeminterfaceplug-in(调制解调器接口插件)o电话服务器和通信处理器之间的接口.
o定义硬件功能和使用情况的硬件特定的插件.
oModeminterfaceplug-in也称作"硬件抽象层"(HAL).
自由样式插件o提供与硬件无关的完全独立的功能(通信处理器).
o包括插件,例如程序包服务、存储和指示器.
移植OALInterfaceOEM供应商可以根据其需要在Telephony内移植每个可用插件.
不必移植所有插件以便支持某一特定硬件.
OEM需要专门实现调制解调器和Modeminterfaceplug-in以便支持其硬件.
任何Telephony模块都必须提供插件描述符结构(请参阅/libtcore/include/plugin.
h).
每个插件的描述符结构都必须命名为"plugin_define_desc".
服务器获取此符号的地址,以便提供对插件的控制以便执行其定义的功能.
基于插件的"优先级"定义不同其他Telephony插件中插件的优先级顺序.
所有Telephony插件都必须按以下顺序安装:调制解调器插件:/usr/lib/telephony/plugins/modems/其他插件:/usr/lib/telephony/plugins/除非另有注明,否则,本文中的内容(代码示例除外)基于CreativeCommonsAttribution3.
0获得许可,而本文中包含的所有代码示例都基于BSD-3条款获得许可.
有关详细信息,请参阅内容许可.
35|页面向Tizen平台开发人员和制造商的白皮书本节介绍Security模块.
3.
6.
1访问控制(Smack)下图阐释了Tizen安全模型.
图18.
安全模型为了实现安全模型,Tizen2.
3使用:任意访问控制(DAC):文件系统权限和访问控制列表(ACL)http://en.
wikipedia.
org/wiki/Discretionary_Access_Control具有内核LSMSmack的强制访问控制(MAC)http://en.
wikipedia.
org/wiki/Mandatory_access_controlTizen2.
3中的SMACKSmack支持2个主要安全要求:以应用程序颗粒度控制有权限的资源具有受控的共享的应用程序隔离3.
6Security除非另有注明,否则,本文中的内容(代码示例除外)基于CreativeCommonsAttribution3.
0获得许可,而本文中包含的所有代码示例都基于BSD-3条款获得许可.
有关详细信息,请参阅内容许可.
36|页面向Tizen平台开发人员和制造商的白皮书基于Smack的安全模型权限应用程序使用的服务必须控制调用方是否具有足够的权限来调用各API.
在Tizen2.
3中,此级别的访问控制是使用针对IPC机制的非常详细的Smack策略实现的.
换言之,权限由smack规则构成.
您可以在/usr/share/privilege-control/*中确认这一点.
o有关Tizen权限的概述,请参阅:https://developer.
tizen.
org/dev-guide/2.
2.
1/org.
tizen.
gettingstarted/html/tizen_overview/privilege.
htmo有关Tizen权限的列表,请参阅:https://www.
tizen.
org/ko/privilegelangredirect=1Manifest(清单)Web或本机应用程序开发人员必须在清单文件中描述他们要使用的权限.
此外,每个RPMpackage(RPM程序包)都必须具有一个清单文件,在该清单文件中,开发人员可以指定其应用程序必须在其中运行的访问控制域以及针对该应用程序的潜在的附加安全策略.
安装应用程序安装程序使用该清单文件的内容设置已安装应用程序或RPMpackage的安全上下文.
安装程序使用libprivilege-control组件处理Smack安全数据库.
安装程序在/opt/dbspace/.
rules-db.
db3中更新应用程序的smack规则的数据库.
RPM程序包的smack规则存储于/etc/smack/accesses.
d/*中.
Smack审核默认情况下,审核所有被拒绝的事件.
Kernel-space拒绝事件保留在dmesg上.
此外,IPC机制上的任何user-space拒绝事件都记录在dlogutil上.
参考对于smack,请参阅:http://en.
wikipedia.
org/wiki/Smack_(Linux_security_module)有关清单和安装应用程序,请参阅:https://wiki.
tizen.
org/wiki/Security/WebApps_and_Smack#Manifest_for_WebApps有关清单和安装RPMpackage(平台模块),请参阅:https://wiki.
tizen.
org/wiki/Security/Application_installation_and_Manifest#Manifest_file3.
6.
2证书管理在公钥基础结构(PKI)架构中,使用证书来证明公钥的所有权.
因为Tizen使用公钥架构,所以,实现Cert-svc(证书服务)和Cert-svc-vcore来有效地管理证书,并且只允许使用有效的签名来安装应用程序.
除非另有注明,否则,本文中的内容(代码示例除外)基于CreativeCommonsAttribution3.
0获得许可,而本文中包含的所有代码示例都基于BSD-3条款获得许可.
有关详细信息,请参阅内容许可.
37|页面向Tizen平台开发人员和制造商的白皮书图19.
证书管理下表列出了证书组件的主要功能.
表2.
主要功能功能说明Cert-svcCertificateInstallation(证书安装)将证书安装到指定位置.
CertificateDeletion(证书删除)删除不需要的证书.
CertificateInformationExtraction(证书信息提取)从X.
509结构证书提取信息.
CertificateSearch(证书搜索)使用用户请求信息搜索证书.
CertificateVerification(证书验证)检查是否正常发布证书验证.
SignatureVerification(签名验证)使用消息、签名和证书验证签名.
Cert-svc-vcoreNativeAppSignatureVerification(本机应用程序签名验证)检查对本机应用程序签名的验证.
WebAppSignatureVerification(Web应用程序签名验证)检查对Web应用程序签名的验证.
参考证书服务编程指南版本0.
1除非另有注明,否则,本文中的内容(代码示例除外)基于CreativeCommonsAttribution3.
0获得许可,而本文中包含的所有代码示例都基于BSD-3条款获得许可.
有关详细信息,请参阅内容许可.
38|页面向Tizen平台开发人员和制造商的白皮书3.
6.
3防病毒(CSR框架)CSR(内容筛选和声誉)框架由内容安全性框架和SecurityPlug-in(安全性插件)构成.
在Tizen中,它们是共享库.
内容筛选:使调用方模块和应用程序能够扫描内容(数据、文件).
图20.
内容筛选声誉(Web保护):可以保护世界各地的用户免受基于Web的恶意软件威胁、浏览器安全漏洞和身份盗窃.
图21.
声誉除非另有注明,否则,本文中的内容(代码示例除外)基于CreativeCommonsAttribution3.
0获得许可,而本文中包含的所有代码示例都基于BSD-3条款获得许可.
有关详细信息,请参阅内容许可.
39|页面向Tizen平台开发人员和制造商的白皮书内容安全性框架共享库:libsecfw.
so该文件直接链接到调用安全API的系统组件.
它负责插件(引擎)加载和重新加载.
请始终尝试从/opt/usr/share/sec_plugin/路径加载新插件.
SecurityPlug-in共享库:libengine.
so(内容筛选)、libwpengine.
so(声誉)SecurityPlug-in在运行时加载并且随安全应用程序包一起安装.
防病毒应用程序包格式程序包格式必须符合Tizen应用程序格式,这是一个简单的压缩文件.
程序包包含:o/bin/…(应用程序可执行文件)o/res/…(图标、图片和其他资源文件)o/data/…(应用程序数据)o/lib/plugin/libengine.
so或libwpengine.
so(安装程序将此文件复制到/opt/usr/share/sec_plugin/libengine.
so或libwpengine.
so.
)o/database/…(引擎数据.
例如,签名数据库.
每个人都可以读取该目录.
)o/info/manifest.
xml(包含正确的应用程序类型.
例如.
)Tizen安装程序增强功能检查签名/证书并且确保它是由受信任方进行验证的.
将/lib/plugin/libengine.
so复制到/opt/usr/share/sec_plugin/libengine.
so或libwpengine.
so.
将所有文件复制到/opt/usr/apps/[packageid]/….
将/opt/usr/apps/[packageid]/database的smack标签设置为"sec_database".
使用内容安全性框架的所有应用程序都已具有用于读取"sec_database"的规则.
为安全性应用程序提供权限.
(用于安全性检查的权限,例如对文件系统或其他应用程序的访问.
)参考Tizen内容安全性框架建议(文档版本1.
0.
22013,McAfee,Inc.
)除非另有注明,否则,本文中的内容(代码示例除外)基于CreativeCommonsAttribution3.
0获得许可,而本文中包含的所有代码示例都基于BSD-3条款获得许可.
有关详细信息,请参阅内容许可.
40|页面向Tizen平台开发人员和制造商的白皮书Location模块提供基于位置的服务(LBS),包括位置信息、卫星信息和GPS状态.
主要功能是:GPS(全球定位系统)获取当前位置、上次已知位置、精确性、距离和速率获取GPS和GLONASS的卫星信息在用户进入或离开预定义的通称为地理分隔的边界集(例如校园出勤区域或相邻边界)时通知用户.
Location框架下图阐释Location框架.
图22.
Location框架位置库:o包含本机位置可用来获取服务的位置提供程序.
oGPS提供位置信息、速度和卫星信息.
它用于获取某一设备的当前位置.
3.
7Location除非另有注明,否则,本文中的内容(代码示例除外)基于CreativeCommonsAttribution3.
0获得许可,而本文中包含的所有代码示例都基于BSD-3条款获得许可.
有关详细信息,请参阅内容许可.
41|页面向Tizen平台开发人员和制造商的白皮书Lbsdbus:o这是用于在Location模块和GPS管理器守护程序之间进行通信的IPC.
LBS服务器:o通过与GPS芯片进行通信提供位置、速度、NMEA和卫星信息.
oLBS服务器的功能:-GPS初始化/取消初始化和打开/关闭控制.
-为位置库提供位置结果.
-针对基于会话状态的会话终止的位置会话管理确定.
-用于GPS接收器的串行接口.
-使GPS芯片集能够支持独立的GPS定位方法.
-支持独立的操作模式,在该模式中,接收器提供所有自己的数据的GPS接收器设备需要并且执行所有位置计算,并且无需连接到外部网络或服务器.
移植OALInterfaceLBS插件是基于供应商特定的GPS设备的TizenLBS服务器实现的.
LBS插件是作为共享库实现的,而lbs-server在运行时加载特定的LBS插件.
LBS插件必须使用预定义的接口写入.
通过在程序包规格文件中添加以下命令,将lbs-server-plugin-dev源程序包安装在OBS上:BuildRequires:pkgconfig(lbs-server-plugin)在lbs-server-plugin-dev程序包内,源文件位于:/usr/include/lbs-server-plugin/*.
h/usr/lib/pkgconfig/lbs-server-plugin.
pcgps_plugin_intf.
h文件包括用于lbs-server和其GPS插件之间的通信的API接口:typedefstruct{/**初始化插件模块并且注册针对事件交付的回调*/int(*init)(gps_event_cbgps_event_cb,gps_server_param_t*gps_params);/**取消初始化插件模块*/int(*deinit)(gps_failure_reason_t*reason_code);/**请求针对插件模块的特定操作*/int(*request)(gps_action_tgps_action,void*data,gps_failure_reason_t*reason_code);}gps_plugin_interface;constgps_plugin_interface*get_gps_plugin_interface();get_gps_plugin_interface()必须在LBS插件中导出.
它向lbs-server提供gps_plugin_interface结构,而lbs-server通过这些接口进行通信.
在启动gps-manager时,将加载GPS插件并且调用init()函数.
此时,必须初始化GPS设备(例如,用于电源控制和固件下载).
除非另有注明,否则,本文中的内容(代码示例除外)基于CreativeCommonsAttribution3.
0获得许可,而本文中包含的所有代码示例都基于BSD-3条款获得许可.
有关详细信息,请参阅内容许可.
42|页面向Tizen平台开发人员和制造商的白皮书4.
优化通常,使用2个主要方法来执行优化任务.
第一个方法是静态(源代码)分析,它通常仅在相当简单的应用程序中是有帮助的.
在复杂软件中常常很难应用静态分析,例如,提供具有不同执行线程、系统IPC使用率和第三方模块(插件)支持的许多服务的复杂软件.
在该情况下,您必须针对不同的使用情形在运行时分析应用程序行为,而第二种方法(即动态分析)更有效.
Tizen平台提供用于动态应用程序分析的必需的工具.
该动态分析过程划分为几个基本阶段:分析会话准备数据收集结果的可视化在准备阶段中,开发人员选择为进行分析而当前需要的数据:兴趣点(例如库或函数)、要分析的功能(例如内存、文件IO和网络)以及其他参数(例如抽样期间).
所有这些数据都是在分析会话期间在目标设备上收集的,并且发送回主机系统.
主机对接收的数据进行分析和存储,执行所需的分析,并且以肉眼可读取的形式显示结果.
该方法允许开发人员观察程序在复杂环境中的行为方式以及不同的系统方面是如何影响它的.
下图阐释了Tizen应用程序的整个分析过程.
图23.
分析过程性能的系统范围的分析器(SWAP)性能的系统范围的分析器(SWAP)是一个动态的二进制工具引擎,允许您执行系统范围的性能、内存、耗电量分析和优化.
它基于kprobe机制,并且提供工具来收集在运行时对应用程序和整个系统行为进行分析所需的所有数据.
SWAP用作在目标设备上分析数据集合的后端.
除非另有注明,否则,本文中的内容(代码示例除外)基于CreativeCommonsAttribution3.
0获得许可,而本文中包含的所有代码示例都基于BSD-3条款获得许可.
有关详细信息,请参阅内容许可.
43|页面向Tizen平台开发人员和制造商的白皮书SWAP关键功能:Kernelspace分析:o可以在命中给定地址处的说明时执行自定义处理程序.
o函数分析:在进入和退出指定的函数时执行自定义处理程序(例如,perform、参数或返回值分析或时间戳记录).
o例如,截取处理程序、计划程序、驱动程序、系统调用、IPC、IO、图形和输入事件的分析.
Userspace分析:o具有自定义进入/退出处理程序的函数工具.
o多线程和多进程应用程序支持.
o库工具,包括从所有正在运行的进程收集数据的系统范围的模式.
o"已在运行"分析:无需应用程序/系统重新启动.
轻松的数据提取:o例如,函数参数(kernel或userspace)、任务注册和当前系统参数.
多架构支持:oARM、ARM64、x86和MIPS.
无需源代码或调试信息.
无需程序/内核重新编译.
模块化体系结构:o轻松实现针对特定任务(例如,内存分析、性能度量或耗电量评估)的基于SWAP的新工具.
可作为单独模块编译或内置于内核映像中.
动态分析程序(DA)动态分析器是设计为基于从目标设备收集的数据执行应用程序行为分析的GUI前端.
它提供:时间线图表:CPU负荷、内存、缓存、网络使用情况、UI事件、应用程序生存期和自定义图表汇总:失败的API、资源泄露、功能分析和警告分析组件:文件IO、线程、UI、网络、OpenGLES、计划和系统信息UX和其他信息:调用跟踪、记录和重放、源代码链接、基于范围的分析、运行时屏幕快照、服务/混合应用程序支持、平台库支持和多进程支持除非另有注明,否则,本文中的内容(代码示例除外)基于CreativeCommonsAttribution3.
0获得许可,而本文中包含的所有代码示例都基于BSD-3条款获得许可.
有关详细信息,请参阅内容许可.
44|页面向Tizen平台开发人员和制造商的白皮书DA关键功能:查找可能的优化点,例如瓶颈和不需要的等待.
分析问题的原因,例如泄露和功能使用错误.
效率分析:网络、OpenGLES除非另有注明,否则,本文中的内容(代码示例除外)基于CreativeCommonsAttribution3.
0获得许可,而本文中包含的所有代码示例都基于BSD-3条款获得许可.
有关详细信息,请参阅内容许可.
45|页面向Tizen平台开发人员和制造商的白皮书A.
词汇表表3.
词汇表术语或缩写说明ALSA高级Linux声音体系结构EAP可扩展身份验证协议Tizen用于设备(例如移动设备、电视和IVI)的基于Linux的开放源操作系统V4L2Video4Linux2WLAN无线局域网WPAWi-Fi保护的访问WPSWi-Fi保护的设置除非另有注明,否则,本文中的内容(代码示例除外)基于CreativeCommonsAttribution3.
0获得许可,而本文中包含的所有代码示例都基于BSD-3条款获得许可.
有关详细信息,请参阅内容许可.
46|页
6元虚拟主机是否值得购买?近期各商家都纷纷推出了优质便宜的虚拟主机产品,其中不少6元的虚拟主机,这种主机是否值得购买,下面我们一起来看看。1、百度云6元体验三个月(活动时间有限抓紧体验)体验地址:https://cloud.baidu.com/campaign/experience/index.html?from=bchPromotion20182、Ucloud 10元云主机体验地址:https:...
vollcloud LLC首次推出6折促销,本次促销福利主要感恩与回馈广大用户对于我们的信任与支持,我们将继续稳步前行,为广大用户们提供更好的产品和服务,另外,本次促销码共限制使用30个,个人不限购,用完活动结束,同时所有vps产品支持3日内无条件退款和提供免费试用。需要了解更多产品可前往官网查看!vollcloud优惠码:VoLLcloud终生6折促销码:Y5C0V7R0YW商品名称CPU内存S...
lcloud怎么样?lcloud零云,UOVZ新开的子站,现在沪港iplc KVM VPS有端午节优惠,年付双倍流量,200Mbps带宽,性价比高。100Mbps带宽,500GB月流量,10个,512MB内存,优惠后月付70元,年付700元。另有国内独立服务器租用,泉州、佛山、成都、德阳、雅安独立服务器低至400元/月起!点击进入:lcloud官方网站地址lcloud零云优惠码:优惠码:bMVbR...
xv文件用什么播放器为你推荐
支持ipad设置media支持ipad支持ipad支持ipadipad如何上网如何用手机流量在IPAD上上网勒索病毒win7补丁win7有针对勒索病毒的补丁吗ipadwifiipad插卡版和wifi版有什么区别,价格差的多么?win10445端口win的22端口和23端口作用分别是什么 ?win7telnetwindows7旗舰版中telnet在哪
apache虚拟主机 美国主机网 搬瓦工官网 info域名 NetSpeeder 国外免费空间 云鼎网络 铁通流量查询 空间合租 万网空间购买 drupal安装 闪讯官网 空间购买 空间登陆首页 西安服务器托管 华为k3 注册阿里云邮箱 japanese50m咸熟 九零网络 comodo 更多