當(dāng)前位置:首頁 > 嵌入式 > 嵌入式軟件
[導(dǎo)讀] 一、模擬器模擬器(emulator)是PB的一部分。專用于調(diào)試在PB下創(chuàng)建的內(nèi)核及應(yīng)用程序。模擬器能夠在PC下模擬Windows CE的物理平臺。但實(shí)際上它只不過是一個運(yùn)行在CPU Ring

 一、模擬器

模擬器(emulator)是PB的一部分。專用于調(diào)試在PB下創(chuàng)建的內(nèi)核及應(yīng)用程序。模擬器能夠在PC下模擬Windows CE的物理平臺。但實(shí)際上它只不過是一個運(yùn)行在CPU Ring 3級別的用戶程序。所以它的運(yùn)行速度要比正常的物理平臺要慢。模擬器僅支持x86平臺,它只能調(diào)試基于"Emulator:x86"的內(nèi)核和所有用x86 指令集編譯的程序。模擬器有很大的限制,這些限制使它只能運(yùn)行簡單的應(yīng)用程序。但是有一點(diǎn)是好的,操作系統(tǒng)的大多數(shù)API對于任何CPU而言都是相同的??紤]到不受CPU類型影響的簡單程序,還是可以在模擬器上調(diào)試的。在實(shí)際開發(fā)中我只用模擬器調(diào)試軟件的界面。如果你想學(xué)習(xí)PB,用它來創(chuàng)建內(nèi)核而又沒有實(shí)際的物理平臺來調(diào)試,那么模擬器非常適合。但模擬器的限制也非常多,所以即使你在模擬器下調(diào)試過所有能夠調(diào)試的內(nèi)核特征(feature,或者稱組件),你掌握的也不過是冰山一角。在這里順便說一句閑話:PB包含的知識量和Windows CE本身的知識量加起來好比是浩瀚的海洋,比用EVC開發(fā)軟件的知識量大的多。所以如果你只會用EVC開發(fā)幾個軟件,那你仍然是Windows CE專業(yè)的一年級學(xué)生。

圖一 模擬器

關(guān)于模擬器的硬件限制:(摘自Windows CE幫助)

僅能模擬DEC 2114x 網(wǎng)卡驅(qū)動來提供網(wǎng)絡(luò)支持,其它網(wǎng)卡驅(qū)動不支持。僅能模擬FLAT顯示驅(qū)動,其它顯示驅(qū)動不支持。不支持USB設(shè)備不支持PC卡、硬盤、CF卡。不支持FAT、CDFS、DVD文件格式。不支持IEEE1394設(shè)備。微軟推薦的使用模擬器的開發(fā)平臺的配置:

1 GHZ CPU384 MB 系統(tǒng)內(nèi)存500 MB 可用硬盤空間

二、創(chuàng)建內(nèi)核并下載到模擬器上

為了測試遠(yuǎn)程調(diào)試工具,我們必須先使用PB v4.1創(chuàng)建一個內(nèi)核:

使用新內(nèi)核向?qū)?chuàng)建內(nèi)核:單擊PB的"New Platform",在"step 2"的"Available BSPs"中選擇"EMULATOR:X86",接著在"step 3"的"Available configurations"中選擇一個預(yù)定義的內(nèi)核配置,這些預(yù)定義的內(nèi)核配置具有針對性。在這里我們選擇"Internet Appliance"。注意:有些預(yù)定義的內(nèi)核配置附帶了外殼程序,有些沒帶。選擇之后,填寫工程名(例如Internet)和工程的保存路徑。默認(rèn) "step 4"的選項(xiàng),在"step 5"中去掉所有復(fù)選框。因?yàn)槲覀冎灰獌?nèi)核和外殼就行了。同樣去掉"step 6"中所有復(fù)選框。最后一步單擊"Done"按鈕。編譯這個新內(nèi)核:在菜單"Platform"-"Settings"-"Environment"中,單擊"New",在彈出對話框中添加變量名"IMGRAM64"和值"1"。然后單擊"Build"-"Build Platform"開始編譯。具體編譯的時間和你的機(jī)器配置有很大關(guān)系。配置模擬器:編譯成功后,單擊"Target"-"Configure Remote Connection",在彈出的對話框中找到"Download"下拉框,選擇"Emulator",單擊后面的"Configure",在彈出的對話框中設(shè)置分辨率為800 X 600或640 X 480。系統(tǒng)內(nèi)存設(shè)置為64MB。單擊"OK"后,在"Kernel"下拉框中選擇"Emulator"。單擊"OK"。啟動模擬器:單擊"Target"-"Download Initialize"。等待一會,模擬器就出來了??梢钥吹綐?biāo)準(zhǔn)外殼的界面,也就是桌面。在PB中編寫一個應(yīng)用程序并下載到模擬器:

