專利名稱:一種運行應(yīng)用程序的方法及控制器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及嵌入式領(lǐng)域,特別是涉及運行應(yīng)用程序的方法及控制器。
背景技術(shù):
存儲器(Memory)是計算機系統(tǒng)中的記憶設(shè)備,用來存放程序和數(shù)據(jù)。計算機中的全部信息,包括輸入的原始數(shù)據(jù)、計算機程序、中間運行結(jié)果和最終運行結(jié)果都保存在存儲器中。它根據(jù)控制器指定的位置存入和取出信息。 在通信領(lǐng)域、消費領(lǐng)域、計算機領(lǐng)域等,閃存(flash)已得到廣泛的應(yīng)用。生產(chǎn)商們正在開發(fā)多種新技術(shù),以便使閃存也擁有像動態(tài)隨機存儲器(DRAM)和同步動態(tài)隨機存取存儲器(SDRAM)那樣的高速、低價、壽命長等特點。 在嵌入式應(yīng)用領(lǐng)域,串行閃存器主要用于存儲程序和數(shù)據(jù),當用于存儲應(yīng)用程序代碼時, 一般需要一個較大容量的程序SRAM(用于裝置應(yīng)用程序并執(zhí)行應(yīng)用程序)來運行應(yīng)用程序。即控制器上電后需要將閃存器中的應(yīng)用程序代碼讀到程序SRAM中,然后運行程序SRAM中的應(yīng)用程序。 因此該方案要求更長的時間內(nèi)有更多的器件在工作,從而需要消耗更多的電池能量。設(shè)計工程師也必須確認在修改數(shù)據(jù)時有足夠容量的程序SRAM可用。并且如果閃存器中的應(yīng)用程序代碼有誤,將其讀到程序SRAM后運行時便會出錯,可能導(dǎo)致嚴重后果。
發(fā)明內(nèi)容
本發(fā)明實施例提供一種運行應(yīng)用程序的方法及控制器,用于提高應(yīng)用程序運行的安全性。
—種運行應(yīng)用程序的方法,包括以下步驟 控制器通過運行內(nèi)部的服務(wù)程序判斷閃存器中是否有應(yīng)用程序; 控制器在確定有應(yīng)用程序時,讀取閃存器中應(yīng)用程序的代碼,對讀取的代碼進行
求和,將求和結(jié)果與閃存器的標志區(qū)域中校驗標志的值進行比較,在比較結(jié)果一致時確定
應(yīng)用程序正確; 控制器在確定應(yīng)用程序正確時,從服務(wù)程序切換到應(yīng)用程序。
—種控制器,包括 識別模塊,用于通過運行內(nèi)部的服務(wù)程序判斷閃存器中是否有應(yīng)用程序;
校驗?zāi)K,用于在確定有應(yīng)用程序時,讀取閃存器中應(yīng)用程序的代碼,對讀取的代碼進行求和,將求和結(jié)果與閃存器的標志區(qū)域中校驗標志的值進行比較,在比較結(jié)果一致時確定應(yīng)用程序正確; 解析模塊,用于在確定應(yīng)用程序正確時,從服務(wù)程序切換到應(yīng)用程序。 本發(fā)明實施例在控制器中增加服務(wù)程序,通過該服務(wù)程序在控制器啟動后對閃存
器中的應(yīng)用程序代碼進行識別,即判斷閃存器中是否有應(yīng)用程序,在有應(yīng)用程序時,進一步
對應(yīng)用程序進行校驗,即讀取閃存器中應(yīng)用程序的代碼,對讀取的代碼進行求和,將求和結(jié)果與閃存器的標志區(qū)域中校驗標志的值進行比較,在識別和校驗均通過時,控制器從服務(wù)程序切換到閃存器中的應(yīng)用程序,以執(zhí)行應(yīng)用程序。實現(xiàn)了在無程序SRAM的情況下運行應(yīng)用程序,以及通過識別和校驗后才運行應(yīng)用程序,提高了安全性。
圖1為本發(fā)明實施例中控制器的主要結(jié)構(gòu)圖; 圖2為本發(fā)明實施例中控制器的詳細結(jié)構(gòu)圖; 圖3為本發(fā)明實施例中硬件升級標志的示意圖; 圖4為本發(fā)明實施例中運行應(yīng)用程序的主要方法流程圖; 圖5為本發(fā)明實施例中帶有軟件升級標志的運行應(yīng)用程序的詳細方法流程圖; 圖6為本發(fā)明實施例中帶有硬件升級標志的運行應(yīng)用程序的詳細方法流程圖。
具體實施例方式
本發(fā)明實施例在控制器中增加服務(wù)程序,通過該服務(wù)程序在控制器啟動后對閃存器中的應(yīng)用程序代碼進行識別和校驗,在識別和校驗均通過時,控制器從服務(wù)程序切換到閃存器中的應(yīng)用程序,以執(zhí)行應(yīng)用程序。實現(xiàn)了在無程序SRAM(尤其指裝載和執(zhí)行應(yīng)用程序的SRAM)的情況下運行應(yīng)用程序,以及通過識別和校驗后才運行應(yīng)用程序,提高了安全性。 參見圖l,本實施例中的控制器包括識別模塊101、校驗?zāi)K102和解析模塊103??刂破髦械奶幚砥魍ㄟ^運行內(nèi)部的服務(wù)程序?qū)崿F(xiàn)識別模塊101和解析模塊103的功能,以及處理器通過運行內(nèi)部的系統(tǒng)程序?qū)崿F(xiàn)解析模塊103的功能。所述閃存器為包括串行接口的閃存器。該閃存器可以位于控制器的外部,且與控制器相連;或者位于控制器的內(nèi)部,與控制器中的其它模塊連接。 識別模塊101用于通過運行內(nèi)部的服務(wù)程序判斷閃存器中是否有應(yīng)用程序,實現(xiàn)對閃存器中應(yīng)用程序的識別。具體實現(xiàn)方式有多種,如識別模塊101讀取閃存器的標志區(qū)域中識別標志的值,并根據(jù)該識別標志的值判斷閃存器中是否有應(yīng)用程序。例如,識別標志的值為l表示有應(yīng)用程序,為O表示無應(yīng)用程序。其中,在對閃存器進行擦寫操作時會修改識別標志的值。 校驗?zāi)K102用于在確定有應(yīng)用程序時,進一步判斷應(yīng)用程序是否正確,實現(xiàn)對
閃存器中應(yīng)用程序的校驗。具體實現(xiàn)方式有多種,如校驗?zāi)K102讀取閃存器中應(yīng)用程序
的代碼,對讀取的代碼進行求和,將求和結(jié)果與閃存器的標志區(qū)域中校驗標志的值進行比
較,在比較結(jié)果一致時確定應(yīng)用程序正確,否則確定應(yīng)用程序錯誤。其中,在對閃存器進行
寫操作或升級操作時會通過對代碼求和的方式獲得并修改校驗標志的值。 解析模塊103用于在確定應(yīng)用程序正確時,從服務(wù)程序切換到應(yīng)用程序,從閃存
器中讀取應(yīng)用程序的代碼并運行。 應(yīng)用程序包括代碼和數(shù)據(jù),本實施例中主要對應(yīng)用程序的代碼進行識別和校驗。
控制器還包括存儲模塊104和升級模塊105,參見圖2所示。 存儲模塊104,不同于閃存器,用于保存系統(tǒng)程序和服務(wù)程序等,可具體為隨機存取存儲器(RAM)、只讀存儲器(ROM)等。
升級模塊105用于通過運行內(nèi)部的服務(wù)程序判斷是否有升級程序,若有,則根據(jù)該升級程序?qū)﹂W存器中的應(yīng)用程序進行升級。該升級程序可以存儲在控制器外部的存儲設(shè)備上。判斷是否升級的具體實現(xiàn)方式有多種,如升級模塊105根據(jù)升級標志判斷是否有升級程序。該升級標志可以是硬件標志或軟件標志,如果是軟件標志,則通過運行服務(wù)程序?qū)崿F(xiàn)對軟件標志的判斷。該軟件標志由控制器收到上層設(shè)備(如計算機)發(fā)送的升級命令后將其設(shè)置為l,然后控制器進行軟復(fù)位,升級模塊105在檢測出軟件標志為1后進行升級。在升級結(jié)束后,升級模塊105將軟件標志置為0,表示無升級程序。如果是硬件標志,則升級模塊105根據(jù)收到的電平信號進行判斷,參見圖3所示,本實施例中當控制器的引腳(pin)連接電源端(+Vcc)時向升級模塊105發(fā)送高電平信號,即傳輸升級標志l,表示有升級程序。當控制器的引腳(pin)連接接地端(Gnd)時向升級模塊105發(fā)送低電平信號,即傳輸升級標志O,表示無升級程序。該硬件標志可由用戶手動設(shè)置,在需要升級時,將引腳置于電源端,在升級結(jié)束后將引腳置于接地端。升級過程包括升級模塊105向閃存器發(fā)送模式轉(zhuǎn)換命令,使閃存器進入可擦寫狀態(tài);根據(jù)升級程序?qū)﹂W存器進行擦寫操作,以升級應(yīng)用程序;升級后再次向閃存器發(fā)送模式轉(zhuǎn)換命令,使閃存器進入保護狀態(tài),只能進行讀操作。
在升級結(jié)束后或判斷沒有升級程序時,識別模塊101判斷閃存器中是否有應(yīng)用程序。 以上介紹了控制器的內(nèi)部結(jié)構(gòu)和功能,下面對控制器實現(xiàn)運行應(yīng)用程序的過程進行介紹。
參見圖4,本實施例中運行應(yīng)用程序的主要方法流程如下 步驟401 :控制器通過運行內(nèi)部的服務(wù)程序判斷閃存器中是否有應(yīng)用程序。
步驟402 :控制器在確定有應(yīng)用程序時,進一步判斷應(yīng)用程序是否正確。
步驟403 :控制器在確定應(yīng)用程序正確時,從服務(wù)程序切換到應(yīng)用程序。 以上流程有多種實現(xiàn)方式,下面通過兩個實施例來詳細說明。 參見圖5,本實施例中帶有軟件升級標志的運行應(yīng)用程序的詳細方法流程如下 步驟501 :控制器上電后運行服務(wù)程序。
步驟502 :控制器讀取升級標志的值。 步驟503 :控制器根據(jù)升級標志的值判斷是否升級,若是,則繼續(xù)步驟504,否則繼續(xù)步驟505。 步驟504 :控制器對閃存器中的應(yīng)用程序進行升級。
步驟502-504為關(guān)于閃存器的升級過程。 步驟505 :控制器根據(jù)閃存器中的識別標志的值判斷閃存器中是否有應(yīng)用程序,
若有,則繼續(xù)步驟506,否則繼續(xù)步驟510。該步驟為對閃存器的識別過程。 步驟506 :控制器對閃存器中的應(yīng)用程序的代碼進行求和,并得到求和結(jié)果。 步驟507 :控制器將求和結(jié)果與閃存器中的校驗標志的值進行比較。 步驟508 :控制器判斷比較結(jié)果是否一致,若是,則繼續(xù)步驟509,否則繼續(xù)步驟
510。 步驟506-508為對閃存器的校驗過程。 步驟509 :控制器從服務(wù)程序切換到應(yīng)用程序。運行應(yīng)用程序的步驟包括控制器中的解析模塊103停止解析服務(wù)程序,從閃存器中讀取應(yīng)用程序,并進行解析等操作。
步驟510 :控制器生成并輸出錯誤提示信息。 其中,步驟504包括控制器向閃存器發(fā)送模式轉(zhuǎn)換命令,使閃存器進入可擦寫狀態(tài);根據(jù)升級程序?qū)﹂W存器進行擦寫操作,以升級應(yīng)用程序;升級后再次向閃存器發(fā)送模式轉(zhuǎn)換命令,使閃存器進入保護狀態(tài),只能進行讀操作;控制器復(fù)位。 參見圖6,本實施例中帶有硬件升級標志的運行應(yīng)用程序的詳細方法流程如下
步驟601 :控制器上電后運行服務(wù)程序。 步驟602 :控制器檢測引腳的狀態(tài)(相當于獲得升級標志的值)。 步驟603 :控制器根據(jù)引腳的狀態(tài)(是高電平還是低電平)判斷是否升級,若是,
則繼續(xù)步驟604,否則繼續(xù)步驟605。 步驟604 :控制器對閃存器中的應(yīng)用程序進行升級。
步驟602-604為關(guān)于閃存器的升級過程。 步驟605 :控制器根據(jù)閃存器中的識別標志的值判斷閃存器中是否有應(yīng)用程序,
若有,則繼續(xù)步驟606,否則繼續(xù)步驟610。該步驟為對閃存器的識別過程。 步驟606 :控制器對閃存器中的應(yīng)用程序的代碼進行求和,并得到求和結(jié)果。 步驟607 :控制器將求和結(jié)果與閃存器中的校驗標志的值進行比較。 步驟608 :控制器判斷比較結(jié)果是否一致,若是,則繼續(xù)步驟609,否則繼續(xù)步驟
610。 步驟606-608為對閃存器的校驗過程。
步驟609 :控制器從服務(wù)程序切換到應(yīng)用程序。運行應(yīng)用程序的步驟包括控制器中的解析模塊103停止解析服務(wù)程序,從閃存器中讀取應(yīng)用程序,并進行解析等操作。
步驟610 :控制器生成并輸出錯誤提示信息。 如果控制器既包括硬件升級標志又包括軟件升級標志,則本實施例中先對硬件升級標志進行判斷,若判斷需要升級,則進行升級流程;否則進一步對軟件升級標志進行判斷,若判斷需要升級,則進行升級流程。 本發(fā)明實施例在控制器中增加服務(wù)程序,通過該服務(wù)程序在控制器啟動后對閃存器中的應(yīng)用程序代碼進行識別和校驗,在識別和校驗均通過時,控制器從服務(wù)程序切換到閃存器中的應(yīng)用程序,以執(zhí)行應(yīng)用程序。實現(xiàn)了在無程序SRAM的情況下運行應(yīng)用程序,以及通過識別和校驗后才運行應(yīng)用程序,提高了安全性。本發(fā)明實施例還通過獲得升級標志來確定是否有升級程序,實現(xiàn)了對應(yīng)用程序的升級。并且升級標志可以是軟件形式或硬件形式,適合多種實際需要。 顯然,本領(lǐng)域的技術(shù)人員可以對本發(fā)明進行各種改動和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若對本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動和變型在內(nèi)。
權(quán)利要求
一種運行應(yīng)用程序的方法,其特征在于,包括以下步驟控制器通過運行內(nèi)部的服務(wù)程序判斷閃存器中是否有應(yīng)用程序;控制器在確定有應(yīng)用程序時,讀取閃存器中應(yīng)用程序的代碼,對讀取的代碼進行求和,將求和結(jié)果與閃存器的標志區(qū)域中校驗標志的值進行比較,在比較結(jié)果一致時確定應(yīng)用程序正確;控制器在確定應(yīng)用程序正確時,從服務(wù)程序切換到應(yīng)用程序。
2. 如權(quán)利要求1所述的方法,其特征在于,控制器判斷閃存器中是否有應(yīng)用程序的步 驟包括控制器讀取閃存器的標志區(qū)域中識別標志的值,并根據(jù)該識別標志的值判斷閃存 器中是否有應(yīng)用程序。
3. 如權(quán)利要求1所述的方法,其特征在于,還包括步驟控制器在確定無應(yīng)用程序或應(yīng) 用程序錯誤時,生成并輸出錯誤提示信息。
4. 如權(quán)利要求1所述的方法,其特征在于,還包括步驟控制器在判斷閃存器中是否有 應(yīng)用程序之前,控制器通過運行內(nèi)部的服務(wù)程序判斷是否有升級程序,若有,則根據(jù)該升級 程序?qū)﹂W存器中的應(yīng)用程序進行升級; 在升級結(jié)束后或判斷沒有升級程序時,控制器判斷閃存器中是否有應(yīng)用程序。
5. 如權(quán)利要求4所述的方法,其特征在于,控制器根據(jù)升級標志判斷是否有升級程序。
6. 如權(quán)利要求5所述的方法,其特征在于,升級標志為軟件標志或為硬件標志。
7. —種控制器,其特征在于,包括識別模塊,用于通過運行內(nèi)部的服務(wù)程序判斷閃存器中是否有應(yīng)用程序; 校驗?zāi)K,用于在確定有應(yīng)用程序時,讀取閃存器中應(yīng)用程序的代碼,對讀取的代碼進行求和,將求和結(jié)果與閃存器的標志區(qū)域中校驗標志的值進行比較,在比較結(jié)果一致時確定應(yīng)用程序正確;解析模塊,用于在確定應(yīng)用程序正確時,從服務(wù)程序切換到應(yīng)用程序。
8. 如權(quán)利要求7所述的控制器,其特征在于,識別模塊讀取閃存器的標志區(qū)域中識別 標志的值,并根據(jù)該識別標志的值判斷閃存器中是否有應(yīng)用程序。
9. 如權(quán)利要求7所述的控制器,其特征在于,還包括升級模塊,用于通過運行內(nèi)部的 服務(wù)程序判斷是否有升級程序,若有,則根據(jù)該升級程序?qū)﹂W存器中的應(yīng)用程序進行升級。
10. 如權(quán)利要求9所述的控制器,其特征在于,升級模塊根據(jù)升級標志判斷是否有升級 程序。
11. 如權(quán)利要求7所述的控制器,其特征在于,所述閃存器為包括串行接口的閃存器。
全文摘要
本發(fā)明公開了一種運行應(yīng)用程序的方法,用于提高應(yīng)用程序運行的安全性。所述方法包括控制器通過運行內(nèi)部的服務(wù)程序判斷閃存器中是否有應(yīng)用程序;控制器在確定有應(yīng)用程序時,讀取閃存器中應(yīng)用程序的代碼,對讀取的代碼進行求和,將求和結(jié)果與閃存器的標志區(qū)域中校驗標志的值進行比較,在比較結(jié)果一致時確定應(yīng)用程序正確;控制器在確定應(yīng)用程序正確時,從服務(wù)程序切換到應(yīng)用程序。本發(fā)明還公開了用于實現(xiàn)所述方法的控制器。
文檔編號G06F9/445GK101710297SQ20091024284
公開日2010年5月19日 申請日期2009年12月17日 優(yōu)先權(quán)日2009年12月17日
發(fā)明者吳大斌, 溫元勝, 胡慶慶 申請人:北京中星微電子有限公司