|
用模拟器先学习PALMOS系统的使用
9 F2 l: G4 s+ J; u% q' S
' l, T2 r+ e; X M6 ?; _
5 l; _* Z! k8 k; {+ E7 t4 JTREO的ROM有很多种APR/ROW/ENA/LAP...分别是什么意思?可以互换么?
) d5 C8 i) i; k" n
! ?2 C8 ~' C" E- g, yQUOTE:
' _. u3 v/ P8 @9 Y M) o2 G2 e+ v开发商视点:模拟器和仿真器:竞争与合作,作者:David Fedor + ]4 c2 x E! r2 N" p
$ g$ K* r: G' `5 Q b$ Z
Palm OS Simulator(Palm OS 模拟器)和 Palm OS Emulator(Palm OS 仿真器):虽然两者听起来极为相似,并且从表面上看也非常相似,但作为一个开发商或测试人员,在您未完全了解它们之前,您不可能实际有效地利用它们进行工作。阅读以下内容,您将能更好地了解这两个基本的但非常重要的开发工具。3 K" M1 \1 t' p! e$ n/ O6 ~$ l, T J
0 i7 v- q4 R( ?0 N- E
模拟器(有时称为 PalmSim)和仿真器(或者 POSE)两者都在台式电脑中的模拟设备上运行 Palm OS,以方便您运行、调试和/或演示应用程序。它们的主要区别在于实现的过程和各自所具有的测试特性和环境。5 n; f: P9 r" [6 M" [/ v5 P- _( s
~! D4 D, E: x/ Y: w简言之,仿真器模仿一个真实的设备,而模拟器则更像是执行了一个普通的 Palm OS API,因为此时 Palm OS 系统是作为本地的 Windows 应用程序运行的。所以仿真器更接近于实际情况,而模拟器有时则会与实际不符──根据不同情况,可能产生好坏两方面的影响。
; x% c3 r$ ]. _; g4 }; Y& G1 P4 @. [
9 G, @% _5 C5 n' F. }. ^另一个区别是,仿真器目前还不知道如何“作为”Palm OS 5 设备,这是因为它们各自在完全不同的处理器上运行。(曾经出现过模拟 68k 设备的模拟器,但它只能在 Mac OS 系统中运行,而且它之上只能运行应用程序而不是整个系统,更不用说具有现在的模拟器的丰富特性了。因为现在仍有少数用户使用它,所以在这里顺便提及。)目前,仿真器最适用于 Palm OS 4.x 及其早期版本,而模拟器则适用于 5.x 系列。: M6 C/ |6 r2 w9 S. I* w
4 e0 X' o/ d/ C) W
为尽可能符合实际情况,仿真器具备大部分已面世的基于 68k 的设备特征,从而使运行环境尽可能接近您所选用的设备。它启用真实设备中真正的 ROM。除时间限制外,应用程序可以像在所模仿的设备上运行一样,在仿真器上运行。它还有很多有关调试的特性,我们将在后面详述。
# m& x9 O2 D; Y2 L5 S& K/ a* ^- U
与仿真器相比,模拟器能让您拥有一整套的各种功能。(“您需要一个具有双精度、黑白屏、2M 字节的 RAM,但不使用电池的设备吗?没问题!”)或者创造一个具备所有特性的设备──您毕竟不用为它破费或者需要随身携带它,所以为什么还要犹豫呢?事实上,利用它们可以给您带来很多好处:您能快速的更改配置,以不同的方法检测程序,从而暴露出各种错误。
0 B" Q" P' ~5 _; ~+ @/ |9 O; ]% M( c
“创建您自己的设备”的灵活性也带来了一些与实际情况不相符的地方:在模拟器的存储器中,数据将位于不同的地方。由于它使用 PC 的网络堆栈,通信代码在其上的运行情况将有所不同;任何与“硬件”相关的情况都可能和真实设备中的情形不一致。并且,因为 PC 的设置会对结果产生极大的影响,所以在模拟器或仿真器上进行的速度测试其结果是不可信的。事实上,仿真器的计时单位可能与真实设备中的完全不同,这与通常精确的模拟有显著的差异。
* S# B# E8 P, H/ k1 D2 K( s0 r( E. `: W6 B# Q( S
仿真器是源代码开放的程序,它可以在 Windows、Mac OS 和各种 Unix 系统上运行。但是因为模拟器只能运行于 Windows 之上,这就带来了一个复杂的问题──即您不能调用包含 ARM 代码的 PNO(PACE 内部对象,即早期的 ARMlet)中的代码,这是因为在模拟器中没有 ARM 指令集仿真程序。但是,您能够根据您的 PNO 创建 Windows DLL,并以这种方式进行测试。& c+ U0 w4 S) z5 t* C
; Z$ j" ^! e$ Q" h- X/ f6 D4 ?除在结构上的区别之外,测试是两者之间差异的另一个主要方面。虽然它们都包含调试功能,但因为仿真器“是”CPU,所以它可以执行一系列更为丰富的特性。相关文档中将对每个特性加以详细说明。例如,仿真器设计中的一个特性是可以检查不同的操作,从而确保您的应用程序能够正确地读取存储器。如果您读取的字节未包括在分配给您的存储器中,或者是表单结构中未记录的对象,那么仿真器会通知您。它还有助于您跟踪并识别存储器漏洞,使您能够分析应用程序,以便找出速度问题及其它更多问题。2 {7 |( C! N9 l: \" c5 ^0 N
9 ?' b8 Z( o! [2 b模拟器并不进行大范围的监视,因而它能以极快的速度运行:它能以 5 到 10 倍的速度运行一整套的 Gremlins 程序。它还包括一些附加的特性,如易于操作的实时查看程序,它可以查看设备的数据库、堆栈和事件。(获取有关 Gremlins 的更多信息,请访问http://www.palmsource.com/develo ... 30407.html#insights,参见我以前的专栏。)/ @9 K2 L; P7 G: Z* U2 _& G
1 o' w0 ~ _* o/ ?# [因为仿真器和模拟器有其各自的优缺点,所以综合使用两者进行测试将是一个很好的方法。请注意,真实的设备会尽可能地试图隐藏或忽略程序错误,但这些工具会将它们部暴露出来。您千万不能因为在某个设备中没有检测出程序错误,就忽略模拟器或仿真器中的报警:这些报警意味著出现了某些问题,我们 PalmSource 公司已经意识到这些问题很可能会突然出现在将来的设备和/或 OS 版本中。认为“它能运行在真实设备上”和消极对待程序错误者的经典回答“但它在我这儿没问题呀”所带来的后果一样坏──除非您敢保证不会再使用其它的设备,否则您最终还是要面对这个问题。9 Y- O h3 b' b4 W7 z2 m' t6 S' d
. {8 b. Z3 ~/ u
仿真器和模拟器都能以Debug和 Release方式运行。仿真器应用程序通过运行不同的 ROM 实现上述两种方式,而对于模拟器,则需要下载不同版本的模拟器:针对各种 OS 版本进行调试和发布模拟器。在您大部分的开发中,最好选择Debug配置:它将帮助您尽早地先于顾客发现问题,并能有效地表明将来发生兼容性问题的可能性。
- g2 X: X6 z3 b* M1 v" J
, O4 i4 q- R" r9 R3 b+ T要下载仿真器,请访问 http://www.palmos.com/dev/tools/emulator,您也可以在其中找到有关获得 ROM 的指导说明。要查找关于模拟器的信息,请访问 http://www.palmos.com/dev/tools/simulator/,请务必同时使用这两者,从而能够得到一个更高性能的软件。& Y$ K K9 k; t- e' q: s& y0 S
9 F/ c9 C' G4 a: B: S
David Fedor 是 PalmSource 公司的开发商体系结构和错误调试部的总监,自 1997以来,他一直从事帮助 Palm OS 程序员的工作。 |
|