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