專利名稱:判斷存儲(chǔ)器模塊中程序碼正確性的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種判斷存儲(chǔ)器模塊中程序碼正確性的方法,尤指一種用于在電子裝置中判斷存儲(chǔ)器模塊中程序碼正確性的方法。
背景技術(shù):
微處理器與存儲(chǔ)器等電子元件在現(xiàn)今信息化世界中占有極為重要之角色,并已被廣泛的應(yīng)用在各種不同領(lǐng)域的電子產(chǎn)品上。以DVD Player及個(gè)人電腦用之CD-ROM、CD-RW、DVD-ROM光盤機(jī)等電子產(chǎn)品為例,其運(yùn)作方式皆是以一微處理器執(zhí)行一儲(chǔ)存于非揮發(fā)性(Non-Volatile)存儲(chǔ)器(如FLASH、ROM)上之程序碼(Program Code),并配合特殊設(shè)計(jì)之應(yīng)用集成電路(Application Specific Integrated Circuit,ASIC)來處理儲(chǔ)存于一揮發(fā)性(Volatile)存儲(chǔ)器(如DRAM、SRAM)中的一般數(shù)據(jù)。
微處理器以執(zhí)行程序碼(Program Code)來維持系統(tǒng)之運(yùn)作,而儲(chǔ)存于該非揮發(fā)性存儲(chǔ)器上之程序碼又稱為固件程序碼(Firmware Code)。許多應(yīng)用產(chǎn)品之固件碼基于功能增加、改良或除錯(cuò)之故,可能需要不定期更新,此更新之動(dòng)作通稱為固件更新(Firmware Update)。
固件更新時(shí)最大的風(fēng)險(xiǎn)是當(dāng)進(jìn)行固件更新動(dòng)作時(shí),可能因斷電或不當(dāng)操作等原因而造成更新動(dòng)作失敗。而固件更新動(dòng)作失敗有可能造成系統(tǒng)無法正常運(yùn)作,甚至于無法通過再次進(jìn)行固件更新的動(dòng)作來恢復(fù)系統(tǒng)正常功能。為防止上述情形發(fā)生,公知技術(shù)在更新固件時(shí)多使用一種通稱為“系統(tǒng)引導(dǎo)碼防護(hù)”(Boot Code Protection)的方法來解決。公知技術(shù)通常將一非揮發(fā)性存儲(chǔ)器分成兩個(gè)部份,一是引導(dǎo)碼區(qū)段(Boot Code Section),用來存放系統(tǒng)引導(dǎo)碼(Boot Code),另一部份則是普通固件碼區(qū)段(NormalFirmware Section),用來存放其它固件碼。系統(tǒng)引導(dǎo)碼是固件程序碼的一部份,每次系統(tǒng)啟動(dòng)(Power on)或重開機(jī)(Reboot)時(shí),固件碼當(dāng)中最先被執(zhí)行的一段程序碼便是系統(tǒng)引導(dǎo)碼。一般而言,固件更新時(shí)是更新該普通固件碼區(qū)段中的程序碼,而不會(huì)變更該引導(dǎo)碼區(qū)段中的系統(tǒng)引導(dǎo)碼。
倘若固件更新失敗,則在重開機(jī)(Reboot)后經(jīng)過特定的固件碼判斷程序,系統(tǒng)便會(huì)執(zhí)行系統(tǒng)引導(dǎo)碼區(qū)段當(dāng)中的系統(tǒng)引導(dǎo)碼,完成開機(jī)所需的指令。如此一來,即使固件更新失敗,系統(tǒng)仍可通過執(zhí)行系統(tǒng)引導(dǎo)碼的方式重新啟動(dòng),以重新進(jìn)行固件更新的程序。
然而,在公知技術(shù)中,固件碼的判斷程序不是通過電路的接腳設(shè)計(jì)來判斷,便是預(yù)先在非揮發(fā)性存儲(chǔ)器內(nèi)復(fù)制一份相同的比對(duì)程序碼,并于重開機(jī)后檢查固件程序碼的校驗(yàn)和(Checksum),并與該比對(duì)程序碼的校驗(yàn)和進(jìn)行比對(duì)。通過比對(duì)兩者的校驗(yàn)和是否相同,以判斷更新后的固件碼之正確性。
由上述可知,公知技術(shù)的固件碼正確性之判斷程序,需要額外的存儲(chǔ)器空間存放供比對(duì)用的固件碼,增加了硬件的成本。而且系統(tǒng)每次判斷時(shí)都需要計(jì)算與比對(duì)現(xiàn)有固件程序碼與比對(duì)程序碼兩者的校驗(yàn)和,不僅影響系統(tǒng)啟動(dòng)的效率,校驗(yàn)和檢查法的正確性也不夠完善。
發(fā)明內(nèi)容
因此,本發(fā)明的目的在于提供一種用于在電子裝置中判斷存儲(chǔ)器模塊中程序碼正確性的方法,通過檢查至少一特定地址所儲(chǔ)存之值是否符合一預(yù)設(shè)條件的方式,判斷該存儲(chǔ)器模塊當(dāng)中程序碼的正確性,以解決上述問題。
本發(fā)明提供一種用于在電子裝置中判斷一存儲(chǔ)器模塊中程序碼正確性的方法,該存儲(chǔ)器模塊包含有一普通固件碼(Normal Firmware Code)區(qū)段,該方法包含有將至少一特定地址所儲(chǔ)存之值設(shè)定為符合一第一條件;提供一檢查指令;以及利用該檢查指令檢查該至少一特定地址之值;其中該電子裝置于啟動(dòng)時(shí)系依據(jù)該檢查指令,檢查該至少一特定地址之值,若該至少一特定地址所儲(chǔ)存之值符合一第二條件,表示該普通固件碼區(qū)段中之程序碼有誤;若該至少一特定地址所儲(chǔ)存之值符合該第一條件,表示該普通固件碼區(qū)段中之程序碼正確無誤。
本發(fā)明判斷該存儲(chǔ)器模塊中程序碼之正確性的方法之一優(yōu)點(diǎn),在于該電子裝置不需要額外的存儲(chǔ)器空間來儲(chǔ)存另一份比對(duì)用的固件程序碼,因而可降低系統(tǒng)對(duì)存儲(chǔ)器空間的需求以及電路成本。
本發(fā)明判斷該存儲(chǔ)器模塊中程序碼之正確性的方法之另一優(yōu)點(diǎn),在于可提升該電子裝置判斷其固件程序碼正確性的效率與精確性,而可依設(shè)計(jì)的需要彈性地調(diào)整判斷的條件。
本發(fā)明的另一目的在于,提供一種用于在電子裝置中更新存儲(chǔ)器模塊中程序碼的方法,該存儲(chǔ)器模塊包含有一普通固件碼區(qū)段,該方法包含有將至少一特定地址所儲(chǔ)存之值設(shè)定為符合一第二條件;以一第二程序碼取代該普通固件碼區(qū)段當(dāng)中所包含之一第一程序碼;以及將該至少一特定地址所儲(chǔ)存之值設(shè)定為符合一第一條件。
本發(fā)明之電子裝置更新該存儲(chǔ)器模塊中之程序碼的方法之優(yōu)點(diǎn)在于,該電子裝置進(jìn)行程序碼更新的過程中,僅需對(duì)該至少一特定地址作簡(jiǎn)單的設(shè)定,不需備份比對(duì)用的程序碼,亦不需復(fù)雜的程序碼更新程序。
本發(fā)明的又一目的為,提供一種用于一電子裝置啟動(dòng)時(shí)執(zhí)行一存儲(chǔ)器模塊中之程序碼的方法,該存儲(chǔ)器模塊包含有一普通固件碼區(qū)段,該方法包含有利用該電子裝置檢查至少一特定地址所儲(chǔ)存之值;若該至少一特定地址所儲(chǔ)存之值符合一第二條件,該電子裝置會(huì)執(zhí)行一引導(dǎo)碼區(qū)段內(nèi)之程序碼而不執(zhí)行該普通固件碼區(qū)段內(nèi)之程序碼;以及若該至少一特定地址所儲(chǔ)存之值符合一第一條件,該電子裝置會(huì)執(zhí)行該普通固件碼區(qū)段內(nèi)之程序碼。
本發(fā)明之電子裝置啟動(dòng)時(shí)執(zhí)行該存儲(chǔ)器模塊中之程序碼的方法之優(yōu)點(diǎn),在于該電子裝置僅需檢查該至少一特定地址之值,而不需要對(duì)該普通固件碼區(qū)段之程序碼作校驗(yàn)和的運(yùn)算與比對(duì),具有簡(jiǎn)單、迅速的特性。
圖1為本發(fā)明之一非揮發(fā)性存儲(chǔ)器的示意圖。
圖2為本發(fā)明用于電子裝置更新固件程序碼的方法之一實(shí)施例流程圖。
圖3為本發(fā)明之另一非揮發(fā)性存儲(chǔ)器的示意圖。
圖4為本發(fā)明用于在電子裝置中判斷固件程序碼之正確性的流程圖。
圖5為本發(fā)明用于在電子裝置啟動(dòng)時(shí)執(zhí)行固件程序碼的方法之流程圖。
附圖標(biāo)記說明100、300非揮發(fā)性存儲(chǔ)器
110、310 引導(dǎo)碼區(qū)段120、320 普通固件碼區(qū)段130、330、340數(shù)據(jù)具體實(shí)施方式
在實(shí)作上,本領(lǐng)域技術(shù)人員可利用包含有一個(gè)以上非揮發(fā)性存儲(chǔ)器的存儲(chǔ)器模塊來儲(chǔ)存固件程序碼,而為了方便說明本發(fā)明之實(shí)施例,以下以將固件程序碼儲(chǔ)存于單一非揮發(fā)性存儲(chǔ)器中為例。本領(lǐng)域技術(shù)人員可依據(jù)以下本發(fā)明的技術(shù)公開,應(yīng)用一包含有多個(gè)非揮發(fā)性存儲(chǔ)器的存儲(chǔ)器模塊來達(dá)成本發(fā)明之功效。
請(qǐng)參考圖1。圖1為本發(fā)明用以儲(chǔ)存固件程序碼之一非揮發(fā)性存儲(chǔ)器的示意圖100。非揮發(fā)性存儲(chǔ)器100中的存儲(chǔ)器空間包含有一引導(dǎo)碼區(qū)段110,用以儲(chǔ)存系統(tǒng)引導(dǎo)碼(Boot Code);以及一普通固件碼區(qū)段120,用以儲(chǔ)存其它的固件程序碼。普通固件碼區(qū)段120中包含有位于第一地址的第一內(nèi)容130,該第一地址是可預(yù)先選定的普通固件碼區(qū)段120中的任何地址。第一內(nèi)容130的數(shù)據(jù)長(zhǎng)度并不限定于某一特定長(zhǎng)度,只要能達(dá)成本發(fā)明之目的,任何長(zhǎng)度(包括一位)的第一內(nèi)容130均屬于本發(fā)明之應(yīng)用范圍。不過第一內(nèi)容130的數(shù)據(jù)長(zhǎng)度越長(zhǎng)就會(huì)占用普通固件碼區(qū)段120越多的存儲(chǔ)器空間。在本發(fā)明之一較佳實(shí)施例中,第一內(nèi)容130的數(shù)據(jù)長(zhǎng)度僅需使用一個(gè)字節(jié)。本發(fā)明之判斷固件程序碼正確性的方法將于稍后討論,以下先以流程圖方式說明本發(fā)明于一電子裝置(例如電腦、光盤機(jī)、刻錄器、影音播放器、數(shù)碼相機(jī)、印表機(jī)、掃描器、其它外圍設(shè)備或具有固件程序碼之電子元件,例如數(shù)字信號(hào)處理器(Digital Signal Processor)等更新固件程序碼的方法。
請(qǐng)參考圖2,圖2為本發(fā)明于一電子裝置更新固件程序碼的方法之一實(shí)施例流程圖200。流程圖200中包含有以下步驟步驟202開始。電子裝置準(zhǔn)備以更新用的程序碼取代普通固件碼區(qū)段中原先的第一程序碼Program_X。
步驟204將至少一特定地址之值設(shè)定為符合一第二條件。
步驟206以該更新用的程序碼取代普通固件碼區(qū)段中之該第一程序碼Program_X。
步驟208將該至少一特定地址之值調(diào)整為符合一第一條件。
步驟210結(jié)束。該電子裝置完成固件更新的動(dòng)作。
以下以流程圖200說明本發(fā)明之一較佳實(shí)施例之運(yùn)作方式,在此假設(shè)步驟208中所謂的該第一條件,為表示非揮發(fā)性存儲(chǔ)器100之普通固件碼區(qū)段120中第一地址所儲(chǔ)存之第一內(nèi)容130為預(yù)設(shè)值,例如01;而步驟204中所謂的該第二條件,為表示該第一地址所儲(chǔ)存之第一內(nèi)容130為該預(yù)設(shè)值(01)以外的值,例如02、03、或FF等等。
當(dāng)該電子裝置以一更新用的第二程序碼Program_A取代普通固件碼區(qū)段120中原先之該第一程序碼Program_X前,位于該第一地址之第一內(nèi)容130的初始值,可以是任意值,亦可為一符合該第一條件之值。在本發(fā)明之一較佳實(shí)施例中,第一內(nèi)容130之初始值,在該第二程序碼Program_A取代該第一程序碼Program_X前,符合該第一條件之要求,亦即第一內(nèi)容130為01。
在步驟204中,該電子裝置在利用該第二程序碼Program_A取代該第一程序碼Program_X前,會(huì)先清除該第一地址所儲(chǔ)存之第一內(nèi)容130,使第一內(nèi)容130變成FF以符合該第二條件的要求。同理,該電子裝置亦可以寫入除了該預(yù)設(shè)值(01)以外之一特定值(例如AA)至該第一地址的方式,將第一內(nèi)容130變成AA,以符合該第二條件的要求。
接下來在步驟206中,該電子裝置便會(huì)以該第二程序碼Program_A取代該第一程序碼Program_X,以更新普通固件碼區(qū)段120中的程序碼內(nèi)容。
完成步驟206的程序碼取代動(dòng)作后,該電子裝置會(huì)寫入01至普通固件碼區(qū)段120中之該第一地址,使第一內(nèi)容130滿足該第一條件的要求,以完成整個(gè)固件更新的程序。
換言之,本發(fā)明之固件更新方法于進(jìn)行固件更新程序之初,便將原先符合該第一條件的第一內(nèi)容130變更成符合該第二條件,亦即將第一內(nèi)容130所儲(chǔ)存之值由01變更成01以外的值(如FF或AA);并于固件更新程序的最后一個(gè)步驟中,將第一內(nèi)容130的值變更成01。如此一來,在完成固件更新的程序后,第一內(nèi)容130又會(huì)符合該第一條件的要求。
由前述流程圖200的運(yùn)作說明可知,在本發(fā)明之固件更新方法中,普通固件碼區(qū)段120中該第一地址所儲(chǔ)存之第一內(nèi)容130,為提供一狀態(tài)紀(jì)錄的功能。因此,第一內(nèi)容130所紀(jì)錄之值便可作為判斷固件更新程序是否成功的依據(jù)。
倘若在進(jìn)行固件更新的程序中因任何原因造成固件更新失敗,則該電子裝置重新啟動(dòng)后,僅需檢查普通固件碼區(qū)段120中之第一內(nèi)容130是否符合該第一條件,便可迅速地判斷出普通固件碼區(qū)段120中的固件更新程序是否完成。若第一內(nèi)容130不符合該第一條件而系符合該第二條件,亦即第一內(nèi)容130并非01,而是FF、AA或其它01以外的值,則表示普通固件碼區(qū)段120的固件更新程序失敗,因而推定普通固件碼區(qū)段120中的程序碼可能有錯(cuò)誤。反之,若第一內(nèi)容130符合該第一條件,亦即第一內(nèi)容130所儲(chǔ)存的值為01,則推定普通固件碼區(qū)段120中的程序碼沒有錯(cuò)誤。
一旦該電子裝置推定普通固件碼區(qū)段120中的程序碼可能有誤,則該電子裝置會(huì)僅執(zhí)行引導(dǎo)碼區(qū)段110中的程序碼,亦即系統(tǒng)引導(dǎo)碼,來執(zhí)行開機(jī)所需的指令,而不會(huì)執(zhí)行普通固件碼區(qū)段120中的程序碼,以避免造成裝置故障或不能運(yùn)作的情形。如此一來,該電子裝置便可重新進(jìn)行步驟204至步驟208的固件更新程序。
請(qǐng)注意,在一般進(jìn)行固件更新的過程中,會(huì)將更新用的固件程序碼,亦即前述的該第二程序碼Program_A,先暫存于一緩沖存儲(chǔ)器(如一DRAM),然后再寫到非揮發(fā)性存儲(chǔ)器100之普通固件碼區(qū)段120中,以取代該第一程序碼Program_X。
因此,步驟208的實(shí)際進(jìn)行方式,可在該電子裝置將該緩沖存儲(chǔ)器中的該第二程序碼Program_A載入到非揮發(fā)性存儲(chǔ)器100之后進(jìn)行。在本發(fā)明的固件更新方法的另一實(shí)施例中,可將該緩沖存儲(chǔ)器中相對(duì)應(yīng)于該第一地址的值(01)先備妥,然后隨著該第二程序碼Program_A一同載入到非揮發(fā)性存儲(chǔ)器100中。如此一來,流程圖200中的步驟208便相當(dāng)于是與步驟206一起進(jìn)行。
甚至,在該更新用的程序碼Program_A的原始碼Source_A中,便可附加欲寫入普通固件碼區(qū)段120之該第一地址的值01至該原始碼Source_A后端的適當(dāng)位置。如此一來,當(dāng)該電子裝置將該原始碼編譯后所產(chǎn)生的第三程序碼Program_A1寫入非揮發(fā)性存儲(chǔ)器100時(shí),便會(huì)一并將普通固件碼區(qū)段120中之第一內(nèi)容130的值變更為符合該第一條件,而不需以另外的數(shù)據(jù)寫入步驟將01的值寫入到該第一地址以變更第一內(nèi)容130。
如前所述,在步驟204中該電子裝置系可以清除該第一地址所儲(chǔ)存之第一內(nèi)容130,使第一內(nèi)容130變成FF以符合該第二條件的要求,或是寫入除了該預(yù)設(shè)值01以外的一特定值(例如AA)至該第一地址的方式,將第一內(nèi)容130變成AA以符合該第二條件的要求。
另外,若該電子裝置以寫入一特定值(例如AA)至該第一地址的方式,將第一內(nèi)容130變成AA以符合該第二條件的要求,則該電子裝置亦可在該第二程序碼Program_A尚暫存于該緩沖存儲(chǔ)器中,還未載入到普通固件碼區(qū)段120前,先將該緩沖存儲(chǔ)器中相對(duì)于該第一地址之值變更為該特定值A(chǔ)A。如此一來,相當(dāng)于步驟204與步驟206可結(jié)合成單一步驟。亦即該電子裝置可一并將該特定值A(chǔ)A與該第二程序碼Program_A載入至普通固件碼區(qū)段120中,而不需要分成兩個(gè)步驟進(jìn)行。
同理,本發(fā)明之固件更新方法亦可于編譯該原始碼Source_A時(shí),將該特定值A(chǔ)A置于該原始碼Source_A前端的適當(dāng)位置,并一并編譯成一第四程序碼Program_A2。如此一來,當(dāng)該電子裝置將該第四程序碼Program_A2載入普通固件碼區(qū)段120時(shí),便會(huì)同時(shí)將該第一內(nèi)容130變更成符合該第二條件的狀況。相當(dāng)于步驟204與步驟206可結(jié)合成單一步驟。
更進(jìn)一步來說,于本發(fā)明之固件更新方法之另一實(shí)施例中,亦可將該特定值A(chǔ)A置于該原始碼Source_A前端的適當(dāng)位置,并將該預(yù)設(shè)值01置于該原始碼Source_A后端的適當(dāng)位置,然后將三者(該特定值A(chǔ)A、該原始碼Source_A及該預(yù)設(shè)值01)一并編譯成一第五程序碼Program_A3。很明顯地,在該電子裝置以該第五程序碼Program_A3取代該第一程序碼Program_X的過程之初,普通固件碼區(qū)段120中該第一地址所紀(jì)錄的第一內(nèi)容130,會(huì)先由符合該第一條件的01變成符合該第二條件的AA;而在該電子裝置以該第五程序碼Program_A3取代該第一程序碼Program_X的之最后過程中,第一內(nèi)容130又會(huì)由符合該第二條件的AA變更為符合該第一條件的01。
最后,當(dāng)該電子裝置成功完成本發(fā)明所公開的固件更新程序后,普通固件碼區(qū)段120中該第一地址所紀(jì)錄的第一內(nèi)容130,會(huì)是符合該第一條件的01。
因此,不論前述第一內(nèi)容130之值,是由一更新用的程序碼(例如前述之Program_A1、Program_A2或Program_A3)所設(shè)定,亦或是該電子裝置在載入一更新用的程序碼(例如前述之Program_A、Program_A1或Program_A2)至普通固件碼區(qū)段120之前或之后所設(shè)定,只要在固件更新的過程中應(yīng)用普通固件碼區(qū)段120中的至少一特定位置,以紀(jì)錄與固件更新狀態(tài)有關(guān)的一特定值或一變數(shù),均涵蓋于于本發(fā)明之固件更新方法的架構(gòu)之中。
以上說明本發(fā)明之固件更新方法的過程中,是以普通固件碼區(qū)段120中一特定地址所儲(chǔ)存之值(亦即該第一地址所儲(chǔ)存之第一內(nèi)容130)為例,說明于固件更新的過程中該特定地址所儲(chǔ)存之值的變化情形。請(qǐng)注意,本發(fā)明之固件更新方法并不限定于僅能使用一特定地址所儲(chǔ)存之值來代表固件更新時(shí)的狀態(tài)。在實(shí)際應(yīng)用上,亦可使用兩個(gè)或兩個(gè)以上的特定地址,來儲(chǔ)存相同長(zhǎng)度或不同長(zhǎng)度的數(shù)據(jù),以提供關(guān)于固件更新狀態(tài)的相關(guān)信息。理所當(dāng)然,此時(shí)該第一條件與該第二條件的設(shè)定也要隨之作對(duì)應(yīng)的修改。
請(qǐng)參考圖3。圖3為本發(fā)明用以儲(chǔ)存固件程序碼之另一非揮發(fā)性存儲(chǔ)器的示意圖300。非揮發(fā)性存儲(chǔ)器300中的存儲(chǔ)器空間包含有一引導(dǎo)碼區(qū)段310,用以儲(chǔ)存系統(tǒng)引導(dǎo)碼;以及一普通固件碼區(qū)段320,用以儲(chǔ)存其它的固件程序碼。普通固件碼區(qū)段320中包含有位于第二地址的第二內(nèi)容330,以及位于第三地址的第三內(nèi)容340,該第二地址與該第三地址是可預(yù)先選定的普通固件碼區(qū)段320中的任何地址。另外,第二內(nèi)容330與第三內(nèi)容340的數(shù)據(jù)長(zhǎng)度可以相同,亦可以不同。在這樣的情況下,該第一條件與該第二條件的設(shè)定需要作適當(dāng)?shù)男薷摹?br>
在本發(fā)明之一實(shí)施例中,系設(shè)定該第一條件為第二內(nèi)容330與第三內(nèi)容340兩者之內(nèi)容均為相同的預(yù)設(shè)值,例如01;而該第二條件系為第二內(nèi)容330與第三內(nèi)容340兩者之值中有一個(gè)不是該預(yù)設(shè)值。在這樣的條件設(shè)定下,不論將第二內(nèi)容330與第三內(nèi)容340均變更為第二值,例如BB,或是僅將第二內(nèi)容330與第三內(nèi)容340兩者的其中之一變更為該第二值BB,都符合該第二條件的要求。甚至,將第二內(nèi)容330變更為該第二值BB,而將第三內(nèi)容340變更為第三值CC的情況,亦符合該第二條件之要求。
在本發(fā)明之另一實(shí)施例中,設(shè)定該第一條件為第二內(nèi)容330與第三內(nèi)容340兩者之內(nèi)容系為相同之任何值,例如兩者均為11或均為22;而該第二條件系為第二內(nèi)容330與第三內(nèi)容340兩者之值不相同,例如第二內(nèi)容330為11,而第三內(nèi)容340為22。很明顯地,在這樣的條件設(shè)定下,若將第二內(nèi)容330與第三內(nèi)容340均變更為該第二值BB,則會(huì)符合該第一條件而不符合該第二條件。
請(qǐng)注意,本發(fā)明之固件更新方法對(duì)于該第一條件與該第二條件之設(shè)定方式,并不限定于上述兩種方式。在本發(fā)明之固件更新方法中,該第一條件或該第二條件亦可設(shè)定為對(duì)第二內(nèi)容330與第三內(nèi)容340進(jìn)行運(yùn)算后的結(jié)果。在實(shí)際應(yīng)用上,只要將該第一條件與該第二條件作相對(duì)應(yīng)的設(shè)定,以利用普通固件碼區(qū)段120中一個(gè)以上的特定地址所儲(chǔ)存之值,來提供關(guān)于固件更新狀態(tài)的相關(guān)信息,均屬于本發(fā)明之固件更新方法的應(yīng)用范圍。甚至,在本發(fā)明之一較佳實(shí)施例中,亦可于設(shè)定該第一條件之要求后,單純地將該第二條件設(shè)定為該第一條件之互斥條件。亦即,除了該第一條件所設(shè)定之要求以外的狀況均屬于該第二條件之范圍。
由于本發(fā)明之固件更新方法應(yīng)用于使用非揮發(fā)性存儲(chǔ)器300的電子裝置時(shí)所進(jìn)行的步驟,與本發(fā)明之方法應(yīng)用于使用非揮發(fā)性存儲(chǔ)器100的電子裝置時(shí)相類似。因此,同樣以流程圖200說明本發(fā)明之固件更新方法應(yīng)用于使用非揮發(fā)性存儲(chǔ)器300之該電子裝置時(shí)的運(yùn)作情形。
如前所述,在本發(fā)明之一較佳實(shí)施例中,設(shè)定該第一條件為第二內(nèi)容330與第三內(nèi)容340兩者都為相同的預(yù)設(shè)值,而該第二條件為該第一條件之互斥條件,亦即該第二條件為第二內(nèi)容330與第三內(nèi)容340并非均為該預(yù)設(shè)值。該預(yù)設(shè)值可以是任意值,在以下的說明中舉01為例。
當(dāng)該電子裝置以一更新用的第六程序碼Program_B取代普通固件碼區(qū)段320中原先之該第一程序碼Program_X前,位于該第二地址之第二內(nèi)容330與位于該第三地址之第三內(nèi)容340兩者之初始值,可以是任意組合,亦可符合該第一條件之要求。為了說明上的方便,以下假設(shè)第二內(nèi)容330與第三內(nèi)容340之初始值,在該更新用的程序碼Program_B取代該第一程序碼Program_X前,符合該第一條件之要求,亦即兩者均為01。
在步驟204中,該電子裝置于使用該第六程序碼Program_B取代該第一程序碼Program_X前,會(huì)先將第二內(nèi)容330與第三內(nèi)容340的值變更為符合該第二條件。此時(shí),該電子裝置可以只將第二內(nèi)容330與第三內(nèi)容340的其中之一變更成01以外的值,亦可將兩者均變更為01以外的值。接下來該電子裝置便會(huì)進(jìn)行步驟206,以該第六程序碼Program_B取代該第一程序碼Program_X。
當(dāng)該第六程序碼Program_B完全取代該第一程序碼Program_X后,該電子裝置會(huì)進(jìn)行步驟208,將第二內(nèi)容330與第三內(nèi)容340的值變更為符合該第一條件,亦即使兩者均成為01。
同理,在步驟204中,該電子裝置將第二內(nèi)容330與第三內(nèi)容340的值變更為符合該第二條件的方式,亦不限定于必須在載入該第六程序碼Program_B至普通固件碼區(qū)段320前,寫入01以外的值至該第二地址或該第三地址。實(shí)際上,該電子裝置可將該緩沖存儲(chǔ)器中相對(duì)應(yīng)于該第二地址的值先變更為01,然后隨著該第六程序碼Program_B一同載入到非揮發(fā)性存儲(chǔ)器300中。
甚至,本發(fā)明之固件更新方法亦可在編譯該更新用的第六程序碼Program_B之原始碼Source_B時(shí),將01以外的任意值(例如AA)置于該原始碼Source_B前端的適當(dāng)位置,并一并編譯成一第七程序碼Program_B1。如此一來,當(dāng)該電子裝置將該第七程序碼Program_B1載入普通固件碼區(qū)段320時(shí),便會(huì)同時(shí)將該第二內(nèi)容330變更成AA以符合該第二條件的狀況。相當(dāng)于步驟204與步驟206可結(jié)合成單一步驟。
同樣地,在步驟208中,該電子裝置將第二內(nèi)容330與第三內(nèi)容340的值變更為符合該第一條件的方式,亦不限定于必須在載入該第六程序碼Program_B至普通固件碼區(qū)段320后,寫入01至該第二地址及該第三地址。實(shí)際上,該電子裝置可將該緩沖存儲(chǔ)器中相對(duì)應(yīng)于該第二和第三地址的值先變更為01,然后隨著該第六程序碼Program_B一同載入到非揮發(fā)性存儲(chǔ)器300中。如此一來,在該第六程序碼Program_B取代該第一程序碼Program_X前,符合該第二條件之第二內(nèi)容330與第三內(nèi)容340,在該第六程序碼Program_B取代該第一程序碼Program_X之后,又會(huì)變成符合該第一條件。
在本發(fā)明之另一實(shí)施例中,該電子裝置在步驟204中系清除該第三地址所儲(chǔ)存之值,使第三內(nèi)容340變?yōu)镕F,并可在編譯該更新用的第六程序碼之原始碼Source_B時(shí),將數(shù)值01置于該原始碼Source_B后端的適當(dāng)位置,并一并編譯成一第八程序碼Program_B2。如此一來,當(dāng)該電子裝置將該第八程序碼Program_B2載入普通固件碼區(qū)段320時(shí),便會(huì)同時(shí)將該第三內(nèi)容340變更成01以符合該第一條件的狀況。
另外,在實(shí)作上亦可選擇普通固件碼區(qū)段320中最前端的位置作為該第二地址,而最后端的位置作為該第三地址,并且利用第二內(nèi)容330與第三內(nèi)容340來記錄普通固件碼區(qū)段320中該第一程序碼Program_X之版本信息。此時(shí),本發(fā)明之固件更新方法可設(shè)定該第一條件為第二內(nèi)容330與第三內(nèi)容340兩者之內(nèi)容均為相同之任何值,而該第二條件為第二內(nèi)容330與第三內(nèi)容340兩者之值不相同。而固件廠商在編譯該更新用之程序碼的原始碼Source_B時(shí),便可在該原始碼Source_B之前后分別附加該原始碼Source_B的版本信息,然后將該原始碼Source_B與附加的版本信息一并編譯成一第九程序碼Program_B3。
如此一來,該電子裝置在進(jìn)行固件更新時(shí),僅需以該第九程序碼Program_B3取代該第一程序碼Program_X,便可達(dá)成本發(fā)明之目的。
由上述可知,本發(fā)明之固件更新方法的一項(xiàng)重要技術(shù)特征,在于進(jìn)行固件更新的過程中,會(huì)改變非揮發(fā)性存儲(chǔ)器中至少一特定地址所儲(chǔ)存之值,使得該至少一特定地址所儲(chǔ)存之值,在固件更新的過程中與固件更新完成后會(huì)符合不同的條件狀況,以提供一種關(guān)于固件更新狀態(tài)的參考信息。
請(qǐng)注意,在前述說明中利用非揮發(fā)性存儲(chǔ)器100(或300)之普通固件碼區(qū)段120(或320)中的至少一特定地址,來說明本發(fā)明之不同實(shí)施例,此僅為了方便說明,而非限定本發(fā)明之應(yīng)用范圍。在本發(fā)明之實(shí)際應(yīng)用上,本領(lǐng)域的技術(shù)人員亦可利用該電子裝置中,除了非揮發(fā)性存儲(chǔ)器100(或300)之外的一個(gè)或一個(gè)以上額外的非揮發(fā)性存儲(chǔ)器(如FLASH或EEPROM等等),來記錄固件更新過程中的相關(guān)信息。亦即,該至少一特定地址可均位于該額外的非揮發(fā)性存儲(chǔ)器之存儲(chǔ)器空間中。甚至,本發(fā)明之固件更新方法亦可同時(shí)利用非揮發(fā)性存儲(chǔ)器100(或300)之普通固件碼區(qū)段120(或320)中的部分存儲(chǔ)器地址,以及除了非揮發(fā)性存儲(chǔ)器100(或300)之外的一個(gè)或一個(gè)以上額外的非揮發(fā)性存儲(chǔ)器(如FLASH或EEPROM等等)中的部分存儲(chǔ)器地址,來共同記錄關(guān)于固件更新狀態(tài)的參考信息。
相較于公知技術(shù),本發(fā)明所提出之電子裝置更新固件碼的方法的優(yōu)點(diǎn),在于該電子裝置進(jìn)行固件更新的過程中,僅需對(duì)該至少一特定地址作簡(jiǎn)單的設(shè)定,不需備份一份比對(duì)用的程序碼,亦不需復(fù)雜的固件碼更新程序。
請(qǐng)參考圖4。圖4為本發(fā)明于一電子裝置中判斷固件程序碼之正確性的流程圖400。流程圖400包含有以下步驟步驟402開始。
步驟404提供一檢查指令于引導(dǎo)碼區(qū)段中。
步驟406利用該電子裝置執(zhí)行引導(dǎo)碼區(qū)段中之該檢查指令。
步驟408判斷至少一特定地址之值是否符合一預(yù)設(shè)條件。
步驟410結(jié)束。
如前所述,在實(shí)作上可利用包含有一個(gè)以上非揮發(fā)性存儲(chǔ)器之一存儲(chǔ)器模塊來儲(chǔ)存該電子裝置之固件程序碼,而為了方便說明流程圖400的運(yùn)作情形,以下舉圖3中的非揮發(fā)存儲(chǔ)器300作為儲(chǔ)存固件程序碼的例子。本領(lǐng)域的技術(shù)人員可將本發(fā)明應(yīng)用于一包含有多個(gè)非揮發(fā)性存儲(chǔ)器的存儲(chǔ)器模塊。
由前述關(guān)于本發(fā)明之固件更新方法的說明中可以發(fā)現(xiàn),倘若該電子裝置于進(jìn)行固件更新的過程中發(fā)生錯(cuò)誤,以致于固件更新的動(dòng)作不完全,因而導(dǎo)致普通固件碼區(qū)段320中的部分內(nèi)容已經(jīng)被該更新用的程序碼所取代,但有部分內(nèi)容仍為該第一程序碼Program_X原先的內(nèi)容。在這樣的情況下,只要檢查普通固件碼區(qū)段320中該第二地址所儲(chǔ)存之第二內(nèi)容330與該第三地址所儲(chǔ)存之第三內(nèi)容340系符合該第一條件或該第二條件,便可判斷出上一次進(jìn)行的固件更新動(dòng)作是否完全,進(jìn)而判斷出普通固件碼區(qū)段320中程序碼的正確性。
因此,在步驟404中,固件廠商便可加入一檢查指令至非揮發(fā)性存儲(chǔ)器300中,用以檢查普通固件碼區(qū)段320中之該第二地址與該第三地址所儲(chǔ)存之內(nèi)容(即第二內(nèi)容330與第三內(nèi)容340),系符合一預(yù)設(shè)的條件(例如該第一條件)或其它的條件(例如該第二條件)。在本發(fā)明之一較佳實(shí)施例中,該第二條件被設(shè)定為該第一條件之互斥條件。為了避免該檢查指令在固件更新的過程中受到破壞,在本發(fā)明之一較佳實(shí)施例中,在系統(tǒng)引導(dǎo)碼(Boot Code)中加入該檢查指令。
在步驟406中,該電子裝置可在每次啟動(dòng)時(shí)、固件更新失敗后重新開機(jī)時(shí)、固件更新動(dòng)作完成時(shí)、或其它情況下需要時(shí)執(zhí)行該檢查指令,以檢查普通固件碼區(qū)段320中該第二地址所儲(chǔ)存之值(第二內(nèi)容330)與該第三地址所儲(chǔ)存之值(第三內(nèi)容340)。
接著在步驟408中,該電子裝置會(huì)判斷第二內(nèi)容330與第三內(nèi)容340是否符合該第一條件,若是,則推定前一次所進(jìn)行的固件更新動(dòng)作是成功的,亦即普通固件碼320中的程序碼是正確的;反之,若第二內(nèi)容330與第三內(nèi)容340系符合該第二條件,則推定上一次進(jìn)行的固件更新動(dòng)作不完全,亦即普通固件碼320中的程序碼有錯(cuò)誤。
如前所述,若該電子裝置應(yīng)用前述本發(fā)明之固件更新方法進(jìn)行固件更新時(shí),僅使用了單一特定地址(例如圖1中之該第一地址)作為紀(jì)錄固件新狀態(tài)之用,則在本發(fā)明之固件正確性的判斷方法中,步驟404所提供之該檢查指令亦僅需檢查該第一地址所紀(jì)錄之值便可。
因此,該檢查指令所欲檢查的地址數(shù)目與查核的條件內(nèi)容,均視該固件的設(shè)計(jì)而定,并不限定于前述說明中所舉例的使用一個(gè)或兩個(gè)地址的情況。在實(shí)際應(yīng)用上亦可使用兩個(gè)以上的地址來儲(chǔ)存所欲查核的內(nèi)容。
請(qǐng)注意,由于本發(fā)明可利用除了非揮發(fā)性存儲(chǔ)器300以外的一個(gè)或一個(gè)以上額外的非揮發(fā)性存儲(chǔ)器(如FLASH或EEPROM等等),來記錄固件更新過程中的相關(guān)信息。或是同時(shí)利用非揮發(fā)性存儲(chǔ)器300之普通固件碼區(qū)段320中的部分存儲(chǔ)器地址,以及除了非揮發(fā)性存儲(chǔ)器300之外的一個(gè)或一個(gè)以上額外的非揮發(fā)性存儲(chǔ)器(如FLASH或EEPROM等等),來共同記錄關(guān)于固件更新狀態(tài)的參考信息。因此,固件廠商于步驟404中所提供的該檢查指令之內(nèi)容,系可依據(jù)該電子裝置預(yù)設(shè)的固件程序碼更新方式而調(diào)整。
例如,該電子裝置在進(jìn)行固件程序碼的更新過程中,若同時(shí)利用非揮發(fā)性存儲(chǔ)器300之普通固件碼區(qū)段320中的部分存儲(chǔ)器地址,以及除了非揮發(fā)性存儲(chǔ)器300之外的一個(gè)或一個(gè)以上額外的非揮發(fā)性存儲(chǔ)器(如FLASH或EEPROM等等),來共同記錄關(guān)于固件更新狀態(tài)的參考信息,則該檢查指令所指定的檢查內(nèi)容,便會(huì)包含非揮發(fā)性存儲(chǔ)器300中的部分存儲(chǔ)器地址以及該額外的非揮發(fā)性存儲(chǔ)器。如此一來,該電子裝置于步驟408中,會(huì)依據(jù)該檢查指令檢查分屬普通固件碼區(qū)段320以及該額外的非揮發(fā)性存儲(chǔ)器中的該至少一特定地址之值,是否符合該預(yù)設(shè)條件,以作為判斷該固件之正確性的依據(jù)。
相較于公知技術(shù)判斷一固件碼之正確性時(shí),由于需對(duì)該固件之程序碼進(jìn)行校驗(yàn)和的計(jì)算,并將計(jì)算所得之結(jié)果與一比對(duì)固件碼之校驗(yàn)和相比較,因而判斷的效率與固件程序碼的長(zhǎng)度成反比。很明顯地,本發(fā)明之固件正確性的判斷方法比公知技術(shù)更為簡(jiǎn)單也更有效率。若固件碼的容量越大,則公知技術(shù)計(jì)算校驗(yàn)和的時(shí)間也就會(huì)相對(duì)增加,與本發(fā)明所提出之判斷方法兩者間的效率差距亦會(huì)越明顯。
而且,本發(fā)明所公開的判斷一固件碼之正確性的方法,由于不需要額外的存儲(chǔ)器空間儲(chǔ)存另一份比對(duì)用的普通固件碼,故可降低對(duì)存儲(chǔ)器空間的需求以及電路成本。
一般而言,固件正確性的判斷并不僅于固件更新后進(jìn)行,而是該電子裝置每一次啟動(dòng)時(shí)都需要進(jìn)行,以依據(jù)判斷的結(jié)果選擇該電子裝置該次啟動(dòng)時(shí)所應(yīng)執(zhí)行的固件碼。因此,本發(fā)明亦提出一種在一電子裝置啟動(dòng)時(shí)執(zhí)行一固件的方法。
請(qǐng)參考圖5。圖5為本發(fā)明在一電子裝置啟動(dòng)時(shí)執(zhí)行一固件程序碼的方法之流程圖500。流程圖500中包含有以下步驟步驟502開始。
步驟504檢查至少一特定地址之值。
步驟506判斷該至少一特定地址之值是否符合一預(yù)設(shè)條件。若是,則進(jìn)行步驟508;若否,則進(jìn)行步驟510。
步驟508該電子裝置可執(zhí)行普通固件碼區(qū)段之程序碼。
步驟510該電子裝置會(huì)執(zhí)行引導(dǎo)碼區(qū)段之程序碼,而不會(huì)執(zhí)行普通固件碼區(qū)段之程序碼。
步驟512結(jié)束。該電裝置依據(jù)所執(zhí)行之程序碼進(jìn)行啟動(dòng)程序。
本發(fā)明之電子裝置執(zhí)行固件碼的方法與前述本發(fā)明之判斷固件碼正確性的方法很類似。亦即,實(shí)作上該至少一特定地址可均位于用來儲(chǔ)存該固件程序碼之一非揮發(fā)性存儲(chǔ)器模塊中,或均位于除了該非揮發(fā)性存儲(chǔ)器模塊之外的一個(gè)或一個(gè)以上額外的非揮發(fā)性存儲(chǔ)器(如FLASH或EEPROM等等)中。甚至,該至少一特定地址亦可包含有該存儲(chǔ)器模塊之普通固件碼區(qū)段中的部分存儲(chǔ)器地址以及該額外的非揮發(fā)性存儲(chǔ)器中的存儲(chǔ)器地址。為方便說明流程圖500的運(yùn)作情形,以下同樣舉圖3中的非揮發(fā)存儲(chǔ)器300作為例子。
在步驟504中,該電子裝置于啟動(dòng)時(shí)會(huì)檢查普通固件碼區(qū)段320中該第二地址與該第三地址之值。于本發(fā)明之一較佳實(shí)施例中,該電子裝置系于啟動(dòng)時(shí)執(zhí)行引導(dǎo)碼區(qū)段310中之一檢查指令,并依據(jù)該檢查指令檢查普通固件碼區(qū)段320中該第二地址與該第三地址之值。步驟504之說明與前述步驟406相似,為簡(jiǎn)潔起見,在不影響本發(fā)明之技術(shù)揭露下,不予贅述。
同理,該檢查程式之內(nèi)容亦可為檢查普通固件碼區(qū)段320中單一特定地址所儲(chǔ)存之值是否符合一預(yù)設(shè)條件。于實(shí)際應(yīng)用上,該檢查指令所欲檢查的地址數(shù)目與查核的條件內(nèi)容,端視該固件的設(shè)計(jì)而定。
接著,在步驟506中,該電子裝置會(huì)判斷第二內(nèi)容330與第三內(nèi)容340是否符合該第一條件,若是,則推斷前一次所進(jìn)行的固件更新動(dòng)作是成功的,亦即普通固件碼320中的程序碼是正確的,則該電子裝置會(huì)進(jìn)行步驟508;反之,若第二內(nèi)容330與第三內(nèi)容340不符合該第一條件,則推斷上一次進(jìn)行的固件更新動(dòng)作不完全,亦即普通固件碼320中的程序碼有錯(cuò)誤,則該電子裝置會(huì)進(jìn)行步驟510。
在步驟508中,由于該電子裝置依據(jù)該檢查指令判斷后,推定普通固件碼320中的程序碼系正確無誤,因此,該電子裝置可執(zhí)行普通固件碼區(qū)段320中之程序碼,以進(jìn)行正常啟動(dòng)程序。
在步驟510中,由于該電子裝置推定普通固件碼320中的程序碼有誤,因此,該電子裝置僅會(huì)執(zhí)行引導(dǎo)碼區(qū)段310中的系統(tǒng)引導(dǎo)碼進(jìn)行啟動(dòng)程序,而不會(huì)執(zhí)行普通固件碼區(qū)段320中之程序碼。因此,在本發(fā)明所公開的在電子裝置啟動(dòng)時(shí)執(zhí)行固件的方法中,該電子裝置便可避免因?yàn)檎`執(zhí)行普通固件碼區(qū)段320中有錯(cuò)誤的程序碼,而造成該電子裝置進(jìn)一步毀損的情形。更重要的是由于該電子裝置可藉由執(zhí)行引導(dǎo)碼區(qū)段310中的系統(tǒng)引導(dǎo)碼而啟動(dòng),使得該電子裝置可重新進(jìn)行一次固件更新的程序,以修正普通固件碼區(qū)段320中程序碼錯(cuò)誤的情形。
相較于公知技術(shù)中,一電子裝置于啟動(dòng)時(shí)需對(duì)其固件碼進(jìn)行計(jì)算校驗(yàn)和之演算,不但會(huì)影響系統(tǒng)執(zhí)行的效率,亦可能因?yàn)樾r?yàn)和演算法的不精確,使得該電子裝置因?yàn)檎`執(zhí)行了有誤的程序碼,而造成進(jìn)一步損壞甚至無法重新進(jìn)行固件更新的情形。很明顯地,本發(fā)明所公開的在電子裝置啟動(dòng)時(shí)執(zhí)行一固件碼之方法的優(yōu)點(diǎn),在于該電子裝置僅需檢查該至少一特定地址之值,而不需要對(duì)該普通固件碼區(qū)段之程序碼作校驗(yàn)和的運(yùn)算與比對(duì),具有簡(jiǎn)單、迅速的特性,可提升該電子裝置啟動(dòng)時(shí)的效率。
以上所述僅為本發(fā)明之較佳實(shí)施例,凡依本發(fā)明申請(qǐng)專利范圍所做之均等變化與修飾,皆應(yīng)屬本發(fā)明專利的涵蓋范圍。
權(quán)利要求
1.一種用于在電子裝置中更新存儲(chǔ)器模塊中的程序碼的方法,該存儲(chǔ)器模塊包含有一普通固件碼區(qū)段,該方法包含步驟將至少一特定地址所儲(chǔ)存的值設(shè)定為符合一第二條件;以一第二程序碼取代該普通固件碼區(qū)段當(dāng)中所包含的第一程序碼;以及設(shè)定該至少一特定地址所儲(chǔ)存的值,以使該普通固件碼區(qū)段中的程序碼更新完成時(shí)該至少一特定地址所儲(chǔ)存的值符合一第一條件。
2.如權(quán)利要求1所述之方法,其中,所述至少一特定地址所儲(chǔ)存的值,是作為判斷所述普通固件碼區(qū)段中程序碼更新后之正確性的依據(jù)。
3.如權(quán)利要求1所述之方法,其中,所述第一條件為所述至少一特定地址所儲(chǔ)存的值為一第一值。
4.如權(quán)利要求1所述之方法,其中,所述第一條件為所述至少一特定地址所儲(chǔ)存的值為一特定組合。
5.如權(quán)利要求1所述之方法,其中,所述第一條件為所述至少一特定地址所儲(chǔ)存的值均為相同的值。
6.如權(quán)利要求1所述之方法,其中,所述第一條件為所述至少一特定地址所儲(chǔ)存的值經(jīng)運(yùn)算后為一特定值。
7.如權(quán)利要求1所述之方法,其中,所述第二條件為該第一條件之互斥條件。
8.如權(quán)利要求1所述之方法,其中,所述至少一特定地址為包含有至少一非揮發(fā)性存儲(chǔ)器中的部分存儲(chǔ)器地址。
9.如權(quán)利要求1述之方法,其中,所述至少一特定地址為包含有所述普通固件碼區(qū)段中的部分存儲(chǔ)器地址。
10.如權(quán)利要求1所述之方法,其中,所述至少一特定地址為包含有除了該存儲(chǔ)器模塊外的至少一非揮發(fā)性存儲(chǔ)器以及所述普通固件碼區(qū)段中的部分存儲(chǔ)器地址。
11.如權(quán)利要求1所述之方法,其中,所述電子裝置為一光盤機(jī)。
12.一種用于電子裝置啟動(dòng)時(shí)執(zhí)行存儲(chǔ)器模塊中的程序碼的方法,該存儲(chǔ)器模塊包含有一普通固件碼區(qū)段,該方法包含有利用該電子裝置檢查至少一特定地址所儲(chǔ)存之值;若該至少一特定地址所儲(chǔ)存之值符合一第二條件,則該電子裝置執(zhí)行引導(dǎo)碼區(qū)段內(nèi)的程序碼而不執(zhí)行該普通固件碼區(qū)段內(nèi)的程序碼;以及若該至少一特定地址所儲(chǔ)存之值符合一第一條件,則該電子裝置執(zhí)行該普通固件碼區(qū)段內(nèi)的程序碼。
13.如權(quán)利要求12所述之方法,其中,還包含利用所述電子裝置執(zhí)行一檢查指令,以檢查所述至少一特定地址所儲(chǔ)存之值。
14.如權(quán)利要求13所述之方法,其中,所述檢查指令儲(chǔ)存在該存儲(chǔ)器模塊的所述引導(dǎo)碼區(qū)段中。
15.如權(quán)利要求12所述之方法,其中,所述至少一特定地址所儲(chǔ)存之值若符合所述第二條件,則表示所述固件的所述普通固件碼區(qū)段中的程序碼有誤。
16.如權(quán)利要求12所述之方法,其中,所述至少一特定地址所儲(chǔ)存之值若符合所述第一條件,則表示所述固件的所述普通固件碼區(qū)段中的程序碼正確無誤。
17.如權(quán)利要求12所述之方法,其中,所述第一條件為所述至少一特定地址所儲(chǔ)存之值為一第一值。
18.如權(quán)利要求12所述之方法,其中,所述第一條件為所述至少一特定地址所儲(chǔ)存之值為一特定組合。
19.如權(quán)利要求12所述之方法,其中,所述第一條件為所述至少一特定地址所儲(chǔ)存之值均為相同之值。
20.如權(quán)利要求12所述之方法,其中,所述第一條件為所述至少一特定地址所儲(chǔ)存之值經(jīng)運(yùn)算后為一特定值。
21.如權(quán)利要求12所述之方法,其中,所述第二條件為所述第一條件之互斥條件。
22.如權(quán)利要求12所述之方法,其中,所述至少一特定地址包含有至少一非揮發(fā)性存儲(chǔ)器中的部分存儲(chǔ)器地址。
23.如權(quán)利要求12所述之方法,其中,所述至少一特定地址包含有所述普通固件碼區(qū)段中的部分存儲(chǔ)器地址。
24.如權(quán)利要求12所述之方法,其中,所述至少一特定地址包含有除了該存儲(chǔ)器模塊外的至少一非揮發(fā)性存儲(chǔ)器以及該普通固件碼區(qū)段中的部分存儲(chǔ)器地址。
25.如權(quán)利要求12所述之方法,其中,所述電子裝置為一光盤機(jī)。
26.一種用于在電子裝置中判斷存儲(chǔ)器模塊中程序碼正確性的方法,該存儲(chǔ)器模塊包含有一普通固件碼區(qū)段,該方法包含有將至少一特定地址所儲(chǔ)存之值設(shè)定為符合一第一條件;提供一檢查指令;以及利用該檢查指令檢查該至少一特定地址之值;其中,該電子裝置在啟動(dòng)時(shí)依據(jù)該檢查指令,檢查該至少一特定地址之值,若該至少一特定地址所儲(chǔ)存之值符合一第二條件,表示該普通固件碼區(qū)段中之程序碼有誤;若該至少一特定地址所儲(chǔ)存之值符合該第一條件,表示該普通固件碼區(qū)段中之程序碼正確無誤。
27.如權(quán)利要求26所述之方法,其中,還包含儲(chǔ)存該檢查指令于該存儲(chǔ)器模塊之一引導(dǎo)碼區(qū)段中。
28.如權(quán)利要求26所述之方法,其中,還包含有若所述普通固件碼區(qū)段中之程序碼有誤,則所述電子裝置執(zhí)行所述存儲(chǔ)器模塊的一引導(dǎo)碼區(qū)段內(nèi)的程序碼,而不執(zhí)行該普通固件碼區(qū)段內(nèi)的程序碼。
29.如權(quán)利要求26所述之方法,其中,還包含有若所述普通固件碼區(qū)段中之程序碼正確無誤,則該電子裝置執(zhí)行該普通固件碼區(qū)段內(nèi)之程序碼。
30.如權(quán)利要求26所述之方法,其中,還包含有在進(jìn)行該存儲(chǔ)器模塊中的程序碼更新動(dòng)作時(shí),利用該電子裝置以一第二程序碼取代所述普通固件碼區(qū)段當(dāng)中所包含之一第一程序碼。
31.如權(quán)利要求30所述之方法,其中,所述存儲(chǔ)器模塊之一引導(dǎo)碼區(qū)段當(dāng)中的程序碼,在該存儲(chǔ)器模塊中的程序碼更新的過程中,并不會(huì)被變更。
32.如權(quán)利要求30所述之方法,其還包含有在進(jìn)行該存儲(chǔ)器模塊中的程序碼更新動(dòng)作之初,將所述至少一特定地址所儲(chǔ)存之值設(shè)定為符合該第二條件。
33.如權(quán)利要求32所述之方法,其還包含有設(shè)定所述至少一特定地址所儲(chǔ)存之值,以使該至少一特定地址所儲(chǔ)存之值在所述存儲(chǔ)器模塊中的程序碼更新完成時(shí)符合所述第一條件。
34.如權(quán)利要求26所述之方法,其中,所述第一條件為所述至少一特定地址所儲(chǔ)存之值為一第一值。
35.如權(quán)利要求26所述之方法,其中,所述第一條件為所述至少一特定地址所儲(chǔ)存之值為一特定組合。
36.如權(quán)利要求26所述之方法,其中,所述第一條件為所述至少一特定地址所儲(chǔ)存之值均為相同之值。
37.如權(quán)利要求26所述之方法,其中,所述第一條件為所述至少一特定地址所儲(chǔ)存之值經(jīng)運(yùn)算后為一特定值。
38.如權(quán)利要求26所述之方法,其中,所述第二條件系為所述第一條件之互斥條件。
39.如權(quán)利要求26所述之方法,其中,所述至少一特定地址包含有至少一非揮發(fā)性存儲(chǔ)器中之部分存儲(chǔ)器地址。
40.如權(quán)利要求26所述之方法,其中,所述至少一特定地址包含有所述普通固件碼區(qū)段中的部分存儲(chǔ)器地址。
41.如權(quán)利要求26所述之方法,其中,所述至少一特定地址包含有除了所述存儲(chǔ)器模塊外的至少一非揮發(fā)性存儲(chǔ)器以及所述普通固件碼區(qū)段中之部分存儲(chǔ)器地址。
42.如權(quán)利要求26所述之方法,其中,所述電子裝置為一光盤機(jī)。
全文摘要
本發(fā)明公開了一種用于一電子裝置中判斷一存儲(chǔ)器模塊中程序碼之正確性的方法,該存儲(chǔ)器模塊包含有一普通固件碼區(qū)段,該方法包含有將至少一特定地址所儲(chǔ)存之值設(shè)定為符合一第一條件;提供一檢查指令;以及利用該檢查指令檢查該至少一特定地址所儲(chǔ)存之值;其中,該電子裝置在啟動(dòng)時(shí)依據(jù)該檢查指令,檢查該至少一特定地址之值是否符合該第一條件,以判斷該普通固件碼區(qū)段中之程序碼的正確性。
文檔編號(hào)G06F9/445GK1635473SQ20031012434
公開日2005年7月6日 申請(qǐng)日期2003年12月30日 優(yōu)先權(quán)日2003年12月30日
發(fā)明者陳炳盛, 吳松陽, 林晏丞 申請(qǐng)人:聯(lián)發(fā)科技股份有限公司