專利名稱:系統(tǒng)參數(shù)在flash中的存儲方法
技術(shù)領(lǐng)域:
本發(fā)明涉及參數(shù)的存儲技術(shù)領(lǐng)域,尤其涉及系統(tǒng)參數(shù)在FLASH中的存儲方法。
背景技術(shù):
目前所生產(chǎn)的碟機、衛(wèi)星接收機等系統(tǒng)中都是使用EEPROM(電可擦寫可編程只讀存儲器)來保存用戶修改設(shè)定的系統(tǒng)參數(shù),可以使用戶的操作大大簡化,也極富人性化。但是隨著這些機器本身功能的不斷增強,需要保存的參數(shù)也越來越多,對EEPROM的容量要求也在不斷攀升,有的已高達8K、16K,這樣就使得整機的成本增加不少。因此,我們可以將系統(tǒng)參數(shù)存儲在FLASH中,這樣就可省去EEPROM,降低成本。但是系統(tǒng)參數(shù)在FLASH中的存儲并不能像在EEPROM中存儲那樣可以直接對任意地址進行讀寫修改,就需要我們能夠提出一種系統(tǒng)參數(shù)在FLASH中的存儲方法。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題是針對現(xiàn)有技術(shù)的不足,提出一種系統(tǒng)參數(shù)在FLASH中的存儲方法。
本發(fā)明解決上述技術(shù)問題采用的技術(shù)方案是系統(tǒng)參數(shù)在FLASH中的存儲方法,包括以下步驟 a.在FLASH中劃分扇區(qū)用于存儲系統(tǒng)參數(shù); b.在內(nèi)存中分配存儲系統(tǒng)參數(shù)所需的空間,作為一個臨時buffer; c.將FLASH中存儲的系統(tǒng)參數(shù)讀取到所述臨時buffer中; d.用戶在臨時buffer中對系統(tǒng)參數(shù)進行設(shè)定修改; e.對FLASH中存儲系統(tǒng)參數(shù)的扇區(qū)進行擦除; f.將臨時buffer中的經(jīng)過修改后的系統(tǒng)參數(shù)存儲于FLASH中經(jīng)過擦除后的扇區(qū)。
本發(fā)明的有益效果是能夠省去EEPROM器件,降低了成本。
具體實施例方式 下面結(jié)合實施例對本發(fā)明作進一步的描述。
本發(fā)明突破了現(xiàn)有技術(shù)對系統(tǒng)參數(shù)的存儲慣例,即將存儲于EEPROM中的系統(tǒng)參數(shù)保存于FLASH(閃存)中,這樣就可以省去整機中的EEPROM,降低了成本,提高產(chǎn)品的市場競爭力 EEPROM的存取方式相對于FLASH來說,EEPROM可以直接對任意地址進行讀寫,而在將參數(shù)存入FLASH之前必須使扇區(qū)為空,則需對FLASH進行擦除處理。所以為了使原有的參數(shù)不丟失,在擦除扇區(qū)之前需從FLASH將參數(shù)讀到臨時buffer(高速緩沖存儲器)中。
實施例 本例采用如下方式實現(xiàn)對系統(tǒng)參數(shù)的存儲a.在FLASH中劃分扇區(qū)用于存儲系統(tǒng)參數(shù),可以適當(dāng)劃分一到二個扇區(qū)用于存儲系統(tǒng)參數(shù);b.在內(nèi)存中分配存儲系統(tǒng)參數(shù)所需的空間,作為一個臨時buffer;c.將FLASH中存儲的系統(tǒng)參數(shù)讀取到所述臨時buffer中;d.用戶在臨時buffer中對系統(tǒng)參數(shù)進行設(shè)定修改;e.利用軟件算法對FLASH中存儲系統(tǒng)參數(shù)的扇區(qū)進行擦除;f.通過編程指令將臨時buffer中的經(jīng)過修改后的系統(tǒng)參數(shù)存儲于FLASH中經(jīng)過擦除后的扇區(qū)。這樣就完成了對系統(tǒng)參數(shù)的存儲。
本例中對FLASH中存儲系統(tǒng)參數(shù)的扇區(qū)進行擦除可按如下步驟執(zhí)行第一步向FLASH寫芯片擦除命令序列,地址0x555寫0Xaa、地址0x2AA寫0x55、地址0x555寫0x80、地址0x555寫0xAA、地址0x2AA寫0x55,地址0x555寫0x10;為確保寫芯片擦除命令的成功性,系統(tǒng)需禁止中斷,當(dāng)最后一個芯片擦除命令寫完后再重新打開中斷; 第二步控制器在FLASH的地址輸入口設(shè)定一有效地址,且該地址必須為非保護扇區(qū)地址,從I/O0口至I/O7口接收數(shù)據(jù)給變量Toggle1; 第三步在同一地址處讀數(shù)據(jù)給變量Toggle2,異或Toggle2、Toggle1兩變量,并判斷異或結(jié)果是否為0;如為0表明擦除完成;如為1則轉(zhuǎn)到第一步處理; 第四步根據(jù)I/O5口的狀態(tài)是否為1來判斷擦除時間是否超時,如果I/O5口為0則跳轉(zhuǎn)到第三步;如果I/O5口為1,表示擦除超時,則進入第五步處理; 第五步從同一地址處讀兩次數(shù)據(jù)分別給變量Toggle1,Toggle2;Toggle2等于變量Toggle1,Toggle2的異或;判斷Toggle2是否為0來判斷擦除是否完成?如果為0表明擦除完成;如果為1則擦除失敗。
對FLASH中存儲系統(tǒng)參數(shù)的扇區(qū)進行擦除后,需要利用編程指令將臨時buffer中的數(shù)據(jù)存儲于FLASH中經(jīng)過擦除后的扇區(qū) 第一步向FLASH寫芯片編程命令序列,地址0x555寫0xAA、地址0x2AA寫0x55、地址0x555寫0xA0、向要編程的地址寫編程數(shù)據(jù)data; 第二步控制器在FLASH的地址輸入口設(shè)定剛編程的地址,從I/O0口至I/O7口接收數(shù)據(jù),判斷I/O7口的數(shù)據(jù)與0x80進行邏輯與運算的結(jié)果是否等于0?如果不等于0則轉(zhuǎn)到第三步處理,如果等于0則轉(zhuǎn)到第四步處理; 第三步根據(jù)I/O5口的狀態(tài)是否為1來判定編程時間是否超時?如果I/O5口為0跳轉(zhuǎn)到第二步;如果I/O5口為1,編程超時,轉(zhuǎn)到第五步處理; 第四步判斷地址是否到芯片最后地址?如果到最后地址,芯片編程結(jié)束;如果未到芯片最后地址,地址加1后轉(zhuǎn)第一步; 第五步控制器在FLASH的地址輸入口設(shè)定剛編程的地址,從I/O0口至I/O7口接收數(shù)據(jù),判斷I/O7口數(shù)據(jù)與0x80進行邏輯與運算的結(jié)果是否等于0?如果不等于0表明編程失敗;如果等于0則轉(zhuǎn)到第四步處理。
權(quán)利要求
1.系統(tǒng)參數(shù)在FLASH中的存儲方法,其特征在于包括以下步驟
a.在FLASH中劃分扇區(qū)用于存儲系統(tǒng)參數(shù);
b.在內(nèi)存中分配存儲系統(tǒng)參數(shù)所需的空間,作為一個臨時buffer;
c.將FLASH中存儲的系統(tǒng)參數(shù)讀取到所述臨時buffer中;
d.用戶在臨時buffer中對系統(tǒng)參數(shù)進行設(shè)定修改;
e.對FLASH中存儲系統(tǒng)參數(shù)的扇區(qū)進行擦除;
f.將臨時buffer中的經(jīng)過修改后的系統(tǒng)參數(shù)存儲于FLASH中經(jīng)過擦除后的扇區(qū)。
全文摘要
本發(fā)明涉及參數(shù)的存儲技術(shù)領(lǐng)域,尤其涉及系統(tǒng)參數(shù)在FLASH中的存儲方法。本發(fā)明提出了一種系統(tǒng)參數(shù)的新型存儲方法。其技術(shù)方案的要點是a.在FLASH中劃分扇區(qū)用于存儲系統(tǒng)參數(shù);b.在內(nèi)存中分配存儲系統(tǒng)參數(shù)所需的空間,作為一個臨時buffer;c.將FLASH中存儲的系統(tǒng)參數(shù)讀取到所述臨時buffer中;d.用戶在臨時buffer中對系統(tǒng)參數(shù)進行設(shè)定修改;e.對FLASH中存儲系統(tǒng)參數(shù)的扇區(qū)進行擦除;f.將臨時buffer中的經(jīng)過修改后的系統(tǒng)參數(shù)存儲于FLASH中經(jīng)過擦除后的扇區(qū)。本發(fā)明省去了EEPROM器件,降低了成本,適用于碟機、衛(wèi)星接收機等。
文檔編號G06F12/02GK101354680SQ20081030430
公開日2009年1月28日 申請日期2008年8月29日 優(yōu)先權(quán)日2008年8月29日
發(fā)明者李前富 申請人:四川長虹電器股份有限公司