專利名稱:一種應(yīng)用程序的開發(fā)調(diào)試方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明屬于軟件程序開發(fā)調(diào)試領(lǐng)域,尤其涉及一種應(yīng)用程序的開發(fā)調(diào)試方 法及系統(tǒng)。
背景技術(shù):
閃存(Flash Memory)由于具有非易失性、電可擦除性、可重復(fù)編程以及 高密度、低功耗等特點,被廣泛地應(yīng)用于手機、MP3、數(shù)碼相機、筆記本電腦 等數(shù)據(jù)存儲設(shè)備中。
目前幾乎所有的嵌入式系統(tǒng)都以閃存作為存儲設(shè)備,為了節(jié)約硬件成本應(yīng) 用廠家不僅把程序而且把用戶數(shù)據(jù)一起寫到閃存中去,為了實現(xiàn)掉電保護,應(yīng) 用程序不得不時常對閃存內(nèi)容進行檢測,以便盡可能的恢復(fù)原來的用戶數(shù)據(jù)。
目前,大都釆用真實的閃存開發(fā)調(diào)試這些應(yīng)用程序,在嵌入式系統(tǒng)上采用 仿真器將應(yīng)用程序下載到具體的芯片系統(tǒng)上,通過讀寫真實的閃存發(fā)現(xiàn)應(yīng)用程 序中的問題,然而由于硬件的限制導(dǎo)致閃存內(nèi)容的讀寫很隄,嚴重影響了開發(fā) 進度。此外,不僅下載程序的速度慢,更嚴重的問題是閃存的讀寫、擦除速度 慢,調(diào)試不方便,很多嵌入式調(diào)試工具沒有比較友好的偵錯(debug)界面,只 能通過大量的printf語句輸出需要的信息。而且,必要的嵌入式平臺和與平臺 配套的嵌入式調(diào)試工具往往要花費比較高的成本,而數(shù)量不足的調(diào)試設(shè)備又嚴 重影響嵌入式應(yīng)用程序的開發(fā)進度。
發(fā)明內(nèi)容
本發(fā)明實施例的目的在于提供一種應(yīng)用程序的開發(fā)調(diào)試方法,旨在解決現(xiàn) 有技術(shù)采用真實閃存開發(fā)調(diào)試應(yīng)用程序速度慢的問題。
本發(fā)明實施例是這樣實現(xiàn)的, 一種應(yīng)用程序的開發(fā)調(diào)試方法,包括下述步
驟在內(nèi)存中分配用于模擬閃存的內(nèi)存空間;應(yīng)用程序與內(nèi)存空間進行數(shù)據(jù)交 互實現(xiàn)開發(fā)調(diào)試。
本發(fā)明實施例的另一目的在于提供一種應(yīng)用程序的開發(fā)調(diào)試系統(tǒng),包括 內(nèi)存空間分配模塊,用于在內(nèi)存中分配用于模擬閃存的內(nèi)存空間;以及應(yīng)用程 序開發(fā)調(diào)試模塊,用于使應(yīng)用程序與內(nèi)存空間進行數(shù)據(jù)交互實現(xiàn)開發(fā)調(diào)試。
本發(fā)明實施例通過在內(nèi)存中分配一部分內(nèi)存空間用于模擬閃存,使應(yīng)用程 序的直接與內(nèi)存空間交互進行開發(fā)調(diào)試,加快了應(yīng)用程序的開發(fā)調(diào)試速度,且 實現(xiàn)簡單,存取速度快。
圖1是本發(fā)明實施例應(yīng)用程序的開發(fā)調(diào)試方法的流程圖2是本發(fā)明實施例應(yīng)用程序的開發(fā)調(diào)試方法在PC機中進行應(yīng)用程序調(diào) 試的示意圖3是本發(fā)明實施例應(yīng)用程序的開發(fā)調(diào)試系統(tǒng)的示意圖。
具體實施例方式
為了使本發(fā)明實施例的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合附 圖及實施例,對本發(fā)明進行進一步詳細說明。應(yīng)當(dāng)理解,此處所描述的具體實 施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
本發(fā)明通過在內(nèi)存中分配用于模擬閃存的內(nèi)存空間,在硬盤中創(chuàng)建模擬閃 存的掉電保護文件,從而實現(xiàn)了利用內(nèi)存和硬盤文件模擬閃存進行程序開發(fā)調(diào) 試,相比現(xiàn)有技術(shù)中采用真實閃存進行程序開發(fā)調(diào)試的方法,本發(fā)明的開發(fā)調(diào) 試速度更快,且實現(xiàn)筒單。
如圖l所示,本發(fā)明實施例應(yīng)用程序的開發(fā)調(diào)試方法包括以下步驟
在步驟S101中,在內(nèi)存中分配用于模擬閃存的內(nèi)存空間,此內(nèi)存空間的大小與應(yīng)用程序要訪問的閃存空間大小相等;
在硬盤或其它非易失性存儲裝置中創(chuàng)建模擬閃存的掉電保護文件(如文件名為flash.dat的文件),并通過該掉電保護文件向內(nèi)存空間寫入初始化的空狀態(tài) 數(shù)據(jù),使內(nèi)存空間在第一次進行開發(fā)調(diào)試時的初始狀態(tài)為空;當(dāng)然,也可不通 過掉電保護文件而是直接向內(nèi)存空間寫入空狀態(tài)數(shù)據(jù),因此掉電保護文件也可以在第 一次應(yīng)用程序調(diào)試完之后創(chuàng)建;
在步驟S102中,應(yīng)用程序啟動時,檢查硬盤中用于模擬閃存的掉電保護文件是否存在,若不存在則在步驟S103中創(chuàng)建,若存在繼續(xù)執(zhí)行步驟S104;
在步驟S103中,在硬盤中創(chuàng)建模擬閃存的掉電保護文件,然后執(zhí)行步驟S104。
在步驟S104中,在分配的內(nèi)存空間中開發(fā)調(diào)試應(yīng)用程序,其主要包括以下三種操作(請一并參考圖2):
讀操作在應(yīng)用程序需要訪問閃存時,從內(nèi)存空間中讀取數(shù)據(jù);如果系統(tǒng)掉電后應(yīng)用程序需要再次訪問閃存時,內(nèi)存通過PC機的文件系統(tǒng)將硬盤中模 擬閃存掉電保護的文件的內(nèi)容讀到對應(yīng)的內(nèi)存空間中,應(yīng)用程序可從內(nèi)存空間 中讀取數(shù)據(jù)。
擦除操作閃存出廠時保存的數(shù)據(jù)為全l,也就是OxFF為所有字節(jié)的初始狀態(tài),此時可以往這個字節(jié)的空間里面寫入任何數(shù)據(jù), 一旦這個字節(jié)被寫成了 0x00,采用寫操作就無法使其變成其它任何字節(jié)的數(shù)據(jù),只有整塊擦除后才變 成OxFF,所以模擬閃存的內(nèi)存空間在擦除時應(yīng)該將對應(yīng)的需要擦除的數(shù)據(jù)全部 置成OxFF。
寫操作真實的閃存中寫操作只能將數(shù)據(jù)位從l變成O,而不能從O變成 1,如果要求某個閃存塊可再用,必須執(zhí)行擦除操作才能將整個閃存塊的內(nèi)容從 0變成l,對真實閃存的寫操作是導(dǎo)致應(yīng)用程序訪問真實閃存總體較慢的最主要 的原因,真實的閃存驅(qū)動在寫入每一個的數(shù)據(jù)時都必須先寫入四、五個字節(jié)指 令的編程字節(jié)才能將要寫入的數(shù)據(jù)送到閃存的數(shù)據(jù)總線上,之后還要等待編程結(jié)束校驗結(jié)果,所以寫入的速度比讀出要慢上幾十倍;而本發(fā)明實施例僅需判 斷對應(yīng)的內(nèi)存空間中的數(shù)據(jù)的字節(jié)在賦值之前是否全為0xFF,如果不是0xFF 則可以認為寫入失敗,此時可提示錯誤,如果是OxFF可默認為寫入成功;
在步驟S105中,為了使-漠?dāng)M閃存的內(nèi)存空間具有斷電記憶的功能,在應(yīng)用 程序退出之前將對應(yīng)的內(nèi)存空間的內(nèi)容通過PC機的文件系統(tǒng)寫入掉電保護文 件,待下次應(yīng)用程序調(diào)試的初始化時,將掉電保護文件內(nèi)的數(shù)據(jù)再讀到內(nèi)存空 間;另外還可以向掉電保護文件寫入錯誤數(shù)據(jù)以模擬嵌入式系統(tǒng)的突然斷電導(dǎo) 致閃存空間內(nèi)容損壞的情況,以測試應(yīng)用程序的開機自動恢復(fù)用戶數(shù)據(jù)的功能。
為了證明本發(fā)明實施例應(yīng)用程序的開發(fā)調(diào)試方法較現(xiàn)有技術(shù)速度快,以下將提供采用真實閃存和本發(fā)明實施例的方法測試日志閃存文件系統(tǒng)(Joumalling Flash File System, JFFS )的垃圾回收功能的實施例。
JFFS是一種開源日志文件系統(tǒng),適于放在閃存芯片上,它的垃圾回收功能 要求在不超過系統(tǒng)容量的情況下閃存空間要能夠循環(huán)利用,比如在一個1.5M 字節(jié)容量的閃存空間中對一個1M字節(jié)文件的操作依次如下創(chuàng)建、寫入1M 字節(jié)內(nèi)容、關(guān)閉、刪除、再創(chuàng)建、寫入1M字節(jié)內(nèi)容、...,如此重復(fù)要保證循 環(huán)1000次之后閃存仍然有空間能夠利用。如果在真實的閃存上,比如ST5100 芯片配S29GL064A90T的閃存存儲片,運行完測試需要超過10個小時的時間, 而采用本發(fā)明實施例的方法由于采用內(nèi)存模擬閃存,讀、寫和擦除操作的速度 都很快,測試只花費不到1分鐘的時間。
以下將結(jié)合圖3描述本發(fā)明實施例應(yīng)用程序的開發(fā)調(diào)試系統(tǒng)。 本發(fā)明實施例的應(yīng)用程序的開發(fā)調(diào)試系統(tǒng)中,內(nèi)存空間分配模塊11在內(nèi)存 1中分配用于模擬閃存的內(nèi)存空間,內(nèi)存空間的大小與應(yīng)用程序要訪問的閃存 空間大小相等。
文件創(chuàng)建模塊15在硬盤3中創(chuàng)建模擬閃存的掉電保護文件(如文件名為 flash.dat的文件),掉電保護文件向內(nèi)存空間寫入初始化的空狀態(tài)數(shù)據(jù),使內(nèi)存 空間第一次初始狀態(tài)為空。
文件檢查模塊17在文件創(chuàng)建模塊15創(chuàng)建完畢后檢查硬件中的掉電保護文 件是否存在,若不存在通知文件創(chuàng)建模塊15再次創(chuàng)建。
應(yīng)用程序開發(fā)調(diào)試模塊30用于與內(nèi)存空間中的數(shù)據(jù)交互實現(xiàn)應(yīng)用程序的
開發(fā)調(diào)試。
應(yīng)用程序開發(fā)調(diào)試模塊30的讀操作模塊301用于讀取內(nèi)存空間中的數(shù)據(jù), 擦除操作模塊303用于將內(nèi)存空間的數(shù)據(jù)全部置1實現(xiàn)擦除操作,寫操作判斷 模塊305通過判斷內(nèi)存空間中的字節(jié)在賦值之前是否為全1來判斷寫入是否成 功,當(dāng)內(nèi)存空間中的字節(jié)在賦值之前為全l時,證明寫操作成功。
應(yīng)用程序開發(fā)調(diào)試模塊30的掉電保護模塊307在應(yīng)用程序退出前將內(nèi)存空 間中的數(shù)據(jù)寫入硬盤中的模擬閃存掉電保護文件,因此,在應(yīng)用程序需要再次 訪問閃存時,將硬盤中的模擬閃存掉電保護文件的內(nèi)容讀到內(nèi)存中即可,實現(xiàn) 了掉電保護功能。
應(yīng)用程序開發(fā)調(diào)試模塊30的數(shù)據(jù)恢復(fù)測試模塊309用于通過寫入錯誤數(shù)據(jù) 測試應(yīng)用程序的開機自動恢復(fù)用戶數(shù)據(jù)的功能。
需要指出的是,文件創(chuàng)建模塊15可以在內(nèi)存空間分配模塊11分配完內(nèi)存 空間后立即創(chuàng)建掉電保護文件,也可以在應(yīng)用程序開發(fā)調(diào)試模塊30進行完第一 次應(yīng)用程序調(diào)試之后創(chuàng)建。在第 一次應(yīng)用程序調(diào)試之后創(chuàng)建掉電保護文件時, 可采用其它方式在內(nèi)存空間分配完畢后向其寫入初始化的空狀態(tài)數(shù)據(jù),使內(nèi)存 空間在第 一 次測試之前的初始狀態(tài)為空。
本發(fā)明實施例的應(yīng)用程序的開發(fā)調(diào)制方法和系統(tǒng)通過內(nèi)存和文件模擬閃 存,實現(xiàn)方法簡單,存取速度快,不但為嵌入式應(yīng)用程序的開發(fā)節(jié)省可觀時間, 并且節(jié)省了嵌入式系統(tǒng)開發(fā)時使用的仿真器,因此允許在資源有限的情況下并 行開發(fā)應(yīng)用程序,保證產(chǎn)品盡快上市。
以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā) 明的精神和原則之內(nèi)所作的任何修改、等同替換和改進等,均應(yīng)包括在本發(fā)明 的{呆護范圍之內(nèi)。
權(quán)利要求
1、一種應(yīng)用程序的開發(fā)調(diào)試方法,其特征在于,所述方法包括下述步驟在內(nèi)存中分配用于模擬閃存的內(nèi)存空間;所述應(yīng)用程序與所述內(nèi)存空間進行數(shù)據(jù)交互實現(xiàn)開發(fā)調(diào)試。
2、 如權(quán)利要求1所述的應(yīng)用程序的開發(fā)調(diào)試方法,其特征在于,所述應(yīng)用 程序與所述內(nèi)存空間進行數(shù)據(jù)交互實現(xiàn)開發(fā)調(diào)試的步驟包括所述應(yīng)用程序讀取所述內(nèi)存空間中的所述數(shù)據(jù)的讀操作; 所述應(yīng)用程序?qū)⑺鰯?shù)據(jù)全部置1的擦除操作;和 包括判斷所述數(shù)據(jù)在賦值之前是否為全1的寫成功判斷步驟的寫操作。
3、 如權(quán)利要求1所述的應(yīng)用程序的開發(fā)調(diào)試方法,其特征在于,所述在內(nèi) 存中分配用于模擬閃存的內(nèi)存空間的步驟進一步包括在非易失性存儲裝置中創(chuàng)建掉電保護文件,向內(nèi)存空間寫入初始化空狀態(tài) 數(shù)據(jù)。
4、 如權(quán)利要求3所述的應(yīng)用程序的開發(fā)調(diào)試方法,其特征在于,所述應(yīng)用 程序與所述內(nèi)存空間進行數(shù)據(jù)交互實現(xiàn)開發(fā)調(diào)試的步驟進一步包括在所述應(yīng)用程序退出前,將所述內(nèi)存空間中的數(shù)據(jù)寫入所述掉電保護文件; 在所述應(yīng)用程序下一次開發(fā)調(diào)試時的初始化過程中,將所述掉電保護文件 的內(nèi)容讀入所述內(nèi)存空間。
5、 如權(quán)利要求1所述的應(yīng)用程序的開發(fā)調(diào)試方法,其特征在于,所述應(yīng)用 程序與所述內(nèi)存空間進行數(shù)據(jù)交互實現(xiàn)開發(fā)調(diào)試的步驟進一 步包括在非易失性存儲裝置中創(chuàng)建掉電保護文件;在所述應(yīng)用程序退出前,將所述內(nèi)存空間中的數(shù)據(jù)寫入所述掉電保護文件; 所述應(yīng)用程序下次開發(fā)調(diào)試的初始化過程中,將所述掉電保護文件的內(nèi)容 讀入所述內(nèi)存空間。
6、 如權(quán)利要求3至5任意一項所述的應(yīng)用程序的開發(fā)調(diào)試方法,其特征在 于,所述創(chuàng)建掉電保護文件的步驟之后包括 通過將錯誤數(shù)據(jù)寫入所述掉電保護文件,測試所述應(yīng)用程序的開機自動恢 復(fù)數(shù)據(jù)功能。
7、 一種應(yīng)用程序的開發(fā)調(diào)試系統(tǒng),其特征在于,所述系統(tǒng)包括 內(nèi)存空間分配模塊,用于在內(nèi)存中分配用于模擬閃存的內(nèi)存空間;以及 應(yīng)用程序開發(fā)調(diào)試模塊,用于使所述應(yīng)用程序與所述內(nèi)存空間進行數(shù)據(jù)交互實現(xiàn)開發(fā)調(diào)試。
8、 如權(quán)利要求7所述的應(yīng)用程序的開發(fā)調(diào)試系統(tǒng),其特征在于,所述應(yīng)用 程序開發(fā)調(diào)試模塊包括讀操作才莫塊,用于讀取所述內(nèi)存空間中的所述數(shù)據(jù); 擦除操作模塊,用于將所述數(shù)據(jù)全部置l;和寫操作判斷模塊,用于判斷所述數(shù)據(jù)在賦值之前是否為全1,當(dāng)所述數(shù)據(jù) 在賦值前為全1時寫操作成功。
9、 如權(quán)利要求7所述的應(yīng)用程序的開發(fā)調(diào)試系統(tǒng),其特征在于,所述應(yīng)用 程序開發(fā)調(diào)試模塊進一步包括文件創(chuàng)建^t塊,用于在非易失性存儲裝置中創(chuàng)建掉電保護文件;以及 掉電保護模塊,用于在所述應(yīng)用程序退出前將內(nèi)存中的所述數(shù)據(jù)寫入所述 掉電保護文件。
10、 如權(quán)利要求9所述的應(yīng)用程序的開發(fā)調(diào)試系統(tǒng),其特征在于,所述應(yīng) 用程序開發(fā)調(diào)試模塊進一步包括數(shù)據(jù)恢復(fù)測試才莫塊,用于通過將錯誤數(shù)據(jù)寫入所述掉電保護文件,測試所 述應(yīng)用程序的開機自動恢復(fù)數(shù)據(jù)功能。
全文摘要
本發(fā)明適用于軟件程序開發(fā)調(diào)試領(lǐng)域,提供了一種應(yīng)用程序的開發(fā)調(diào)試方法和系統(tǒng),其中方法包括下述步驟在內(nèi)存中分配用于模擬閃存的內(nèi)存空間;應(yīng)用程序與內(nèi)存空間進行數(shù)據(jù)交互實現(xiàn)開發(fā)調(diào)試。本發(fā)明實施例采用內(nèi)存模擬閃存,讀寫速度快,方便調(diào)試應(yīng)用程序,加快應(yīng)用程序的開發(fā)調(diào)試速度。
文檔編號G06F11/36GK101201791SQ20071007672
公開日2008年6月18日 申請日期2007年8月28日 優(yōu)先權(quán)日2007年8月28日
發(fā)明者楊風(fēng)光 申請人:深圳市同洲電子股份有限公司