Palm OS 5开发概述

类别:编程语言 点击:0 评论:0 推荐:

内容

介绍 发布时间表 基于ARM处理器的Palm OS Palm应用程序兼容性环境 Palm OS仿真器 安全API 高密度API 性能 支持ARM原码 采样声音API Mac OS 管道开发工具(CDK Windows管道开发工具(CDK) Palm桌面软件的可扩展性框架

介绍


本文是Palm OS 5版本的开发概述。本文旨在向你介绍Palm OS 5的新的体系结构、演示如何保证你的应用程序和新的硬件平台的兼容性以及介绍一些可用于你的应用程序的新功能。

在硬件设备上市之前,Palm OS 5仿真器是主要的测试工具,可以到仿真器页面去下载仿真器的发行版本。测试你的应用程序以及快速地修改应用程序中的错误是非常重要的,这样做让你就能够确信你的应用程序是和Palm OS许可商推出的Palm OS 5设备是兼容的。这里有一些Palm OS 5测试范例 ,可用于你的测试过程。


注意:本文不是整个Palm OS的概述,仅仅是指那些在Palm OS 5版本中新增的和经过明显改动的功能。如果你正在找关于Palm OS编程的介绍的话,请访问开始页面。此外,这也是一个概述。正式的文档里会详细阐述这里的每一个主题,访问http://www.palmos.com/dev/support/docs/可以找到最新发布的文档,或者访问资源馆页面的开发者种子版块找到更新的、预发布的文档。


Palm OS 5中最大的一个变化是它运行于新的硬件平台,采用来自产业领导厂家 (例如英特尔、摩托罗拉以及德州仪器)生产的ARM系列处理器。这样能够保证在维持低费用、低功耗、易于使用和外观因素等已经让Palm OS设备风靡世界的特色的前提下,让Palm OS平台的速度和性能以及开发者开发的软件得到非常巨大的改进。


甚至在全新的硬件上,现有的Palm OS 4.0的应用程序可以不需要任何改动就能够运行,并且能够在老的和新的设备间共享数据。这是由PACE来实现的。“Palm应用程序兼容性环境”(PACE)能够保护开发者和用户的软件投资,并且为新的硬件提供非常强大的兼容性和转换途径。因为操作系统和PACE都是用ARM原码编写的,而且应用程序调用的每一个操作系统API都是以原码的方式全速运行的,所以运行于PACE之上的应用程序的速度能够得到很好的提升,并且可以使用高密度屏幕 (如果存在的话)。


新的开发工具A HREF="#PalmSim">Palm OS仿真器可用于测试和调试基于Palm OS 5的应用程序。Palm OS仿真器和Palm OS模拟器由很多相似的地方,比如都是运行在桌面系统之上、都有一个运行Palm OS的设备的窗口。但是Palm OS仿真器也有一些不同的、新的调试功能。仿真器是Palm OS 5作为一个Windows应用程序在本地运行的一种实现,和现有的模拟器一起将会成为一种主要的开发工具。模拟器和仿真器使用相同的调试协议,所以应用程序可以在两者上使用现有的开发工具(比如Metrowerks CodeWarrior版本7和8以及PalmDebugger)来测试。


Palm OS 5包含功能强大且和标准的A HREF="#Security">安全API ,包括128位RC4、SHA1和RSA校验密钥算法以及SSL 3.0/TLS 1.0服务。


Palm OS平台现在也支持高密度屏幕(使用现有窗口管理器函数的扩展)。这些API可以用于多种屏幕分辨率,Palm OS仿真器可以用来在320×320像素模式下测试应用程序,提供4倍于以前操作系统API支持的屏幕大小的屏幕。使用窗体、字体等标准API的应用程序能够在不需要任何代码修改的情况下,自动适应于高密度字体和图像操作。


运行于PACE下的现有应用程序的性能一般来说会得到显著的提高,提高的程度取决于包括运行Palm OS 5的设备的硬件性能和应用程序执行的详细情况在内的很多因素。在某些情况下,如果某些应用程序中时间很关键部分处于“最坏情形”的情况和存在性能问题时,这些应用程序可以考虑利用运行ARM原码提供的优良的性能。


假设所使用的设备具备合适的硬件的话,那么应用程序可以使用新的声音管理器API来播放和记录采样的声音。


Palm OS 5的管道技术并没有明显的改动,但Mac CDK和Windows COM Sync Suite更新了,其技术已和现有的CDK技术一致了。Mac CDK支持兼容Mac OS 9和Mac OS X的管道开发。另外,同步管理器API已经被扩展了,用户管理器API已经移植到Mac OS中,Mac OS X 的HotSync用户界面也美化了。Windows管道开发工具(CDK)也为Visual Studio.NET添加了新的向导。COM Sync Suite支持大家熟悉的用户数据、HotSync API和管道管理器等的API。


现在Palm桌面软件提供一种允许开发者集成、扩展和访问Palm桌面软件的可扩展性框架 。开发者可以使用COM接口把Palm OS解决方案的桌面软件部分直接集成到Palm桌面软件中。


Palm OS 5
发布时间表


Palm OS 5已经完成并且全部软件都已经交付给了许可商。Palm OS许可商已经使用Palm OS 5早期版本进行了几个月的研发,并且正在生产基于Palm OS 5的硬件设备。但是PalmSource公司不能够公布新设备的上市时间和新设备的功能,请联系Palm OS许可商来获得他们将来的设备计划的信息。


现在开发者可以下载Palm OS仿真器和最终版本的Palm OS 5 SDK。仿真器是一个Palm OS 5基于Windows本地编译的独立的应用程序,它是非常理想的用于测试应用程序从而保证兼容性的工具。


PalmSource公司总是会在操作系统发布之前和软件以及硬件开发者进行长时间合作,从而保证对于用户和开发者来说是一个平滑的过渡。2000年12月第一次公开展示了运行于ARM处理器的Palm OS,数百名开发者参加了于2001年12月举办的详细的研讨会(“Syncups”)。在这次研讨会上,开发者获得了关于Palm OS 5更加深入的信息,并且开始使用仿真器进行开发。在2002年2月举办的PalmSource开发商大会上,仿真器得到了广泛的推广,提供了很多的ARM平台可以供开发者使用。


基于
ARM处理器的Palm OS


Palm OS 5运行于新的硬件之上的、完全基于ARM的32位的操作系统。因为处理器速度的提高、PalmOS效率的提高以及软件性能的增强(比如高密度窗口管理器),现有的适合Palm OS 5的数千种软件将会比以前运行得更好。


选择ARM芯片有几个原因(其中最主要的原因是ARM芯片具有非常广泛的速度、惊人的每瓦特MIPS率),很好的成本效益和能够与许可商想要在设备中添加的硬件很好地集成。有几家供应商可以提供ARM芯片, 这样许可商、开发者和用户可有多种选择并可鼓励他们进行创新。


所有支持的ARM芯片都属于4T结构体系的范畴。开发者的应用程序不必知道运行于何种ARM芯片,因为操作系统把开发者和具体的硬件隔离开了,所以应用程序不需要进行重新编译。ARM芯片和Palm OS最初采用的摩托罗拉龙珠系列芯片(通常称为68K)完全不一样:使用完全不同的指令集,在其它方面也有很大的不同,比如结构封装和整型数字节的排列。PACE 可以让已经开发好的68K应用程序在Palm OS 5和将来的版本上运行就像在Palm OS 3.x和4.x设备上运行一样,不需要根据新的硬件进行任何改动。


在Palm OS 5中,除了PACE下的应用程序之外,任何程序都是以ARM原码的方式运行的。这就意味着,因为大多数应用程序的运行时间都是在调用操作系统的函数,所以在任何情况下都能够获得高性能。


运行于Palm OS 5上的应用程序的数据和参数格式和以前一样,所以在新旧设备进行交互时,不会存在兼容性和数据交换问题。 PACE下应用程序中所有可见的保存的数据和内存中所有的对象都是big-endian模式的,和在68k设备上一样。 在调用操作系统程序时, PACE会根据需要处理字节顺序的转换。所以,不必改动应用程序来处理ARM芯片中新的字节顺序和结构封装。


除非开发者需要把加强性能的代码转换成ARM原码模块(后面会阐述),否则开发者都可以使用现有的软件开发工具和集成开发环境(IDE)来创建运行于Palm OS 5之上的应用程序。PalmSource公司将会在2002年推出很多新的开发工具,并且支持完全ARM原码的应用程序开发,但是大多数开发者将会发现,在中短期时间内,使用现有的工具和运行于PACE之上是正确的选择。


Palm OS
应用程序兼容性环境 PACE


那些现有的采用Palm OS 4.0 正式发布的API、没有假设硬件、没有使用不支持的操作系统结构、运行于调试版本ROM的模拟器之上的应用程序通常都可以在Palm OS 5设备上正常运行。这是因为PACE解释了现有应用程序的68k指令,让它们能够在ARM处理器上运行。

PACE没有模拟68k芯片和其它硬件,它也不运行以前的操作系统。PACE解释68k指令,并且通过调用Palm OS 5系统程序来处理68k指令(应用程序用来调用操作系统API)。所以PACE对于内存和处理功耗都是非常有效率的,大多数开发者将会发现他们的应用程序和调试器能够像以前一样正常运行,除了速度上有区别之外。


但是,那些“切入(hacked)”68k操作系统、访问不支持的结构以及对硬件进行假设的应用程序的代码很可能不再像所想要的那样正常运行了。PACE会处理那些运行于Palm OS 5之上的、支持的函数和结构,而且将来不管操作系统如何发展,PACE仍然会这么做。但是PACE不能正确处理那些含有不被支持的函数和结构的程序。PalmSource公司多年来一直建议开发者不要访问不被支持的结构,这样做的话能够保证他们的应用程序在PACE上正常运行。有的时候一个应用程序的错误会导致无意之中访问了一个操作系统的结构;由于C编程语言的工作原理,所以很难预先发现这样的错误,但是一旦在仿真器上发现了这样的错误的话,就可以很快地更正它。


建议测试访问不支持的结构的非常好的方法是在.c和.cpp文件之前添加“#define DO_NOT_ALLOW_ACCESS_TO_INTERNALS_OF_STRUCTS”。这样做会导致编译器在编译时会产生非正确的访问的标记。(在4.0 SDK更新版当中默认有这个预定义。)Palm OS模拟器3、4或者更高的版本和Palm OS仿真器一样,也会产生非正确访问的标记,而编译器可能不会注意到这些非正常的访问。


用户不会知道应用程序正在PACE上运行 - 他们感觉不到任何以前的环境因素,也感觉不到额外的启动时间。相反,他们通常可以感觉到他们的应用程序和以前一样 - 由于操作系统和硬件的进步,也许能够感觉到比以前运行得更好、更快了。


尽管PACE这个缩写和Palm OS仿真器的缩写“POSE”很相似,但是它们却是完全不同的两个概念。PACE让68k应用程序能够在基于ARM的Palm OS 5的设备上运行,从本质上来说,PACE也是一个在Palm OS 5上运行的应用程序。和PACE形成对照的是,POSE模拟一个物理设备的硬件和处理器,而且操作系统本身是由POSE来运行的。POSE通常仅仅被开发者使用,而PACE被包含在所有发售给最终用户的Palm OS 5的设备中。


Palm OS
仿真器


Palm OS 仿真器是Palm OS平台代码的一种实现方式,而Palm OS平台代码被编译后会在Windows上运行。从表面上看,Palm OS 仿真器和Palm OS模拟器(“POSE”)很相似,都是运行在桌面电脑之上、都有一个运行Palm OS的设备窗口,而且都和调试器(比如Metrowerks CodeWarrior和PalmDebugger)相连接。 这两个工具的使用方法也很相似,但是它们的实现和能力却大不相同。大多数开发者会在日常的开发当中同时使用POSE和仿真器,因为它们都有各自独特的、有用的调试和测试功能。


仿真器包含一些新的调试工具,比如交互式的数据库和内存堆观察器以及事件跟踪窗口。可以通过在仿真器窗口上点击鼠标右键来使用这些调试工具,而且这些工具已经被证明在常规的应用程序开发中是非常有用的。仿真器还包含一些其它功能,例如Gremlins和内置VFS RAMDisk,和POSE非常相似。


仿真器和POSE不同的地方在于,仿真器包含一个带.ROM扩展名的文件,这个文件不包含任何设备中的某种ROM,而且这个.ROM文件中没有任何可执行的代码。取而代之的是,Palm OS系统代码、用户界面、网络栈等等都包含在Windows的动态链接库(DLL)文件中,这些DLL文件包含了仿真器大多数的内容,.ROM文件只包含资源,如位图、窗体和其它数据。所以包含可执行代码、DLL和.ROM文件的整个仿真器“包”可以看作是一个单个的程序包。不要把仿真器的某些部分和其它仿真器的某些部分混搭,也不要把仿真器的ROM文件和POSE使用的ROM文件混搭。


在POSE和仿真器的其它区别当中,仿真器对应用程序代码进行主动错误检查要比POSE少。例如,POSE会观察内存分配,并且会告诉你内存溢出发生的地方,而仿真器没有这种机制。POSE非常接近于设备,它会模拟包括内存分布在内的所有方面,但是仿真器不会模拟某个特殊的设备,而只是实现操作系统的API和性能。应用程序在仿真器上运行要比在模拟器上运行快的多,运行Gremlins的时候就非常明显。所以仿真器和POSE是相互补充的,而不是相互替代的。


因为仿真器是以一个本地应用程序的方式在桌面电脑的操作系统上运行的,所以在Mac OS这样的big-endian系统运行就不能够可靠地仿真真实的Palm OS 5(little-endian系统)设备。(这实际上和Palm OS 5之前就存在的情形是相同的:因为Mac OS的处理器和字节顺序碰巧和Palm OS设备的相同,所以仿真器先前只能运行于Mac OS之上,但是现在仿真器也能运行于Windows之上了。)PalmSource公司正在为Mac OS和UNIX平台 (现在仿真器不可用于这些平台)开发可以运行基于ARM处理器的Palm OS的模拟器。


安全
API


Palm OS 5新增加强大的安全功能。这种安全功能可以满足加密/解密、散列法、安全的通信和签名验证的需要。开发者可以访问下面的API:

通过使用RC-4加解密代码实现加密/解密功能。RC-4是一种众所周知的、标准的流算法,它能够提供强大的数据加密和解密功能,一次只处理一个字节。 根据输入产生散列。SHA-1是另外一种标准的加解密算法, 它能够用于生成和输入唯一对应的160位输出的散列。生成的散列是无冲突的,而且不会暴露任何输入信息。 创建互联网标准的安全通道。由于支持SSL3,所以Palm OS 5支持和所有安全的网络服务(如网站、安全的SMTP等等)通信。 通过使用RSA验证算法实现鉴权。经过RSA密码系统(工业中使用最广泛的系统)加密的数据能够通过Palm OS 5安全功能的检验。

高密度API


在具有新的高密度特性的Palm OS设备上,操作系统新增了对双密度屏幕(320×320)的支持,所以应用程序可以不需要经过任何改动就可以运行,而且在现在的屏幕上的效果看上去和在以前的屏幕上的效果一样地好。特别是字体和标准的用户界面控件将会受益于屏幕像素点的增加,而且根本不需要应用程序做任何修改。应用程序可以在现有的位图族中添加高密度版本的位图,从而获得更好的视觉效果。


系统通过定义两个坐标系统来使得现有的应用程序可以忽略屏幕的密度。系统默认使用的是“原始”坐标系统,即使用0到159的坐标,符合现有的大多数Palm OS设备上160×160的屏幕。每一个原始坐标所表示的像素点的数目会根据屏幕密度发生变化。所以,当一个应用程序绘制一条从原始坐标(0,0)到(5,0)的直线时,在高密度屏幕上绘制10个像素点,而在低密度屏幕上则只绘制5个像素点。


如果应用程序想要特别地处理高密度屏幕,可以调用WinSetCoordinateSystem()函数来切换到“本地”坐标系统。在“本地”坐标系统中,坐标和屏幕上的像素点相匹配。诸如图像编辑器之类的应用程序为了能够以最大的精度来绘制像素点会这么做。因为如果位图族中包含一个高密度的位图成员的话,操作系统会自动绘制它,或者会根据屏幕格式把它转换为最佳大小的位图,所以在绘制位图时不需要改变坐标系统。


因为离线窗口默认为低密度,所以应用程序仍然可以直接访问离线窗口的数据位。(但是,如果应用程序直接访问屏幕的话,可能不能够获得想要的结果,因为由于屏幕技术不同会导致屏幕可能不是所期望的密度、不同的字节顺序或者其它的不同。)Palm OS 5新增加了一些API函数,所以应用程序在必要时可以在一个较低层面来同时处理高密度和低密度位图,PalmOSGlue提供一些非常有用的代码,应用程序可以借助这些代码在保持密度和处理器兼容性的同时直接创建和处理位图。


性能


很多供应商都提供各种不同速度的Palm OS 5所采用的ARM系列处理器。在Palm OS 5的介绍中,时钟速度的范围很广,从几乎和现有的摩托罗拉的龙珠处理器相近的速度到可以让所有系统性能提高100倍的速度。


因为Palm OS 5是在ARM处理器上本地运行的,所以每一个操作系统的调用都会在保证和现有的、在龙珠处理器上编写的应用程序保持极好的兼容性的同时,在ARM处理器上全速运行。也就是说,因为大多数应用程序花费的绝大多数的时间都是在操作系统调用内的,所以在所有的环境中都可以获得高性能。在某些特殊环境(应用程序包含一个冗长的、耗时的算法, 而这个算法在操作系统程序上只花费很少的时间),性能可能会比期望的要差。下一节支持ARM原码稍微介绍了这些情况并讲述如何在保持应用程序和68k设备保持便于携带和兼容性的同时提供最佳的性能。


支持
ARM原码


几乎所有的Palm OS 5应用程序开发都是在现有的、面向68k的开发环境中进行的,而且所产生的PRC文件只包含68k代码。这样可以继续使用现有的、成熟的开发工具。早期版本的新的开发工具是2002年推出的,支持将来版本Palm OS的完全ARM原码的应用程序开发。但是在Palm OS硬件向ARM转变的过程当中,应用程序开发者还是基本上致力于68k应用程序(可借助于Palm OS应用程序兼容性环境“PACE”运行于ARM硬件上)开发。


某些特殊情况(应用程序包含冗长、耗时的算法, 而这个算法在操作系统程序上只花费很少的时间),运行速度可能(出于最坏的考虑,比如在比较慢的ARM处理器上运行)还不如在68k处理器上的运行速度快。可以这么处理这些极少的情形:把耗时的算法转变成自包含的应用程序ARM原码代码块。初步的测试表明这么处理的效果非常好,算法的运行速度比在68k设备上的运行速度快很多倍。一般来说,在200MHz的ARM处理器上的运行速度是在33MHz龙珠处理器上的运行速度的60倍。


编译成ARM原码的算法可以调用Palm OS内部的程序,并且返回调用它的应用程序,但是它不能直接访问68k应用程序的全局或者局部变量(除非他们的指针已经传递给ARM原码),ARM原码不能有全局变量或者静态变量,也不支持需要操作系统运行库支持的任何程序。PACE跳转到指定地址的“原始代码”,开发者的代码负责建立所需要的所有运行环境。一些参数会被传递给ARM原码,用于在应用程序和操作系统回调,还有一个应用程序定义的指针,这个指针指向的缓冲区的内容是应用程序定义的。在调用操作系统和68k应用程序时,原码必须对被传递的数据进行字节顺序差异的处理,同时也要处理结构封装、队列和参数组的字节顺序。


这是一个复杂的主题,而且到目前为止只有一些简单的工具可用,所以只建议那些具有丰富经验的C程序员在确实需要的情况下这么做。在资源馆网页的开发种子计划模块中会提供一些基于gcc的工具和范例代码。


采样声音
API


现有的声音管理器在Palm OS 5中明显得到了增强。现在声音管理器支持播放和记录8或者16位立体声和mono任意(整数)采样率的采样声音,具有一个重复采样器和一个16通道的软件混音器,还包含用于播放标准WAV格式(没有压缩的PCM或者IMA4位自适应微分,被称为IMA ADPCM)的声音。许可商的硬件可能包含对混音器或者其它功能的支持。


可以同步或者异步播放声音,多个声音流会被自动混合在一起。每一个声音流可以单独启动和停止,而且可以单独调节音量或者立体声均衡。可以在一个单独的缓冲区中播放声音,或者应用程序提供一个回调函数,这样声音就可以变成声音流:实时解码和生成。


系统因点击屏幕、错误音等等而播放的声音也已经被转换成了采样声音了。(目前,预发布的仿真器有的声音是用于测试目的的,将来不会用于发行的设备上。)


Mac OS
管道开发工具(CDK


现在Mac OS 管道开发工具(CDK)包含有为Mac OS 9或者Mac OS X上的Palm桌面软件4.0版本开发HotSync管道所必需的库和头文件。这个CDK中的新的用户管理器API包含一套新的辅助管道和应用程序安装的API函数。有几个以前只是在PC的CDK中包含的同步管理器API函数已经别添加到Mac CDK中了。HotSync的用户界面也已经针对Mac OS X Aqua升级了,提供和Mac OS X一致的外观和体验。C/C++ Sync Suite中关于Macintosh的Companion和Reference文档已经更新了关于新的API的细节和Mac OS X的CDK功能内容。


Windows
管道开发工具(CDK


现在Windows CDK包含了更新后的Visual Studio.NET的项目文件/向导。另外,Windows CDK中COM Sync Suite部分也已经更新了扩展的API函数。那些以Visual Basic或其它与COM适应的语言来使用COM Sync Suite来开发管道的开发者现在可以访问管道管理器、用户数据、安装助手和HotSync API(HSAPI)了。管道管理器对象可以用来在安装时为HotSync管理器注册管道。用户数据对象可以用来访问存储在桌面电脑中的用户数据,HSAPI对象可以用来控制HotSync管理器应用程序。安装助手对象可以用来查询设备安装的数据库和应用程序。那些在C/C++管道开发中使用上述API的开发者将会发现在COM Sync Suite中也具有相同的功能。


Palm
桌面软件的可扩展性框架


Palm桌面软件4.1版本新增了两项允许开发者扩展其功能的技术: 插件和扩展件。Palm桌面软件SDK支持使用Visual C++和Visual Basic来开发插件和扩展件。可扩展性框架可以让开发者插入应用程序到Palm桌面软件,并且可以让桌面应用程序的开发者提供集成的、完整的Palm OS解决方案。

本文来源:
http://kb.palmsource.com/cgi-bin/palmsource.cfg/php/enduser/std_adp.php?p_sid=zH2Orkvh&p_lva=&p_faqid=848&p_created=1094031678&p_sp=cF9zcmNoPTEmcF9ncmlkc29ydD1mYXFzLnVwZGF0ZWQ6RCZwX3Jvd19jbnQ9NTcmcF9zZWFyY2hfdGV4dD1jaGluZXNlJnBfc2VhcmNoX3R5cGU9MyZwX3Byb2RfbHZsMT1_YW55fiZwX2NhdF9sdmwxPX5hbnl_JnBfcGFnZT0x&p_li=

本文地址:http://com.8s8s.com/it/it23641.htm