在打開了內(nèi)核工程的前提下(如果剛打開PB,先打開一個內(nèi)核工程)。單擊PB菜單"File"-"New Project or FIle"。余下的步驟我就不用多說了。和EVC一樣,添個工程名就可以編碼了。只是沒有MFC、ATL的支持。在這里選擇一個顯示"hello world"的SDK程序。然后單擊"Build"-"Build All"編譯程序。我一般不在PB下開發(fā)軟件。麻煩!在模擬器已經(jīng)打開的前提下,單擊"Target"-"Run Programs",找到你的程序名,再單擊"Run"。在模擬器上就可以看到你的程序了。關(guān)閉操作:先關(guān)閉模擬器。再單擊"Target"-"Disconnect"。

三、遠(yuǎn)程調(diào)試工具

遠(yuǎn)程調(diào)試工具用于在開發(fā)平臺與實(shí)際平臺間執(zhí)行一些調(diào)試工作。利用遠(yuǎn)程調(diào)試工具可以在開發(fā)平臺運(yùn)行,得到實(shí)際平臺上的文件、監(jiān)視實(shí)際平臺上進(jìn)程或線程的狀況、測試實(shí)際平臺上應(yīng)用程序的性能等。一部分遠(yuǎn)程調(diào)試工具是我們在開發(fā)應(yīng)用程序時常用的,還有一部分是開發(fā)內(nèi)核時常用的。對于不常用的遠(yuǎn)程調(diào)試工具,我在這里只給予簡單的介紹。

遠(yuǎn)程調(diào)用評測程序(Remote Call Profiler)

遠(yuǎn)程調(diào)用評測程序包含評測和分析工具。利用圖形圖像顯示出你的代碼中算法的效率或者占用資源情況。遠(yuǎn)程調(diào)用評測程序包含一系列接口函數(shù)。在你想要評測的代碼中調(diào)用這些接口函數(shù),然后運(yùn)行你編寫的程序。遠(yuǎn)程調(diào)用評測程序就能夠接收你編寫的程序的數(shù)據(jù)并記錄。最后利用圖形顯示出來。顯然這個工具我們并不常使用。尤其是開發(fā)非實(shí)時性內(nèi)核和軟件,加上目前的嵌入式微處理器處理速度已經(jīng)很快了,對于一個軟件性能的評測的需求就淡化了。當(dāng)然,你要是愿意,覺得有必要也可以研究一下它的接口函數(shù),然后測一下。我目前可沒這個時間。微軟提供了例子程序"hello"。如果你把Windows CE安裝在C盤,那么路徑為:

"C:Program FilesCommon FilesMicrosoft SharedWindows CE ToolsPlatmansdkwce410sampleshello"。

我編譯了此程序并測試了一下。遠(yuǎn)程調(diào)用評測程序顯示的圖形如圖2所示。[!--empirenews.page--]

圖二 評測圖像截圖

遠(yuǎn)程文件瀏覽程序(Remote File Viewer)

