專利名稱:在視窗環(huán)境中自動快速測試手持式電腦的存儲器的方法
技術(shù)領(lǐng)域:
本發(fā)明是關(guān)于一種在視窗環(huán)境中自動快速測試手持式電腦的存儲器的方法,尤指一種在安裝有微軟(Microsoft)公司W(wǎng)inCE操作系統(tǒng)的手持式電腦(H/PC)上,自動對其上安裝的隨機存取存儲器進行快速測試的方法。
目前在一般手持式電腦中,均安裝有微軟(Microsoft)公司的WinCE操作系統(tǒng),該操作系統(tǒng)可將手持式電腦的隨機存取存儲器(RAM)分為程序存儲區(qū)(Program Memory)及對象存儲器(Object Store)兩部份,其中程序存儲區(qū)是用以存儲在該手持式電腦上執(zhí)行的應(yīng)用程序,而對象存儲器則是用以存儲該操作系統(tǒng)的文件系統(tǒng)(File System)。在現(xiàn)有的相關(guān)技術(shù)中,對于對象存儲器進行測試的方法,可分為兩種(1)利用文件系統(tǒng)對該對象存儲器的存儲器進行讀/寫及比較測試,由于,在該方法中,文件系統(tǒng)在進行讀/寫動作時,需先進行定位及分配緩存的動作,其讀/寫速度較在該程序存儲區(qū)的讀/寫速度慢,故該測試方法的速度自然較慢;(2)在WinCE操作系統(tǒng)的控制面板中,先將該對象存儲器的存儲器大小設(shè)定最小,再對其進行測試,在測試完畢,再以手動方式將該存儲器大小恢復(fù)成正常,由于,在該測試方法中,需要手動操作,故其操作程序較麻煩,且操作速度也較慢。
有鑒于在傳統(tǒng)手持式電腦中,對其對象存儲器進行測試的方法,操作程序較麻煩,且速度較慢的缺點,發(fā)明人根據(jù)多年的實際經(jīng)驗及研究心得,研發(fā)出本發(fā)明,本發(fā)明是提供一種可在WinCE操作系統(tǒng)的環(huán)境中,自動將對象存儲器的大小設(shè)置為最小,使該對象存儲器中的自由存儲器全部自動轉(zhuǎn)變?yōu)槌绦虼鎯^(qū),并在對該手持式電腦的存儲器完成快速測試后,再自動將該對象存儲器恢復(fù)成測試前的初始值的方法。
本發(fā)明的一目的,是通過制作一自定義的動態(tài)鏈接庫,令該動態(tài)鏈接庫能將該操作系統(tǒng)的內(nèi)核層的函數(shù)引出,使其成為可被其用戶層調(diào)用的函數(shù)。
本發(fā)明的又一目的,是在利用該動態(tài)鏈接庫所提供的函數(shù),將該對象存儲器的大小自動設(shè)為最小,令該對象存儲器中的自由部份全部自動轉(zhuǎn)變?yōu)槌绦虼鎯^(qū),以達快速測試的目的,并在測試完畢后,自動將其恢復(fù)成測試前的初始值。
圖1是本發(fā)明的功能結(jié)構(gòu)示意圖;圖2是本發(fā)明的測試流程示意圖;圖3是本發(fā)明的恢復(fù)流程示意圖;圖4是本發(fā)明的一具體實施例的接口示意圖;圖5是本發(fā)明的實施例中存儲器的狀態(tài)示意圖;圖6是Visual C++所提供的Project Setting連接動態(tài)鏈接庫對話框的接口示意圖。
圖號說明應(yīng)用程序接口……101用戶層……102內(nèi)核層……103動態(tài)鏈接庫……104本發(fā)明中,由于手持式電腦在WinCE操作系統(tǒng)下,用以調(diào)節(jié)隨機存取存儲器中程序存儲區(qū)(Program Memory)及對象存儲器(ObjectMemory)大小的函數(shù),僅存在于其內(nèi)核層(Kernel)(103)中,其用戶層(102)則無法提供該等函數(shù)供應(yīng)用編程接口(101)(ApplicationProgramming Interface,簡稱API)使用,參閱圖1所示,因此,為能令手持式電腦自動調(diào)節(jié)對象存儲器的大小,本發(fā)明通過制作一自定義的動態(tài)鏈接庫(104),將其內(nèi)核層(103)的相關(guān)函數(shù)引出,成為能被用戶層(102)調(diào)用的函數(shù),如此,該應(yīng)用編程接口(101)不僅能夠直接調(diào)用該用戶層(102)的函數(shù),亦能通過該用戶層(102)間接調(diào)用該內(nèi)核層(103)的函數(shù),從而令手持式電腦自動完成調(diào)節(jié)隨機存取存儲器中程序存儲區(qū)及對象存儲器大小的功能。
本發(fā)明主要可分為下列三大步驟。
(一)制作一自定義的動態(tài)鏈接庫。
雖然,在WinCE操作系統(tǒng)下,其應(yīng)用編程接口并未提供調(diào)節(jié)隨機存取存儲器中程序存儲區(qū)及對象存儲器大小的函數(shù),但在WinCE操作系統(tǒng)的內(nèi)核層EDK(Embedded Developers Kit)中,則提供有獲得對象存儲器大小及設(shè)置對象存儲器大小的函數(shù),其函數(shù)名稱分別為GetSystem Memory Division 0和Set System Memory Division 0,本發(fā)明是通過制作一自定義的動態(tài)鏈接庫,令該鏈接庫的函數(shù)將該二函數(shù)Get System Memory 0及Set System Memory Division 0,分別將Get System Memory Division 0及Set System Memory Division 0引出,供應(yīng)用編程接口調(diào)用。
(二)連接動態(tài)鏈接庫本發(fā)明在實際實施時,可利用Visual C++語言所提供的項目設(shè)定(Project Setting)對話框,參閱第6圖所示,將該動態(tài)鏈接庫的名稱寫入該對話框,以達成連接該動態(tài)鏈接庫的目的,且令該應(yīng)用程序接口在測試程序進行中,可調(diào)用該動態(tài)鏈接庫中的該二函數(shù),從而間接調(diào)用該內(nèi)核層所提供的二函數(shù)Get System Memory Division 0和SetSystem Memory Division 0。
(三)利用動態(tài)鏈接庫進行自動測試本發(fā)明在利用該動態(tài)鏈接庫對隨機存取存儲器進行自動測試前,參閱圖2所示,是先通過調(diào)用函數(shù)Get system Memory 0,獲得對象存儲器的大小值,并保存該存儲區(qū)的大小值(201),且建立一用以恢復(fù)該對象存儲器大小的恢復(fù)線程,再將該對象存儲器的初始值賦予該恢復(fù)程序(202),令該恢復(fù)程序一直處于等待接收一恢復(fù)信號的狀態(tài)。
本發(fā)明在對存儲器進行測試時,是通過調(diào)用函數(shù)Set System Memory0,將對象存儲器的自由存儲器設(shè)為最小(203),此時,隨機存取存儲器的全部自由空間均轉(zhuǎn)變?yōu)槌绦虼鎯^(qū),故其讀/寫速度較快,且可快速完成全部自由存儲器的測試;然后,通過保存并提高當前測試程序的優(yōu)先級(204),且保存較多的存儲器(205),以防系統(tǒng)及后續(xù)程序占用存儲器;并針對每一存儲器單元,寫入一數(shù)值0×55(206)后,再逐一讀取各該存儲器單元(207),以進行測試,判斷各該存儲器單元的存儲值是否等于該數(shù)值0×55(208)?若不相等,則賦予測試結(jié)果錯誤的標記(214),并結(jié)束測試,否則,繼續(xù)重復(fù)前述測試(209)。
在完成數(shù)值0×55的測試,則再對各存儲器單元寫入另一數(shù)值0×AA(210),再逐一讀取各該存儲器單元(211),以判斷各該存儲器單元的存儲值是否等于0×AA(212)?若不相等,則賦予測試結(jié)果錯誤的標記(214),并結(jié)束測試;否則,繼續(xù)重復(fù)前述測試(213);測試結(jié)束后,再恢復(fù)當前測試程序的優(yōu)先級(215),并對用以恢復(fù)對象存儲器大小的恢復(fù)線程發(fā)出一恢復(fù)信號,令該恢復(fù)線程將該對象存儲器復(fù)原回初始值(216),然后判斷該恢復(fù)線程是否結(jié)束(217)?若尚未結(jié)束,則令自己(測試程序)進入睡眠狀態(tài)(218),在一預(yù)定時間后,再判斷該恢復(fù)程序是否結(jié)束?否則,結(jié)束整個測試程序。
參閱圖3所示,本發(fā)明為防止系統(tǒng)及后續(xù)程序分配存儲器,占用了程序存儲區(qū)的邊界單元,從而阻止對該對象存儲器的初始值的恢復(fù),該恢復(fù)程序是采用逐步逼近法,以恢復(fù)該對象存儲器的初始值,該逐步逼近法在接收到恢復(fù)信號(301)后,將保存并提高當前測試程序的優(yōu)先級(302),并調(diào)用函數(shù)Set System Memory 0,設(shè)定該對象存儲器的大小為接近其初始值(303),并判斷是否設(shè)定成功(304)?若是,則繼續(xù)判斷該設(shè)定值是否恢復(fù)到該對象存儲器的初始值(305)?若是,則賦予設(shè)定成功的標記(306),并恢復(fù)當前測試程序的優(yōu)先級(311);否則,令該設(shè)定值更接近初始值(307),并繼續(xù)判斷是否設(shè)定成功?若仍設(shè)定不成功,則判斷恢復(fù)時間是否已過期(308)?若未過期,則將恢復(fù)程序設(shè)定為睡眠狀態(tài)(309),若已過期,則賦予設(shè)置錯誤的標記(310),并于恢復(fù)對象存儲器的大小后,再恢復(fù)當前線程的優(yōu)先級(311),并結(jié)束該恢復(fù)程序。
在本發(fā)明的一具體實施例中,參閱圖4所示,當本發(fā)明在安裝有WinCE操作系統(tǒng)的手持式電腦中,對其隨機存取存儲器(RAM)進行測試時,是先檢測其對象存儲器及程序存儲區(qū)的初始值,此時,其隨機存取存儲器的狀態(tài)是初始狀態(tài),參閱圖5A所示,其中程序存儲區(qū)的讀/寫速度較快,而對象存儲器的讀/寫速度則較慢,然后,并調(diào)用本發(fā)明自定義的動態(tài)鏈接庫中所提供的函數(shù),將該對象存儲器的大小設(shè)為最小,參閱圖5B所示,如此,該隨機存取存儲器中的全部自由存儲器均將轉(zhuǎn)變成程序存儲區(qū),此時,其測試速度自然較快;然后,再對分配存儲器進行測試,參閱圖4所示,其中標號a所指向的區(qū)域是用以顯示測試進度;在本發(fā)明完成對隨機存取存儲器的測試后,再調(diào)用該動態(tài)鏈接庫所提供的函數(shù),恢復(fù)對象存儲器的初始值,此時,隨機存取存儲器的狀態(tài)將如第5-3圖所示。
由以上所述可知,本發(fā)明在WinCE操作的環(huán)境中,可通過制作一自定義的動態(tài)鏈接庫,令該動態(tài)鏈接庫能將其內(nèi)核層的函數(shù)引出,供用戶層調(diào)用,自動將對象存儲器的大小設(shè)定最小,并令該對象存儲器中的全部自由記憶自動轉(zhuǎn)變?yōu)槌绦虼鎯^(qū),進行測試,在測試完畢后,自動將該對象存儲器恢復(fù)成測試前的初始值,由于,在前述測試程序中,該程序存儲區(qū)的讀/寫速度較文件系統(tǒng)為快,故可快速完成對全部自由存儲器的測試。
以上所述,僅是本發(fā)明的一優(yōu)選實施例,但,本發(fā)明所要求的范圍,并不局限于此,本領(lǐng)域技術(shù)人員,依據(jù)本發(fā)明所公開的技術(shù)內(nèi)容,可輕易進行其他等效變化,都應(yīng)屬不脫離本發(fā)明的保護范疇。
權(quán)利要求
1.一種在視窗環(huán)境中自動快速測試手持式電腦的存儲器的方法,該方法是在一手持式電腦的WinCE操作系統(tǒng)的環(huán)境下,通過制作一自定義的動態(tài)鏈接庫,令該動態(tài)鏈接庫將其內(nèi)核層的函數(shù)引出,供其用戶層調(diào)用。
2.如權(quán)利要求1所述的一種在視窗環(huán)境中自動快速測試手持式電腦的存儲器的方法,其中該動態(tài)鏈接庫是將該WinCE操作系統(tǒng)的內(nèi)核層中用以提供獲得對象存儲器大小及設(shè)置對象存儲器大小的二函數(shù)引出,并分別與該鏈接庫的一函數(shù)相對應(yīng),供其用戶層調(diào)用。
3.如權(quán)利要求1或2所述的一種在視窗環(huán)境中自動快速測試手持式電腦的存儲器的方法,其中該動態(tài)鏈接庫能將其內(nèi)核層的函數(shù)引出,供其用戶層調(diào)用,以自動將一對象存儲器的大小設(shè)置為最小,并令該對象存儲器中的全部自由存儲器自動轉(zhuǎn)變?yōu)橐怀绦虼鎯^(qū),且在對該等存儲器進行自動測試完畢后,自動將該對象存儲器恢復(fù)成測試前的初始值。
4.如權(quán)利要求3所述的一種在視窗環(huán)境中自動快速測試手持式電腦的存儲器的方法,其中該WinCE操作系統(tǒng)的內(nèi)核層中用以提供獲得對象存儲器大小的函數(shù)為Get System Memory Division 0,用以提供設(shè)置對象存儲器大小的函數(shù)為Set System Memory Division 0。
5.如權(quán)利要求4所述的一種在視窗環(huán)境中自動快速測試手持式電腦的存儲器的方法,其中在對該等存儲器連接自動測試前,該WinCE操作系統(tǒng)的用戶層可通過該動態(tài)鏈接庫調(diào)用Get System MemoryDivision 0函數(shù),以獲得對象存儲器的大小,并保存該存儲區(qū)的大小值,建立一用以恢復(fù)對象存儲器大小的恢復(fù)程序,再將對象存儲器的初始大小值賦予該恢復(fù)程序,令該恢復(fù)程序一直處于等待接收一恢復(fù)信號的狀態(tài)。
6.如權(quán)利要求4所述的一種在視窗環(huán)境中自動快速測試手持式電腦的存儲器的方法,其中在對該等存儲器進行自動測試時,該WinCE操作系統(tǒng)的用戶層可通過該動態(tài)鏈接庫調(diào)用Set System MemoryDivision 0函數(shù),將該對象存儲器設(shè)為最小,并將全部自由存儲器均轉(zhuǎn)變成程序存儲區(qū),以快速完成對全部自由存儲器的測試。
7.如權(quán)利要求6所述的一種在視窗環(huán)境中自動快速測試手持式電腦的存儲器的方法,其中在將該隨機存取存儲器的全部自由存儲器均變成程序存儲區(qū)后,保存并提高當前測試程序的優(yōu)先級,請求分配較多的存儲器,再針對每一存儲器單元寫入一數(shù)值后,再逐一讀取各存儲器單元,以進行測試,判斷該等存儲器單元的存儲值是否等于該數(shù)值,在測試結(jié)束后,恢復(fù)當前測試程度的優(yōu)先級,并對該恢復(fù)程序發(fā)出一恢復(fù)信號,令該恢復(fù)程序?qū)ο蟠鎯ζ鞯拇笮』謴?fù)回初始值,且結(jié)束測試。
8.如權(quán)利要求7所述的一種在視窗環(huán)境中自動快速測試手持式電腦的存儲器的方法,其中若各該存儲器單元的存儲值不等于該數(shù)值,則賦予測試結(jié)果錯誤的標記,并結(jié)束測試。
9.如權(quán)利要求7或8所述的一種在視窗環(huán)境中自動快速測試手持式電腦的存儲器的方法,其中寫入各存儲器單元的數(shù)值可為0×55。
10.如權(quán)利要求7或8所述的一種在視窗環(huán)境中自動快速測試手持式電腦的存儲器的方法,其中寫入各存儲器單元的數(shù)值可為0×AA。
11.如權(quán)利要求4到8任一項所述的一種在視窗環(huán)境中自動快速測試手持式電腦的存儲器的方法,其中該恢復(fù)程序在接收到一恢復(fù)信號后,將保存并提高當前測試程序的優(yōu)先級,并調(diào)用Set System MemoryDivision 0函數(shù),將對象存儲器的大小設(shè)定為接近其初始值,并判斷是否設(shè)定成功,若是,則繼續(xù)判斷該設(shè)定值是否恢復(fù)到對象存儲器的初始值,若是,則賦予設(shè)定成功的標記,并恢復(fù)當前測試程序的優(yōu)先級;否則,令該設(shè)定值更接近初始值,繼續(xù)判斷是否設(shè)定成功。
12.如權(quán)利要求11所述的一種在視窗環(huán)境中自動快速測試手持式電腦的存儲器的方法,其中若判斷對象存儲器的大小設(shè)定不成功,則判斷恢復(fù)時間是否已過期,若未過期,則將恢復(fù)程序設(shè)定為睡眠狀態(tài),若已過期,則賦予設(shè)定錯誤的標記,并于恢復(fù)對象存儲器的大小后,恢復(fù)測試程序的優(yōu)選級,并結(jié)束恢復(fù)程序。
全文摘要
本發(fā)明是一種在視窗環(huán)境中自動快速測試手持式電腦的存儲器的方法,該方法是在一WinCE操作系統(tǒng)的環(huán)境中,通過制作一自定義的動態(tài)鏈接庫,令該動態(tài)鏈接庫能將該操作系統(tǒng)的內(nèi)核層的函數(shù)引出,供其用戶層調(diào)用、自動將手持式電腦的對象存儲器設(shè)為最小,并使該對象存儲器中的自由存儲器全部自動轉(zhuǎn)變?yōu)槌绦虼鎯^(qū),對其進行測試,在測試完成后,再自動將該對象存儲器恢復(fù)成測試前的初始值,由于在本發(fā)明的測試程序中,該程序存儲區(qū)的讀/寫速度較文件系統(tǒng)為快,故可快速完成對全部自由存儲器的測試。
文檔編號G06F17/00GK1326152SQ00108990
公開日2001年12月12日 申請日期2000年5月25日 優(yōu)先權(quán)日2000年5月25日
發(fā)明者羅斌, 宋建福, 林光信 申請人:英業(yè)達股份有限公司