專利名稱:一種利用單片機(jī)內(nèi)置flash程序存貯器進(jìn)行實(shí)時(shí)數(shù)據(jù)記憶的方法
一種利用單片機(jī)內(nèi)置FLASH程序存貯器進(jìn)行實(shí)時(shí)數(shù)據(jù)記憶
的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種數(shù)據(jù)記憶方法,尤其涉及利用單片機(jī)內(nèi)置FLASH程序存貯器進(jìn)行實(shí)時(shí)數(shù)據(jù)記憶的方法。
背景技術(shù):
當(dāng)今家電產(chǎn)品中普遍使用了記憶功能,即掉電后運(yùn)行相關(guān)數(shù)據(jù)也能被保存在 ROM中。現(xiàn)有商品中使用的記憶功能大都是通過單片機(jī)數(shù)據(jù)I/O 口連接外部專用記憶 IC(EEPR0M等)來實(shí)現(xiàn)的。這種方法的缺點(diǎn)是一方面占用了單片機(jī)I/O 口資源,另一方面增加了外部記憶IC的成本。針對(duì)上述不足,公開號(hào)為CN101645014A的中國專利申請(qǐng)文件提出了利用單片機(jī)內(nèi)置FLASH程序存貯器模擬EEPROM的數(shù)據(jù)存儲(chǔ)方法,但是,這種方法在實(shí)現(xiàn)記憶功能時(shí), 仍需要借助外部專用記憶IC(e印rom等);單片機(jī)內(nèi)置FLASH程序存貯器進(jìn)行存儲(chǔ)不是實(shí)時(shí)的,掉電時(shí)才能進(jìn)行;單片機(jī)內(nèi)置FLASH程序存貯器進(jìn)行存儲(chǔ)寫入次數(shù)有限;單片機(jī)內(nèi)置 FLASH程序存貯器進(jìn)行存儲(chǔ)寫入時(shí)間長(zhǎng)、記憶中無法進(jìn)行其他操作。
發(fā)明內(nèi)容本發(fā)明的目的就是解決現(xiàn)有技術(shù)中的問題,提出一種利用單片機(jī)內(nèi)置FLASH程序存貯器進(jìn)行實(shí)時(shí)數(shù)據(jù)記憶的方法,能夠延長(zhǎng)存儲(chǔ)器的寫入次數(shù),數(shù)據(jù)記憶過程中仍可以通過中斷處理與記憶無關(guān)的其他操作,并且,記憶請(qǐng)求能夠馬上被記憶到單片機(jī)FLASH存儲(chǔ)區(qū)域。為實(shí)現(xiàn)上述目的,本發(fā)明提出了一種利用單片機(jī)內(nèi)置FLASH程序存貯器進(jìn)行實(shí)時(shí)數(shù)據(jù)記憶的方法,由FLASH型單片機(jī)、電源、輸入輸出設(shè)備構(gòu)成,所述FLASH型單片機(jī)的內(nèi)置 FLASH程序存貯器分段進(jìn)行數(shù)據(jù)寫入操作。作為優(yōu)選,分段寫入內(nèi)置FLASH程序存貯器的每段數(shù)據(jù)均包含頭信息和尾信息, 頭信息表示數(shù)據(jù)段的號(hào)碼,尾信息表示數(shù)據(jù)的合法性。作為優(yōu)選,所述FLASH型單片機(jī)在開機(jī)時(shí)就進(jìn)行數(shù)據(jù)寫入前的尋址和傳送,從而實(shí)現(xiàn)了書寫時(shí)間的大幅縮短,適應(yīng)了實(shí)時(shí)性要求較高的商品。作為優(yōu)選,數(shù)據(jù)寫入內(nèi)置FLASH程序存貯器的過程中,可以通過中斷處理與記憶無關(guān)的操作,克服了現(xiàn)有技術(shù)記憶中無法進(jìn)行其他操作的缺點(diǎn)。作為優(yōu)選,數(shù)據(jù)寫入操作一次性完成。作為優(yōu)選,數(shù)據(jù)寫入操作分?jǐn)?shù)次完成,采用輪詢方式分段進(jìn)行,整個(gè)寫入過程未完畢的情況下,如果有新的記憶請(qǐng)求產(chǎn)生,新的記憶請(qǐng)求也將被排序后自動(dòng)延后處理,而不會(huì)被遺漏。本發(fā)明的有益效果本發(fā)明將數(shù)據(jù)直接寫入單片機(jī)的內(nèi)置FLASH程序存貯器,這種數(shù)據(jù)記憶方法是實(shí)時(shí)的,通過輸入輸出設(shè)備發(fā)出的記憶請(qǐng)求所對(duì)應(yīng)的數(shù)據(jù),能夠馬上被記憶到單片機(jī)的FLASH程序存貯器,并且寫入操作是分段進(jìn)行的,從而大大延長(zhǎng)了存儲(chǔ)器的寫入次數(shù)。本發(fā)明的特征及優(yōu)點(diǎn)將通過實(shí)施例結(jié)合附圖進(jìn)行詳細(xì)說明。
圖1是本發(fā)明方法所涉及的硬件結(jié)構(gòu)示意圖。圖2是分段存儲(chǔ)的控制框圖。圖3是本發(fā)明的控制流程圖。圖4是數(shù)據(jù)讀出的控制框圖。圖5是數(shù)據(jù)寫入的控制框圖。圖6是數(shù)據(jù)傳送的控制框圖。圖7是數(shù)據(jù)寫入的控制流程圖。
具體實(shí)施方式利用單片機(jī)內(nèi)置FLASH程序存貯器進(jìn)行實(shí)時(shí)數(shù)據(jù)記憶的方法,如圖1所示,硬件部分由FLASH型單片機(jī)1、電源2、輸入輸出設(shè)備3構(gòu)成,所述FLASH型單片機(jī)1的內(nèi)置FLASH 程序存貯器分段進(jìn)行數(shù)據(jù)寫入操作。分段寫入內(nèi)置FLASH程序存貯器的每段數(shù)據(jù)均包含頭信息和尾信息,頭信息表示數(shù)據(jù)段的號(hào)碼,尾信息表示數(shù)據(jù)的合法性。所述FLASH型單片機(jī) 1在開機(jī)時(shí)就進(jìn)行數(shù)據(jù)寫入前的尋址和傳送,從而實(shí)現(xiàn)了書寫時(shí)間的大幅縮短,適應(yīng)了實(shí)時(shí)性要求較高的商品。數(shù)據(jù)寫入內(nèi)置FLASH程序存貯器的過程中,可以通過中斷處理與記憶無關(guān)的操作,克服了現(xiàn)有技術(shù)記憶中無法進(jìn)行其他操作的缺點(diǎn)。數(shù)據(jù)寫入操作可以一次性完成或分?jǐn)?shù)次完成,采用輪詢方式分段進(jìn)行,整個(gè)寫入過程未完畢的情況下,如果有新的記憶請(qǐng)求產(chǎn)生,新的記憶請(qǐng)求也將被排序后自動(dòng)延后處理,而不會(huì)被遺漏。外部專用記憶IC(^prom)擦寫次數(shù)一般為10萬回。而單片機(jī)內(nèi)置FLASH程序存貯器一般的擦寫次數(shù)為1000回,本發(fā)明采用分段寫入、整體擦除的方法,使單片機(jī)內(nèi)置 FLASH程序存貯器一般的寫入次數(shù)可達(dá)到10萬回以上。例一次寫入Ilbyte作為一個(gè)單元,8Kb的存儲(chǔ)空間可寫入73. 4萬回。本發(fā)明根據(jù)單片機(jī)內(nèi)置FLASH程序存貯器容量大小將單片機(jī)內(nèi)置FLASH程序存貯器劃分為1至多個(gè)區(qū)域,每個(gè)區(qū)域稱為一個(gè)sector (如圖2)。 通過軟件在sector的首地址對(duì)當(dāng)前sector的存儲(chǔ)狀態(tài)進(jìn)行標(biāo)識(shí),稱為sector的head。 head分為使用中、寫滿、空白、和其他不正確頭這四種情況。寫入時(shí)將若干個(gè)byte的數(shù)據(jù)劃分在一起同時(shí)寫入,稱為一個(gè)I^acket (如圖2)。I^cket的頭地址用于標(biāo)識(shí)當(dāng)前數(shù)據(jù)組的號(hào)碼,尾地址用于標(biāo)識(shí)當(dāng)前數(shù)據(jù)組的存儲(chǔ)狀態(tài)。寫入中如果發(fā)生斷電,在尾地址中將不會(huì)做正常寫入完畢的標(biāo)識(shí)。因此這組數(shù)據(jù)將不會(huì)被采用。從而確保了數(shù)據(jù)的正確性。本發(fā)明通過對(duì)寫入過程的優(yōu)化設(shè)計(jì)實(shí)現(xiàn)了寫入時(shí)間的縮短。寫入過程是這樣實(shí)現(xiàn)的首先將書寫代碼由單片機(jī)的ROM傳送到RAM,稱為代碼傳送。然后尋找到書寫地址(內(nèi)容為空的地址),稱為尋址。再從RAM執(zhí)行對(duì)ROM的書寫。本發(fā)明將傳送過程和尋址過程放在開機(jī)時(shí)處理。程序運(yùn)行中可直接在尋找到的地址寫入數(shù)據(jù)。從而實(shí)現(xiàn)了寫入時(shí)間少于外部EEPROM書寫時(shí)間的1/300。是通常單片機(jī)內(nèi)置FLASH程序存貯器寫入時(shí)間的1/30。本發(fā)明所涉及的寫入過程可以是一次性完成的,也可以是采用輪詢方式分段完成的。如圖7所示,采用輪詢方式分段完成時(shí),整個(gè)寫入過程未完畢的情況下,如果有新的記憶請(qǐng)求產(chǎn)生,新的記憶請(qǐng)求也將會(huì)被排序后自動(dòng)延后處理,而不會(huì)被遺漏。本發(fā)明所涉及的記憶方法,可以在記憶的同時(shí)通過中斷處理記憶以外的其他程序,從而保證了記憶中其他程序的正常執(zhí)行。本發(fā)明的控制流程圖如圖3所示單片機(jī)上電時(shí),首先將執(zhí)行擦寫的程序代碼從單片機(jī)的ROM中復(fù)制到RAM(SC3-00)。接下來在RAM中進(jìn)行中斷向量表的設(shè)定(SC3-01)。 接下來是尋址過程(SC3-02),包括讀出尋址和寫入尋址。數(shù)據(jù)讀出尋址的流程如圖4所示①如圖4中的A所示,各sector的head檢出,找到使用中的sector。②使用中sector最新寫入的數(shù)據(jù)(相同packet頭的地址最大的數(shù)據(jù))讀出。圖 4中的B處是未寫入的區(qū)域(packet head :0xff),不讀出。圖4中的C處是未寫入完畢的場(chǎng)合(packet foot :0xff),不讀出。圖4中的D處是數(shù)據(jù)號(hào)碼不想讀出的數(shù)據(jù)號(hào)(packet heachOxOl),不讀出。圖4中的E處是正確數(shù)據(jù),讀出。圖4中的F處不是最新寫入的數(shù)據(jù),不讀出。數(shù)據(jù)寫入尋址的流程如圖5所示①如圖5中A所示,各sector的head檢出,使用中sector指定。②如圖5中B所示,使用中sector最新數(shù)據(jù)的下一個(gè)地址讀出。前一個(gè)地址中內(nèi)容為空,不讀出。圖5中的C所示是正規(guī)地址,讀出。尋址結(jié)束后是數(shù)據(jù)讀出過程(SC3-0;3)。如果尋址失敗或讀出失敗,程序?qū)⒔o各變量賦默認(rèn)參數(shù)值。開機(jī)后進(jìn)行商品通常的處理(SC3-04)。此時(shí)如果檢測(cè)到寫入請(qǐng)求,寫入請(qǐng)求標(biāo)志將設(shè)定。在(SC3-06)中判斷是否需要在單片機(jī)內(nèi)置FLASH存儲(chǔ)空間中寫入(例記憶區(qū)間寫滿時(shí)不允許寫入、無寫入請(qǐng)求標(biāo)志設(shè)定時(shí)不寫入)。寫入處理過程如圖7所示,首先在寫入初始模式下將寫入請(qǐng)求賦值給寫入命令 (SC7-00),然后寫入請(qǐng)求清零(SC7-01),這樣在接下來的寫入過程中如果產(chǎn)生新的寫入請(qǐng)求,也不會(huì)被遺漏。接下來轉(zhuǎn)到寫入中模式(SC7-02)。在寫入中模式進(jìn)行單個(gè)packet 的寫入(SC7-03)。單個(gè)packet的寫入是從RAM執(zhí)行對(duì)ROM改寫的過程,在此過程中如果發(fā)生中斷,程序會(huì)在RAM中執(zhí)行對(duì)中斷的響應(yīng)。如果寫入成功則當(dāng)前packet寫入命令清零 (SC7-04),如果全部packet寫入命令都已清零則寫入模式復(fù)位到寫入初始模式。如果寫如不成功則判斷當(dāng)前sector是否寫滿,如果寫滿則轉(zhuǎn)到傳送模式,否則轉(zhuǎn)到寫入失敗模式進(jìn)行寫入失敗的處理。傳送模式(SC7-06)是指寫入過程中記憶區(qū)間(sector)寫滿時(shí),寫滿的sector 擦除前將記憶最新數(shù)據(jù)由舊的sector傳送到新的sector上。此過程也在(SC3-06)中處理。數(shù)據(jù)傳送的流程如圖6所示①如圖6中的A所示,各sector的head檢出,使用中sector找出。②如圖6中的B所示,使用中sector沒有空間再寫入。③如圖6中的C所示,各packet最新數(shù)據(jù)傳送到空的sector上。④如圖6中的D所示,全部數(shù)據(jù)傳送結(jié)束后,使用中sector head(OxAA,OxFF)做
5成。如圖6中的E所示,舊sector head變?yōu)?0xAA、0xAA)。⑤如圖6中的F所示,新sector上進(jìn)行NO. 2數(shù)據(jù)的寫入。最后,如圖6中的G所示,舊sector擦除(全部變?yōu)镺xFF)。上述實(shí)施例是對(duì)本發(fā)明的說明,不是對(duì)本發(fā)明的限定,任何對(duì)本發(fā)明簡(jiǎn)單變換后的方案均屬于本發(fā)明的保護(hù)范圍。
權(quán)利要求
1.一種利用單片機(jī)內(nèi)置FLASH程序存貯器進(jìn)行實(shí)時(shí)數(shù)據(jù)記憶的方法,其特征在于由 FLASH型單片機(jī)、電源、輸入輸出設(shè)備構(gòu)成,所述FLASH型單片機(jī)的內(nèi)置FLASH程序存貯器分段進(jìn)行數(shù)據(jù)寫入操作。
2.如權(quán)利要求1所述的一種利用單片機(jī)內(nèi)置FLASH程序存貯器進(jìn)行實(shí)時(shí)數(shù)據(jù)記憶的方法,其特征在于分段寫入內(nèi)置FLASH程序存貯器的每段數(shù)據(jù)均包含頭信息和尾信息,頭信息表示數(shù)據(jù)段的號(hào)碼,尾信息表示數(shù)據(jù)的合法性。
3.如權(quán)利要求1所述的一種利用單片機(jī)內(nèi)置FLASH程序存貯器進(jìn)行實(shí)時(shí)數(shù)據(jù)記憶的方法,其特征在于所述FLASH型單片機(jī)在開機(jī)時(shí)就進(jìn)行數(shù)據(jù)寫入前的尋址和傳送。
4.如權(quán)利要求1所述的一種利用單片機(jī)內(nèi)置FLASH程序存貯器進(jìn)行實(shí)時(shí)數(shù)據(jù)記憶的方法,其特征在于數(shù)據(jù)寫入內(nèi)置FLASH程序存貯器的過程中,可以通過中斷處理與記憶無關(guān)的操作。
5.如權(quán)利要求1所述的一種利用單片機(jī)內(nèi)置FLASH程序存貯器進(jìn)行實(shí)時(shí)數(shù)據(jù)記憶的方法,其特征在于數(shù)據(jù)寫入操作一次性完成。
6.如權(quán)利要求1所述的一種利用單片機(jī)內(nèi)置FLASH程序存貯器進(jìn)行實(shí)時(shí)數(shù)據(jù)記憶的方法,其特征在于數(shù)據(jù)寫入操作分?jǐn)?shù)次完成,采用輪詢方式分段進(jìn)行,整個(gè)寫入過程未完畢的情況下,如果有新的記憶請(qǐng)求產(chǎn)生,新的記憶請(qǐng)求也將被排序后自動(dòng)延后處理,而不會(huì)被遺漏。
全文摘要
本發(fā)明公開了一種利用單片機(jī)內(nèi)置FLASH程序存貯器進(jìn)行實(shí)時(shí)數(shù)據(jù)記憶的方法,由FLASH型單片機(jī)、電源、輸入輸出設(shè)備構(gòu)成,所述FLASH型單片機(jī)的內(nèi)置FLASH程序存貯器分段進(jìn)行數(shù)據(jù)寫入操作。本發(fā)明將數(shù)據(jù)直接寫入單片機(jī)的內(nèi)置FLASH程序存貯器,這種數(shù)據(jù)記憶方法是實(shí)時(shí)的,通過輸入輸出設(shè)備發(fā)出的記憶請(qǐng)求所對(duì)應(yīng)的數(shù)據(jù),能夠馬上被記憶到單片機(jī)的FLASH程序存貯器,并且寫入操作是分段進(jìn)行的,從而大大延長(zhǎng)了存儲(chǔ)器的寫入次數(shù)。
文檔編號(hào)G06F12/02GK102156668SQ20111009363
公開日2011年8月17日 申請(qǐng)日期2011年4月14日 優(yōu)先權(quán)日2011年4月14日
發(fā)明者盧瑞東, 徐丁英 申請(qǐng)人:杭州松下家用電器有限公司, 松下家電研究開發(fā)(杭州)有限公司