遠(yuǎn)程文件瀏覽程序是最常用、最易操作的工具之一。它的作用就是向?qū)嶋H平臺導(dǎo)入或?qū)С鑫募<偃缥以谡{(diào)試一個顯示位圖的程序。位圖允許用戶自行選擇。那么要在模擬器下調(diào)試,就必須將位圖文件先導(dǎo)入到模擬器中。

模擬器打開后,運(yùn)行遠(yuǎn)程文件瀏覽程序,先彈出一個對話框,要你選擇訪問哪個平臺。如圖3所示。

圖三 平臺選擇對話框

選擇"Default Device"后。主窗口就顯示出來了。如圖4所示。左邊目錄數(shù)列出的是模擬器運(yùn)行的內(nèi)核的所有目錄。右邊是指定目錄下的文件。工具欄最右邊是導(dǎo)入和導(dǎo)出按鈕。這里的導(dǎo)入和導(dǎo)出是相對開發(fā)平臺而言的。接上個例子所說,要將一個位圖文件傳到模擬器中。先單擊導(dǎo)出按鈕(上箭頭),在彈出的對話框中選擇一個位圖文件,確定后,這個文件就出現(xiàn)在遠(yuǎn)程文件瀏覽程序的右邊文件窗口中了。導(dǎo)入也簡單,先選擇一個文件,再單擊導(dǎo)入按鈕,再選擇路徑,保存即可。

圖四 遠(yuǎn)程文件瀏覽程序截圖3、遠(yuǎn)程堆查看程序(Remote Heap Walker)

顯然“Walker”不能翻譯成“查看”。你愿意怎么翻譯就怎么翻譯吧。在這里我就叫查看了,這樣容易理解。從名字就可以看出它是用來查看操作系統(tǒng)中每個進(jìn)程使用的堆的情況。什么是堆就不用我說了吧!堆大家都了解,但是CE下關(guān)于堆的知識也值得一說。以后我會有專門講述CE下進(jìn)程、線程、和內(nèi)存管理方面的文章發(fā)表,那時會說的非常詳細(xì)。利用“遠(yuǎn)程堆查看程序”能夠查看到:

內(nèi)核中正運(yùn)行的進(jìn)程的名字、ID、及使用的所有的堆的ID。如圖1所示進(jìn)程的一個堆中的首地址、結(jié)束地址、及標(biāo)志(Fixed、Free)堆中每塊(Block)的實(shí)際內(nèi)容

圖 1 進(jìn)程列表

查看和使用這個工具是很簡單的事情。不過前提是你對堆有所了解。下面我說說和這個工具有關(guān)的涉及到堆的知識。CE下每個進(jìn)程啟動時,系統(tǒng)會自動分配 192KB的局部堆給這個進(jìn)程。要是不夠你就通過調(diào)用堆管理函數(shù)自己再分配自定義大小的堆。自己分配的堆,包括系統(tǒng)給你分配的堆,都由ID來標(biāo)識。如圖中所示的Heap ID。進(jìn)程ID和進(jìn)程名就不用說了。后面的“Flag”只有一個值“HF32_DEFAULT”,表示系統(tǒng)默認(rèn)分配的堆。圖中的“device.exe”,有四個都一樣。但從進(jìn)程ID就可以看出這是一個進(jìn)程,而不是一個應(yīng)用程序的四個實(shí)例。因?yàn)榱斜硎且远褳閱挝唬? “device.exe”分配了四個堆,就顯示了四個。

雙擊列表中任何一項(xiàng),彈出這個堆的包含的塊的列表。列出塊的首地址、大小、標(biāo)志。我們分配了一個堆,就可以在堆中分配數(shù)組、結(jié)構(gòu)等。這個塊就指每個分配的元素。標(biāo)志中“Fixed”表示不能釋放這個塊占據(jù)的內(nèi)存空間。而“Free”則相反,表示能夠釋放這個塊占據(jù)的內(nèi)存空間。看到這,也許你會有疑問,標(biāo)志給誰看的?由誰釋放啊?這涉及到內(nèi)存的管理,內(nèi)核的OOM組件。在以后的文章中我會做詳細(xì)的解釋。

