symbian模擬器和真機的區別

2021-04-22 17:58:09 字數 1308 閱讀 2304

模擬器是把symbian os核心移植到win32平台,大多數情況下模擬器環境和真機相似,但仍有以下區別,有些足以給開發者帶來不少麻煩。位元組對齊和記憶體限制將著重介紹。

1. 引導程式

真機上,首先執行乙個引導程式用來在啟動核心之前對一系列硬體初始化。模擬器就不需要進行初始化硬體而是直接啟動核心(執行epoc.exe)

2. 檔案系統支援

3. 浮點型別

symbian os通過treal32(c++ float型別)和treal64(c++ double型別)來支援浮點型,模擬器基於intel x86處理器,所以在硬體上支援這種浮點型別。而真機硬體不一定支援。當程式中大量使用浮點型函式的時候,你就需要注意由於真機沒有硬體支援額頭導致的效能上的巨大差距。

4. 機器位元組對齊

為了降低成本和能耗,arm採用32位 risc架構。因此32位的變數必須按32位機器位元組邊界對齊,換言之,其位址必須是4的倍數。舉個例子,

tint* p; // pointer to integers

...tint i=*p; // get from a pointer

這段**只有當p的位址是4的倍數時能正常工作,否則就會報訪問衝突錯誤。

一般來說,這種限制對程式設計師是透明的,因為結構體和類成員會被編譯器自動補齊。而當碰到下面這樣的**時,位元組對齊的限制就要注意了。

ttext8 array[200];

for (tint i=0; i<=196; i++)

這樣的**在模擬器工作沒問題,在真機上編譯也沒問題,但在迴圈到第2次時發生訪問衝突,因為p的位址比4的倍數大1.

為了避免這樣的問題,你可以這樣寫:

ttext8 array[200];

for (tint i=0; i<196; i++)

5.記憶體限制

模擬器預設總的堆容量為64mb,這個值可用megabytesoffreememory關鍵字來設定。可以用mmp檔案的epocheapsize關鍵字來設定程式的預設堆的初始和最大尺寸,

在真機上程式預設的棧大小只有8k,而模擬器上棧可以大到windows的上限。因為程式在模擬器上濫用棧空間可能沒問題,但在真機就會報棧溢位kern –exec 3錯誤。在mmp裡使用epocstacksize關鍵字設定程式使用的棧大小(模擬器不支援該關鍵字)

6. 程序模擬

7. 時間表

8. 串列埠

9. 計時器

參考文件:» symbian os v9.2 » symbian os tools and utilities » emulator » emulator guide » emulator/native platform differences

模擬器,真機區別

cpp view plain copy if ui user inte ce idiom uiuserinte ceidiompad else 請注意,如果你在建立專案的時候只支援一種裝置型別,上面的語句將始終返回選定ios裝置型別,如專案只支援iphone,即使在ipad上執行,前述的 依然返回i...

優化Symbian模擬器

文 peter jiang 譯自newlc.1.關閉你的病毒監控軟體 它們會逐一掃瞄你使用的檔案 2.阻止模擬器將除錯資訊寫到你的硬碟上 如果你看看你的 temp目錄,你將會看到乙個叫做 epocwind.out 的檔案.隨著時間的進展 這個檔案將不斷的變大並讓你的模擬器越來越慢 如果你刪除它 然後...

優化Symbian模擬器

1.關閉你的病毒監控軟體 它們會逐一掃瞄你使用的檔案 2.阻止模擬器將除錯資訊寫到你的硬碟上.如果你看看你的temp目錄,你將會看到乙個叫做epocwind.out的檔案.隨著時間的進展,這個檔案將不斷的變大並讓你的模擬器越來越慢.如果你刪除它,然後重新建立乙個,並把它設為唯讀.模擬器就不再試著把除...