專利名稱:一種嵌入式設(shè)備出廠配置與生產(chǎn)配置的安全快速切換方法
技術(shù)領(lǐng)域:
本發(fā)明涉及嵌入式設(shè)備技術(shù)領(lǐng)域,尤其涉及一種在工廠量產(chǎn)時嵌入式設(shè)備出廠配置與生產(chǎn)配置的安全快速切換方法。
背景技術(shù):
各種嵌入式設(shè)備如手機(jī)、電視、網(wǎng)關(guān)、游戲機(jī),包括局端或終端設(shè)備,由于用戶個性化需求,需要保存配置文件,可以稱之為用戶配置。用戶配置通常是是用戶手動修改形成。而在用戶配置之前還有一個配置是出廠的時候就有的,可以稱之為出廠配置。由于用戶配置可能存在錯誤,經(jīng)常需要恢復(fù)出廠配置的操作,因此出廠配置或者默認(rèn)配置是需要長期保存在嵌入式設(shè)備之中的。在嵌入式設(shè)備中通常是以flash或者相當(dāng)于flash的器件為載體來保存配置文件的。然而在工廠生產(chǎn)時,需要使設(shè)備處于調(diào)試狀態(tài),來做一些生產(chǎn)測試的操作,比如會把某些功能如按鍵輸入功能關(guān)閉,某些調(diào)試模式打開等操作,這就需要一個工廠使用的測試模式配置文件或者稱之為生產(chǎn)配置。生產(chǎn)配置要求在生產(chǎn)的初步階段燒錄flash就必須存在并自動加載,測試完成后加載出廠配置,保證生產(chǎn)配置不再出現(xiàn)?;诠S生產(chǎn)效率的原因,出廠配置除了專門的和設(shè)備有關(guān)的產(chǎn)測配置之外,不可能臨時生成,必須在燒錄就同時存在。由于許多嵌入式設(shè)備采用只讀壓縮文件系統(tǒng)的原因,或者由于減少flash空間占用的原因,生產(chǎn)配置不一定能直接刪除掉。這就需要一種機(jī)制來保證生產(chǎn)配置和出廠配置的安全切換。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種嵌入式設(shè)備出廠配置與生產(chǎn)配置的安全快速切換方法,保證切換的安全性,提供量產(chǎn)的生產(chǎn)效率。本發(fā)明的目的是通過以下技術(shù)方案實現(xiàn)的:
一種嵌入式設(shè)備出廠配置與生產(chǎn)配置的安全快速切換方法,所述嵌入式設(shè)備包括flash,該方法包括:
定義配置標(biāo)識;該配置標(biāo)識被置位時用以指示加載生產(chǎn)配置文件、被清零時用以指示加載出廠配置文件;
預(yù)先生成生產(chǎn)配置文件和出廠配置文件;
置位所述配置標(biāo)識,生成包含配置標(biāo)識的燒錄文件,將其燒錄至flash ;在生產(chǎn)階段不改變配置標(biāo)識的值,在生產(chǎn)完成后將配置標(biāo)識清零;
在生產(chǎn)階段及出廠后階段,所述嵌入式設(shè)備在啟動后均根據(jù)所述配置標(biāo)識來選擇加載生產(chǎn)配置文件或出廠配置文件。其中,所述嵌入式設(shè)備的flash依次劃分為啟動加載程序分區(qū)、程序鏡像分區(qū)和配置數(shù)據(jù)分區(qū);所述配置標(biāo)識位于啟動加載程序分區(qū)的保留位。其中,所述生產(chǎn)配置文件和出廠配置文件生成至所述程序鏡像分區(qū)的根文件系統(tǒng)的配置目錄下。其中,所述配置標(biāo)識字段至少包含一個位,具體為多個位或多個字節(jié)。其中,所述配置標(biāo)識字段在從置位到清位的過程中至少有一個位從I變?yōu)镺。其中,所述配置標(biāo)識被置位后值為Oxff,被清零后值為0x00。其中,在出廠后,所述嵌入式設(shè)備在根據(jù)配置標(biāo)識選擇加載配置文件之前還進(jìn)行以下操作:判斷data配置區(qū)是否存在有效的配置文件,若有,則沿用當(dāng)前配置。與現(xiàn)有技術(shù)相比,本發(fā)明實施例具有以下有益效果:
本發(fā)明實施例中嵌入式設(shè)備的配置文件加載是通過檢查配置標(biāo)識來實現(xiàn),通過修改配置標(biāo)識來控制配置文件的切換,該修改過程是單向和不可逆的,出廠后恢復(fù)默認(rèn)配置或者由于某些原因?qū)е屡渲脕G失后加載默認(rèn)配置文件只可能加載出廠配置而不會加載生產(chǎn)配置,從而保證配置加載的安全性;而且,切換時由于只修改一個字節(jié)(對norflash而言),或者修改一個頁(對于nandflash而言),修改耗時很短,對于操作來說只需要產(chǎn)測軟件自動操作發(fā)送一個復(fù)位控制命令即可完成,因此切換是快速的。
圖1是本發(fā)明實施例中嵌入式設(shè)備的flash的分區(qū)存儲分布示意圖。圖2是本發(fā)明實施例中嵌入式設(shè)備出廠配置與生產(chǎn)配置的安全快速切換方法流程圖。
具體實施例方式為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合附圖及實施例,對本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。本發(fā)明的核心思想為:如圖1所示,預(yù)定義配置標(biāo)識,在生產(chǎn)測試前將其置位,在生產(chǎn)測試結(jié)束后將其復(fù)位,嵌入式設(shè)備在啟動后根據(jù)配置標(biāo)識的值來選擇加載相應(yīng)的配置文件。本發(fā)明實現(xiàn)嵌入式設(shè)備的出廠配置與生產(chǎn)配置的切換主要包括三個關(guān)鍵點:配置文件的分布機(jī)制,配置文件的生成機(jī)制,配置文件的切換機(jī)制。( I)配置文件的分布機(jī)制:
整個嵌入式設(shè)備的代碼都分布在flash上,具體地,可以分布于劃分的具體分區(qū),也可以直接分布到flash若干個對應(yīng)的區(qū)塊上。請參閱圖2,現(xiàn)有的flash通常按順序依次劃分為bootloader (啟動加載程序)分區(qū)、image (程序鏡像)分區(qū)(實際也可為多個image分區(qū))和config data (配置數(shù)據(jù))分區(qū)。其中bootloader分區(qū)用于存儲bootloader程序本身和bootloader所需要的配置參數(shù);image分區(qū)通常包括kernel (內(nèi)核)和rootfs (根文件系統(tǒng))兩部分,kernel也可以包含于rootfs中;config data分區(qū)為可選,包括系統(tǒng)運行需要的配置參數(shù)和運行的記錄信息,有時可能包括在rootfs里。
本實施例中,rootfs中存儲2個只讀的配置文件,分別是生產(chǎn)配置文件和出廠配置文件,config data分區(qū)用以保存實際起作用的配置信息,如生產(chǎn)配置、出廠配置或者用戶配置的信息,可以是以文件形式存在或者直接的數(shù)據(jù)結(jié)構(gòu)形式。配置區(qū)可以保存工廠配置或出廠配置,或者用戶配置的內(nèi)容。為后續(xù)的配置切換提供依據(jù),本實施例 將bootloader分區(qū)的特定區(qū)域的一個字段內(nèi)容定義為配置標(biāo)識,設(shè)備啟動后根據(jù)該配置標(biāo)識來判斷該使用何種配置。該配置標(biāo)識存放在于bootloader分區(qū),該字段至少包含一個位,可以是多個位或多個字節(jié),后面的值把該字段以一個字節(jié)的形式舉例說明但不局限于一個字節(jié)的情況。該配置標(biāo)識字段不屬于其中的引導(dǎo)代碼,而是位于保留的專用地址區(qū),只包含于程序的燒錄文件中而不包括于升級文件中。(2)配置文件的生成機(jī)制:
①配置文件的預(yù)生成:
生產(chǎn)配置文件和出廠配置文件為預(yù)先生成,代碼編譯時生成到rootfs的配置目錄下(例如Iinux下的/etc),編譯生成的文件不包含配置分區(qū)。編譯生成的文件稱為升級文件,升級文件包括根文件系統(tǒng)和引導(dǎo)部分。在生成燒錄文件時,對配置標(biāo)識字段置位為OxFF,該配置標(biāo)識是在編譯生成引導(dǎo)代碼后手動插入,在升級文件中不含有該字段,通常為bootloader部分的附加字段。②配置文件的加載:
設(shè)備啟動后,檢查config data分區(qū)是否存在配置文件(大多數(shù)情況下是用戶配置,這里不具體討論多配置的情況),如果存在有效配置,則沿用現(xiàn)有配置。如果上一步配置不存在有效配置,則考慮加載默認(rèn)配置,即選擇加載生產(chǎn)配置還是出廠配置。檢查時先讀取配置標(biāo)識,如果配置標(biāo)識置位則默認(rèn)加載生產(chǎn)配置,如果沒有置位則默認(rèn)加載出廠配置。(3)配置文件的切換:
在配置文件加載時可通過檢查配置標(biāo)識來選擇加載的配置文件,還可以修改配置標(biāo)識來控制配置的切換。該修改過程是單向的和不可逆的。配置標(biāo)識只有在生成燒錄文件才置位,在生產(chǎn)完成后即會進(jìn)行復(fù)位操作:將出廠配置寫入到config data分區(qū)作為當(dāng)前的配置文件;同時把配置標(biāo)識從OxFF清零成0x00。本實施例中,配置標(biāo)識的修改操作是不提供擦除方法的,根據(jù)flash的每個字節(jié)只能單向從OxFF修改00,這時無論嘗試寫入任何值其結(jié)果都是都是0x00,無法再被修改。有效保證了工廠復(fù)位操作后該配置標(biāo)識字段會一直都是0x00,也就保證了設(shè)備出廠后恢復(fù)默認(rèn)配置或者由于某些原因?qū)е屡渲脕G失后加載默認(rèn)配置文件只可能加載出廠配置而不會加載生產(chǎn)配置,從而保證配置加載的安全性。另外,切換時由于只修改一個字節(jié)(對norflash而言),或者修改一個頁(對于nandflash而言),因此修改耗時很短,對于操作來說只需要產(chǎn)測軟件自動操作發(fā)送一個復(fù)位控制命令即可完成,因此對于切換是快速的。以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種嵌入式設(shè)備出廠配置與生產(chǎn)配置的安全快速切換方法,所述嵌入式設(shè)備包括flash,其特征在于,該方法包括: 定義配置標(biāo)識;該配置標(biāo)識被置位時用以指示加載生產(chǎn)配置文件、被清零時用以指示加載出廠配置文件; 預(yù)先生成生產(chǎn)配置文件和出廠配置文件; 置位所述配置標(biāo)識,生成包含配置標(biāo)識的燒錄文件,將其燒錄至flash ;在生產(chǎn)階段不改變配置標(biāo)識的值,在生產(chǎn)完成后將配置標(biāo)識清零; 在生產(chǎn)階段及出廠后階段,所述嵌入式設(shè)備在啟動后均根據(jù)所述配置標(biāo)識來選擇加載生產(chǎn)配置文件或出廠配置文件。
2.按權(quán)利要求1所述嵌入式設(shè)備出廠配置與生產(chǎn)配置的安全快速切換方法,其特征在于,所述嵌入式設(shè)備的flash依次劃分為啟動加載程序分區(qū)、程序鏡像分區(qū)和配置數(shù)據(jù)分區(qū);所述配置標(biāo)識位于啟動加載程序分區(qū)的保留位。
3.按權(quán)利要求2所述嵌入式設(shè)備出廠配置與生產(chǎn)配置的安全快速切換方法,其特征在于,所述生產(chǎn)配置文件和出廠配置文件生成至所述程序鏡像分區(qū)的根文件系統(tǒng)的配置目錄下。
4.按權(quán)利要求3所述嵌入式設(shè)備出廠配置與生產(chǎn)配置的安全快速切換方法,其特征在于,所述配置標(biāo)識字段至少包含一個位,具體為多個位或多個字節(jié)。
5.按權(quán)利要求4所述嵌入式設(shè)備出廠配置與生產(chǎn)配置的安全快速切換方法,其特征在于,所述配置標(biāo)識字段在從置位到清位的過程中至少有一個位從I變?yōu)镺。
6.按權(quán)利要求5所述嵌入式設(shè)備出廠配置與生產(chǎn)配置的安全快速切換方法,其特征在于,所述配置標(biāo)識被置位后值為Oxff,被清零后值為0x00。
7.按權(quán)利要求1所述嵌入式設(shè)備出廠配置與生產(chǎn)配置的安全快速切換方法,其特征在于,在出廠后,所述嵌入式設(shè)備在根據(jù)配置標(biāo)識選擇加載配置文件之前還進(jìn)行以下操作:判斷data配置區(qū)是否存在有效的配置文件,若有,則沿用當(dāng)前配置。
全文摘要
本發(fā)明提供了一種嵌入式設(shè)備出廠配置與生產(chǎn)配置的安全快速切換方法,該方法包括定義配置標(biāo)識;該配置標(biāo)識被置位時用以指示加載生產(chǎn)配置文件、被清零時用以指示加載生產(chǎn)配置文件;預(yù)先生成生產(chǎn)配置文件和出廠配置文件;置位配置標(biāo)識,生成包含配置標(biāo)識的燒錄文件,將其燒錄至flash;在生產(chǎn)完成后將配置標(biāo)識清零;在生產(chǎn)階段及出廠后階段,嵌入式設(shè)備在啟動后均根據(jù)配置標(biāo)識來選擇加載生產(chǎn)/出廠配置文件。本發(fā)明配置文件加載是通過檢查配置標(biāo)識來實現(xiàn),通過修改配置標(biāo)識來控制配置切換,可保證配置加載的安全性和快速性;其中配置標(biāo)識利用flash的單向?qū)懭胩匦?,保證只能從0xff單向修改成0x00,即使升級只要而不重新燒錄便不可復(fù)原。
文檔編號G06F11/00GK103092660SQ201310038280
公開日2013年5月8日 申請日期2013年1月31日 優(yōu)先權(quán)日2013年1月31日
發(fā)明者劉宏鈞 申請人:深圳市共進(jìn)電子股份有限公司