再單擊每個塊,在彈出的列表中就可以看到這個塊的具體數(shù)據(jù)了(用ASCII表示)。

4、遠(yuǎn)程內(nèi)核跟蹤程序(Remote Kernel Tracker)

遠(yuǎn)程內(nèi)核跟蹤程序用于跟蹤實(shí)際平臺內(nèi)核的執(zhí)行情況,一般使用它跟蹤內(nèi)核的啟動情況,搜集相關(guān)數(shù)據(jù)并在開發(fā)平臺上以圖表形式顯示出來。如圖2所示。這個程序能夠跟蹤所有的進(jìn)程和進(jìn)程中的所有線程。從開始運(yùn)行起跟蹤,跟蹤結(jié)束的時間由數(shù)據(jù)接收緩沖區(qū)的大小決定。緩沖區(qū)的大小從1MB到100MB,由用戶自己設(shè)定。跟蹤內(nèi)容為進(jìn)程的運(yùn)行、不運(yùn)行,線程的運(yùn)行、阻塞、睡眠。還有在線程中所有發(fā)生的同步事件。在此程序的右邊有所有能夠跟蹤的事件對應(yīng)的圖標(biāo)。

要跟蹤一個內(nèi)核的啟動情況(啟動后也能使用這個程序跟蹤所有進(jìn)程、線程),先要使你要跟蹤的內(nèi)核具有幾個特性。在PB菜單“Platform”- “Settings”-“Build Options”中復(fù)選“Enable Event Tracking During Boot”和“Enable Profiling”。然后重新編譯整個內(nèi)核。(注意PB在編譯時可能提示產(chǎn)生錯誤,如果出現(xiàn)這種情況,那就重建內(nèi)核)

編譯成功后,先打開遠(yuǎn)程內(nèi)核跟蹤程序,在彈出的平臺選擇對話框中(上篇文章中包含此圖)按“OK”,這時立刻單擊PB的 “Download/Initialize”調(diào)出模擬器。等待一會遠(yuǎn)程內(nèi)核跟蹤程序就將整個啟動過程中發(fā)生的所有情況記錄并顯示出來。哪個時間段線程運(yùn)行或睡眠或阻塞,包括發(fā)生了哪個中斷都記錄下來。缺點(diǎn)就是數(shù)據(jù)量太大。這個程序提供了查找功能和過濾功能。查找功能可以查找你想要找的事件,而過濾功能可以讓此程序只記錄你想要的事件。最后還可以保存這些記錄數(shù)據(jù)。保存到擴(kuò)展名為“.clg”的文件中。

這個工具我只能講這么多了,平時很少用到。

圖 2 跟蹤情況截圖

5、遠(yuǎn)程性能監(jiān)視程序(Remote Performance Monitor)

這個程序的界面大家一定很熟悉了。和其它Windows操作系統(tǒng)中附帶的性能監(jiān)視器界面非常相似。如圖3所示。操作也幾乎一樣。

[!--empirenews.page--]

圖3 性能監(jiān)視程序截圖

它能夠監(jiān)視Remote Access Server (RAS)、Internet Control Message Protocol (ICMP)、TCP/IP、User Datagram Protocol (UDP)、Memory、Battery、System、Process、Thread。

6、遠(yuǎn)程進(jìn)程瀏覽程序(Remote Process Viewer)

