您的位置: 嵌入式在线 > 技术中心 > Palm OS > Palm OS 5开发概述(三)

Palm OS 5开发概述(三)

2008-01-02      嵌入式在线      收藏 | 打印
        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的模拟器。

     

本文来源:嵌入式在线    作者:
热点资讯(一周点击率)
热评博文
评一评已有 0 位网友对此文发表了看法。  我也来评一下

验证码:  看不清?换一张

 

快乐大本营

    无线时代来临,移动产业生态系统将发生一些根本变化。今日头条推荐“芯片是嵌入式4G技术的关键 产业生态系统将发生变化”。

    想了解嵌入式开发工具的市场情况吗?先来体验下我们的在线调查吧!填写调查问卷

工程师之星
朱礼昆
电子信息工程专业,擅长硬件编程
  • 胡菲菲  技术专长:嵌入式系统linux
  • 柳如峰  技术专长:模电,电源
热门招聘
论坛热贴