此程序共三個窗口,分別顯示當(dāng)前內(nèi)核中所有進(jìn)程、進(jìn)程中的線程、及進(jìn)程中所有加載的DLL。在顯示進(jìn)程的窗口中,分別顯示進(jìn)程名、進(jìn)程ID、基本優(yōu)先級級別、擁有的線程總數(shù)、基地址、訪問鍵值、主窗口名。在顯示線程的窗口中,分別顯示線程ID、當(dāng)前進(jìn)程ID、線程優(yōu)先級、訪問鍵。在顯示DLL模塊的窗口中,分別顯示模塊名、模塊ID、當(dāng)前進(jìn)程使用計(jì)數(shù)、全局使用計(jì)數(shù)、基地址、大小、模塊句柄、路徑。這里要說明的是線程窗口中的“當(dāng)前進(jìn)程ID”。當(dāng)前進(jìn)程 ID會有不相同的時候,奇怪!線程窗口應(yīng)該顯示當(dāng)前指定進(jìn)程下的所有線程,怎么會有不同的進(jìn)程ID呢?因?yàn)镃E幫助中什么都沒說,所以請?jiān)试S我設(shè)想一下:比如“explorer.exe”,它包含的線程其中就有兩個在“當(dāng)前進(jìn)程ID”中顯示為進(jìn)程“gwes.exe”,“gwes.exe”為圖形、窗口、事件子系統(tǒng)。它負(fù)責(zé)圖形和窗口以及窗口消息。“explorer.exe”的線程在顯示窗口、收發(fā)消息時調(diào)用“Coredll.dll”(以后會具體講解此DLL),這個DLL調(diào)用圖形、窗口、事件模塊。這些模塊實(shí)際上是驅(qū)動程序(DLL),由gwes.exe來加載、管理這些DLL。所以顯示當(dāng)前進(jìn)程為 “gwes.exe”。目前只能這么解釋了。

圖4 進(jìn)程瀏覽程序截圖

7、遠(yuǎn)程注冊表編輯程序(Remote Registry Editor)

此程序和其它Windows 操作系統(tǒng)下的注冊表編輯器非常相似。但它能夠顯示、編譯開發(fā)平臺下的注冊表和實(shí)際平臺下的注冊表。如圖5所示。具體操作我就不多說了。CE下注冊表的限制我也曾說過了。

圖5 注冊表編輯器截圖

8、遠(yuǎn)程消息監(jiān)視程序(Remote Spy)

這個程序和VC下附帶的工具spy非常相似。能夠列出所有實(shí)際平臺下的窗口和窗口消息。我想這個程序也不用我多說了吧。熟悉VC下的工具,就能操作這個工具。界面如圖6所示。

圖6 消息監(jiān)視界面截圖

9、遠(yuǎn)程系統(tǒng)信息(Remote System Information)

這個工具能夠查看實(shí)際平臺的系統(tǒng)信息,包括硬件和軟件的信息。

圖7 系統(tǒng)信息截圖

10、遠(yuǎn)程屏幕截圖程序(Remote Zoom-in)

此工具能夠截取實(shí)際平臺屏幕圖像。這個工具最適合寫說明書了。假如一個產(chǎn)品要推向市場,那說明書或演示程序必須準(zhǔn)備好。用這個程序截圖放到說明書或演示程序中。截圖單擊“File”-“New Bitmap”。這個程序的界面我就不給出了。

總結(jié)

10個遠(yuǎn)程工具為我們開發(fā)內(nèi)核和應(yīng)用程序提供了很大的幫助。顯然有些工具很少用,有些工具常用。對于注冊表編輯器,在一些嵌入式網(wǎng)站有源碼和程序可下載。把注冊表編輯器帶到內(nèi)核中運(yùn)行會更有效,更節(jié)省時間。這10個工具中,最帥的就是內(nèi)核跟蹤程序了,通過內(nèi)核跟蹤程序,整個內(nèi)核啟動過程清晰可見。還可以用它監(jiān)視你的應(yīng)用程序。有一點(diǎn)還要說明:這10個遠(yuǎn)程調(diào)試工具我是在模擬器上試驗(yàn)的。如果要調(diào)試實(shí)際平臺,必須先通過串口、網(wǎng)卡把開發(fā)平臺和實(shí)際平臺連接起來。在“Target”-“Configure Remote Connection”中設(shè)置。實(shí)際設(shè)備最好有網(wǎng)卡,串口的速度太慢了。這方面請參考幫助文件,幫助文件中說的非常詳細(xì)了。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