專利名稱:一種flash的寫操作處理方法、系統(tǒng)及設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)安全,特別涉及一種FLASH的寫操作處理方法、系統(tǒng)、 FLASH寫操作處理裝置及CPU管理系統(tǒng)。
背景技術(shù):
FLASH存儲器又稱閃存,是一種可以在線多次擦除的非易失性存儲器, 即掉電后數(shù)據(jù)不會丟失,是一種嵌入式系統(tǒng)中典型的存儲設(shè)備,在嵌入式系統(tǒng) 中FLASH —般用于存儲系統(tǒng)工作的代碼和數(shù)據(jù)。
并行FLASH是FLASH存儲器的一種,又稱為NOR—FLASH,由于并行 FLASH支持代碼片上執(zhí)行,應(yīng)用程序和啟動代碼可以直接在FLASH上運行, 因此嵌入式系統(tǒng)中 一般用于存儲系統(tǒng)的啟動代碼。
并行FLASH器件一般包含地址信號線、數(shù)據(jù)信號線和讀寫控制線,CPU 處理器通過以上三種信號線讀或?qū)慒LASH內(nèi)容。
圖1為并行FLASH的管腳示意圖,如圖所示,例中并行FLASH的管腳 分別代表是
RESET為芯片的復(fù)位管腳;
CE為芯片的片選信號線;
WE為芯片的寫控制線;
OE為芯片的讀控制線;
VCC為芯片的電源輸入管腳;
VSS為芯片的接地管腳;
BYTE為芯片的工作方式選擇管腳,BYTE接高電平時芯片工作在16位工 作模式,BYTE接地時芯片工作在8位工作模式;
WP/ACC芯片的寫保護(hù)管腳,WP接低電平時芯片不允許被修改;
DQ0-DQ7芯片工作在8位模式下的數(shù)據(jù)信號線;
DQ8-DQ15芯片工作在16位模式下的數(shù)據(jù)信號線;
AO、 Al 、 A2到A20為芯片工作在16位工作^^莫式下的地址線;
A-l 、 AO、 Al到A20為芯片工作在8位工作模式下的地址線。
其中
地址線用來傳輸?shù)刂沸畔⒌男盘柧€,如圖1中的A0、 Al等。 數(shù)據(jù)線用來傳輸數(shù)據(jù)信息的信號線,如圖1中的DQ0-DQ7。 控制信號線用來傳輸控制信息的信號線,比如讀寫選4奪等信息。 圖2為讀寫系統(tǒng)中FLASH連接方式結(jié)構(gòu)示意圖,如圖所示,讀寫系統(tǒng)中
的管理系統(tǒng)200和FLASH201通過地址線、讀信號線、寫信號線、片選信號
線連接在一起。其中
管理系統(tǒng)200完成整個系統(tǒng)的控制,包括發(fā)起對FLASH201的讀寫操作; FLASH201用于存儲系統(tǒng)工作中正常的代碼和數(shù)據(jù),接受管理系統(tǒng)發(fā)送的
讀寫命令。
寫信號線用于當(dāng)管理系統(tǒng)要對FLASH進(jìn)行寫操作時,將該信號線管腳 置為低電平。
寫保護(hù)管腳203直接連接到高電平,允許管理系統(tǒng)的寫操作行為,高電平 一般是3.3V的電壓,寫保護(hù)管腳即為圖1中的WP管腳。 管理系統(tǒng)200通過串口 204輸出系統(tǒng)的工作狀態(tài)。 傳統(tǒng)的電子讀寫系統(tǒng)寫FLASH的操作一般存在以下幾種情況 1 、升級啟動BOOT代碼(相當(dāng)于PC的BIOS );
2、 升級主程序(相當(dāng)于WINDOWS操作系統(tǒng));
3、 記錄故障信息(相當(dāng)于在使用PC出錯時,PC記錄錯誤日志);
4、 用戶設(shè)置信息(類似修改BIOS的參數(shù))。
以上四種操作一般只在一定的條件被使用,什么時候調(diào)用這些操作理論上
是已知的、確定的,但是,由于人為或其他一些客觀的原因會導(dǎo)致這些操作被
錯誤的調(diào)用,比如由于系統(tǒng)設(shè)計人員粗心大意,在某些不該寫FLASH的時候 調(diào)用寫FLASH操作,也就是說現(xiàn)有技術(shù)中存在的不足在于寫操作也存在著 在不該被調(diào)用的時候調(diào)用的異常情況,而當(dāng)這些異常情況發(fā)生時就有可能導(dǎo)致 的系統(tǒng)啟動代碼和主程序祐J皮壞,進(jìn)而將導(dǎo)致系統(tǒng)無法正常工作。
發(fā)明內(nèi)容
本發(fā)明提供一種對FLASH的寫操作進(jìn)行處理的方法、系統(tǒng)、裝置及CPU 管理系統(tǒng),用以解決在異常情況導(dǎo)致系統(tǒng)啟動代碼和主程序祐7皮壞后進(jìn)行恢復(fù) 的問題。
本發(fā)明提供了 一種FLASH的寫梯:作處理方法,包括如下步驟
在對FLASH進(jìn)行寫操作前,對FLASH中將要被改寫的數(shù)據(jù)進(jìn)行備份;
在對FLASH寫操作完成后,發(fā)起中斷請求;
在接到中斷請求后,進(jìn)入中斷處理,根據(jù)寫操作記錄對所述寫操作進(jìn)行合 法性判斷;
在確定所述寫操作合法時,退出中斷處理,在確定所述寫操作非法時,根 據(jù)備份數(shù)據(jù)恢復(fù)被改寫的數(shù)據(jù)。
本發(fā)明還提供了一種FLASH的寫操作處理系統(tǒng),包括管理系統(tǒng),還包括 備份模塊,用于在對FLASH進(jìn)行寫操作前,對FLASH中將要被改寫的
數(shù)據(jù)進(jìn)行備份;
請求模塊,用于在對FLASH寫操作完成后,向判斷模塊發(fā)起中斷請求; 判斷模塊,與所述請求模塊、所述管理系統(tǒng)相連,用于在接到中斷請求后 進(jìn)入中斷處理,根據(jù)管理系統(tǒng)的寫操作記錄對所述寫操作進(jìn)行合法性判斷,在 確定所述寫操作合法時,退出中斷處理,在確定所述寫操作非法時,觸發(fā)恢復(fù) 模塊;
恢復(fù)模塊,與所述判斷模塊、所述備份模塊相連,用于根據(jù)所述^f分模塊
的備份數(shù)據(jù)恢復(fù)被改寫的數(shù)據(jù)。
本發(fā)明提供了一種FLASH寫搡作處理裝置,包括
請求模塊,用于在對FLASH寫操作完成后,發(fā)起對所述寫操作進(jìn)行合法
性判斷的中斷請求。
本發(fā)明提供了一種CPU管理系統(tǒng),包括管理系統(tǒng),還包括
備份模塊,用于在對FLASH進(jìn)行寫操作前,對FLASH中將要被改寫的
數(shù)據(jù)進(jìn)行備份;
判斷模塊,用于在接到中斷請求后進(jìn)入中斷處理,根據(jù)管理系統(tǒng)的寫操作 記錄對所述寫操作進(jìn)行合法性判斷,在確定所述寫操作合法時,退出中斷處理, 在確定所述寫操作非法時,觸發(fā)恢復(fù)模塊;
恢復(fù)模塊,與所述判斷模塊、所述備份模塊相連,用于根據(jù)所述備份模塊 的備份數(shù)據(jù)恢復(fù)被改寫的數(shù)據(jù)。
本發(fā)明有益效果如下
本發(fā)明在對FLASH進(jìn)行寫操作時,首先對FLASH中將要被改寫的數(shù)據(jù) 進(jìn)行備份,通過中斷請求使管理系統(tǒng)對寫操作進(jìn)行合法性判斷,在確定寫操作 非法時,則可以根據(jù)備份數(shù)據(jù)恢復(fù)被改寫的數(shù)據(jù),從而使得即使出現(xiàn)錯誤的寫 操作后,也不會因錯誤修改而導(dǎo)致系統(tǒng)癱瘓。
圖1為現(xiàn)有技術(shù)中所述并行FLASH的管腳示意圖2為現(xiàn)有技術(shù)中所述讀寫系統(tǒng)中FLASH連接方式結(jié)構(gòu)示意圖3為現(xiàn)有^^支術(shù)中所述中斷處理裝置結(jié)構(gòu)示意圖5為本發(fā)明實施例中所述FLASH的寫才喿作處理系統(tǒng)結(jié)構(gòu)示意圖; 圖6為本發(fā)明實施例中所述FLASH寫操作處理裝置結(jié)構(gòu)示意圖; 圖7為本發(fā)明實施例中所述CPU管理系統(tǒng)結(jié)構(gòu)示意圖8為本發(fā)明實施例一中所述FLASH寫梯:作處理系統(tǒng)結(jié)構(gòu)示意圖; 圖9為本發(fā)明實施例一中所述寫操作處理系統(tǒng)的實施流程示意圖。
具體實施例方式
下面結(jié)合附圖對本發(fā)明的具體實施方式
進(jìn)行說明。
現(xiàn)有技術(shù)中,在對FLASH進(jìn)行寫操作時,當(dāng)發(fā)生寫搡作在不該被調(diào)用的 時候卻被調(diào)用了的異常情況后,由于FLASH的寫保護(hù)管腳直接接高電平,而 FLASH是一種非智能器件,因此,不管管理系統(tǒng)發(fā)起的寫操作是否合法,只 要管理系統(tǒng)發(fā)起寫操作,F(xiàn)LASH就允許改寫;另外一方面,由于沒有用于檢 測寫FLASH操作的檢測電路存在,即使管理系統(tǒng)發(fā)起錯誤的寫操作也無法被 發(fā)現(xiàn)和恢復(fù)。這也就導(dǎo)致了如果出現(xiàn)錯誤的寫操作,并將會導(dǎo)致FLASH內(nèi)部 的內(nèi)容被破壞,進(jìn)而導(dǎo)致系統(tǒng)無法正常工作。
進(jìn)一步的,由于系統(tǒng)中并不能對錯誤進(jìn)行^r測,當(dāng)發(fā)生錯誤后,軟件編碼 人員也無法確認(rèn)到底是代碼邏輯哪里出現(xiàn)了問題。
基于以上分析,本發(fā)明結(jié)合CPU的中斷處理機(jī)制,對FLASH的寫操作處 理進(jìn)行了改進(jìn),使其受到更充分的保護(hù)。下面先對中斷機(jī)制進(jìn)行簡要介紹。
中斷機(jī)制是CPU處理外部突發(fā)事件的一個重要技術(shù)。它能使CPU在運行 過程中對外部事件發(fā)出的中斷請求進(jìn)行及時的處理,在對中斷請求進(jìn)行處理 時,CPU中斷正在執(zhí)行的程序轉(zhuǎn)去處理發(fā)出中斷請求的任務(wù),處理完成后又立 即返回斷點,繼續(xù)進(jìn)行CPU原來的工作。引起中斷的原因或者說發(fā)出中斷請 求的來源稱為中斷源,才艮據(jù)中斷源的不同,可以把中斷分為硬件中斷和壽欠件中 斷兩大類,而硬件中斷又可以分為外部中斷和內(nèi)部中斷兩類。
圖3為中斷處理裝置結(jié)構(gòu)示意圖,如圖所示,處理裝置中包括CPU300、 中斷產(chǎn)生電路301、狀態(tài)暫存器302,下面結(jié)合圖1對中斷進(jìn)行說明。
外部中斷一般為處理器的中斷管腳直接傳遞給CPU。如圖3的INTO ~ 4 中斷即為外部中斷來源,在系統(tǒng)的正常運行過程中,狀態(tài)暫存器302收到如
INTO中斷管腳發(fā)生電平變化后,狀態(tài)暫存器302觸發(fā)中斷產(chǎn)生電路301產(chǎn)生 中斷通知CPU300中斷目前的軟件處理,轉(zhuǎn)而進(jìn)入INTO的中斷處理。
內(nèi)部中斷由CPU內(nèi)部處理模塊在一定的情況下產(chǎn)生的中斷,內(nèi)部中斷優(yōu) 先級一般低于外部中斷。如圖1所示的UART及TIMER收發(fā)中斷,在系統(tǒng)的 正常運行過程中,狀態(tài)暫存器302收到如從UART發(fā)送過來的數(shù)據(jù),狀態(tài)暫存 器302觸發(fā)中斷產(chǎn)生電路301產(chǎn)生中斷通知CPU300, CPU300中斷目前的軟 件處理,轉(zhuǎn)而進(jìn)入UART的中斷處理。
結(jié)合中斷機(jī)制,本發(fā)明通過在電路中添加檢測判斷機(jī)制,當(dāng)對FLASH進(jìn) 行寫操作時,發(fā)起中斷,通知CPU進(jìn)行中斷處理,中斷處理用于判斷當(dāng)前寫 操作是否合法。
基于上述分析,下面對如何具體實施進(jìn)行說明。
圖4為對FLASH的寫4喿作處理方法實施流程示意圖,為更清楚的描述本 發(fā)明實施,處理中斷的CPU中視為包含有管理系統(tǒng),該管理系統(tǒng)會對執(zhí)行的 合法操作進(jìn)行記錄,則如圖所示,處理時可以包括如下步驟
步驟401、將FLASH中將要被改寫的數(shù)據(jù)進(jìn)行備份。
步驟402、對FLASH進(jìn)行寫操作。
步驟403、 FLASH寫操作完成。
本步驟中,獲知對FLASH寫操作完成,可以用如下方式來獲知寫操作完 成,如在寫操作完成后,管理系統(tǒng)發(fā)出寫操作完成指令觸發(fā)發(fā)起中斷請求;也 可以通過檢測FLASH硬件上的寫操作動作結(jié)束來獲知,還可以通過寫操作的 磁盤日志記錄來獲知,獲知寫操作完成是本領(lǐng)域技術(shù)人員易知的。本實施例中 提供了一種簡便的獲知方式,當(dāng)在采樣到FLASH寫信號與FLASH片選信號 線為低時,即可獲知寫操作完成。
步驟404、發(fā)起中斷請求。
本步驟中,可以在接收到寫操作指令,在對FLASH寫操作完成后,接收 到寫操作完成指令后發(fā)起中斷請求;
或,雖然沒有接收到寫操作指令,但當(dāng)采樣到FLASH寫信號與FLASH 片選信號線為低電平時發(fā)起中斷請求;
或,在接收到寫操作指令后,但是在設(shè)定時間閾值內(nèi)沒有接收到寫操作完 成指令時,也發(fā)送中斷請求。
步驟405、接到中斷請求,進(jìn)入中斷處理。
步驟406、對寫操作進(jìn)行合法性判斷,在確定寫操作合法時轉(zhuǎn)入步驟407, 否則轉(zhuǎn)入步驟408,本步驟中可以根據(jù)管理系統(tǒng)的寫操作記錄進(jìn)行合法性判斷。 步驟407、退出中斷處理。
步驟408、在確定寫操作非法時,根據(jù)備份數(shù)據(jù)恢復(fù)被改寫的數(shù)據(jù)。 步驟409、定位寫操作錯誤發(fā)生原因。 步驟410、將錯誤原因輸出。
從上述實施可以看出,本發(fā)明在確定寫操作是非法的時候,將會根據(jù)在寫 操作時備份的數(shù)據(jù)進(jìn)行恢復(fù),從而克服了現(xiàn)有技術(shù)中 一旦發(fā)起錯誤的寫操作后 無法被發(fā)現(xiàn)和恢復(fù)的不足,提高了對FLASH的寫操作的安全性。
進(jìn)一步的,實施中在進(jìn)行處理時還可以包括如下步驟
在接收對FLASH進(jìn)行寫操作的指令時,關(guān)閉對FLASH的寫保護(hù)后,執(zhí) 行寫操作;
在對FLASH寫操作完成,接收到寫操作完成指令時;或,在沒有接收到 寫操作指令時,當(dāng)采樣到FLASH寫信號與FLASH片選信號線為低電平時; 或,接收到寫操作指令后,在設(shè)定時間闊值內(nèi)沒有接收到寫操作完成指令時, 打開對FLASH的寫保護(hù)。
FLASH的寫保護(hù),還可以通過接收到的寫才乘作完成的指令觸發(fā)打開對FLASH 的寫保護(hù),該寫才喿作完成的指令具體的可以由CPU管理系統(tǒng)在寫操作完成后 發(fā)出,還可以在進(jìn)入中斷處理后,判斷出寫操作非法后發(fā)出該指令用以打開被 非法寫操作指令關(guān)閉的寫保護(hù)。
實現(xiàn)打開對FLASH的寫保護(hù)。打開對FLASH的寫保護(hù)目的在于,打開后就 不能再對FLASH進(jìn)行寫操作了 。
上述寫保護(hù)目的主要是通過控制FLASH的寫保護(hù)管腳,達(dá)到在平時工作 的時候不允許非法的寫操作,克服了由于FLASH的寫保護(hù)管腳平時一直處于 打開狀態(tài),導(dǎo)致系統(tǒng)被錯誤改寫的概率增加的不足,從而降低了 FLASH被改 寫的概率,減輕了管理系統(tǒng)的負(fù)荷。
上述實施例中,可以針對的存在情況主要有升級啟動BOOT代碼、升級 主程序、記錄故障信息、用戶設(shè)置信息,下面對實施中這四種情況的處理來對 本發(fā)明進(jìn)行說明,但易知,通過本發(fā)明的方法,即當(dāng)檢測到錯誤后,對錯誤 操作進(jìn)行恢復(fù),可見本發(fā)明可以解決的問題并不僅限于只在這四種情況。下面 對四種情況進(jìn)行說明如下
如果在步驟401中發(fā)現(xiàn)當(dāng)前的寫操作是對BOOT的代碼進(jìn)行修改,則在步 驟406中的合法性判斷即為判斷當(dāng)前的任務(wù)是否為允許升級BOOT的任務(wù),如 果是即為合法,則允許升級BOOT,退出中斷處理;否則為非法,執(zhí)行步驟408 中恢復(fù)被修改的代碼;
如果在步驟401中的寫操作中,當(dāng)前操作FLASH的地址是否為針對主程 序的存儲空間進(jìn)行修改,如果是,則在步驟406中的合法性判斷即為判斷當(dāng)前 調(diào)用寫操作的任務(wù)是否是約定好允許修改主程序的任務(wù),如果是即為合法,則
不處理,退出中斷處理;否則為非法,執(zhí)行步驟408中恢復(fù)被修改的代碼; 同樣,故障信息記錄、用戶配置也可以通過類似的方法進(jìn)朽4僉測。 更進(jìn)一步的,當(dāng)發(fā)現(xiàn)寫操作錯誤的時候,在步驟409中可以由系統(tǒng)產(chǎn)生外
部中斷信號觸發(fā)管理系統(tǒng)的調(diào)試代碼,用于幫助軟件人員找出錯誤的軟件邏輯
避免后續(xù)的錯誤操作,減低系統(tǒng)FLASH被改寫的隱患。
本發(fā)明還提供了一種FLASH的寫操作處理系統(tǒng)、FLASH寫操作處理裝置
以及CPU管理系統(tǒng),下面結(jié)合附圖對其具體實施方式
進(jìn)行說明。圖5為FLASH的寫操作處理系統(tǒng)結(jié)構(gòu)示意圖,如圖所示,本系統(tǒng)用于對 FLASH201進(jìn)行寫操作處理,系統(tǒng)中包括管理系統(tǒng)200、備份模塊501、請求 模塊502、判斷模塊503、恢復(fù)模塊504、定位模塊505、輸出模塊506、寫保 護(hù)模塊507,下面以本系統(tǒng)對FLASH201的具體實施為例進(jìn)行i兌明。
備份模塊501與FLASH201相連,用于在對FLASH進(jìn)行寫操作時,對 FLASH201中將要被改寫的數(shù)據(jù)進(jìn)行備份;
請求模塊502與判斷模塊503、 FLASH201相連,用于在對FLASH201寫 操作完成后,向判斷模塊503發(fā)起中斷請求;
判斷模塊503與管理系統(tǒng)200相連,用于在接到中斷請求后進(jìn)入中斷處理, 根據(jù)管理系統(tǒng)的寫操作記錄對所述寫操作進(jìn)行合法性判斷,在確定所述寫搡作 合法時,退出中斷處理,在確定所述寫操作非法時,觸發(fā)恢復(fù)模塊504;
恢復(fù)模塊504與判斷模塊503、備份模塊501相連,用于根據(jù)備份模塊501 的備份數(shù)據(jù)恢復(fù)被改寫的數(shù)據(jù)。
在請求模塊502中可以包括檢測單元以及請求單元,其中
檢測單元在對FLASH寫操作完成,接收到寫操作完成指令后;或,在沒 有接收到寫操作指令時,當(dāng)采樣到FLASH寫信號與FLASH片選信號線為低 電平時;或,接收到寫操作指令后,在設(shè)定時間閾值內(nèi)沒有接收到寫操作完成 指令時,觸發(fā)請求單元;
請求單元在被;險測單元觸發(fā)后向判斷才莫塊發(fā)起中斷請求。
從上述實施可以看出,在判斷模塊確定寫操作是非法的時候,將會觸發(fā)恢 復(fù)模塊根據(jù)備份模塊在寫操作時備份的數(shù)據(jù)進(jìn)行恢復(fù),從而克服了現(xiàn)有技術(shù)中 一旦發(fā)起錯誤的寫操作后無法被發(fā)現(xiàn)和恢復(fù)的不足,提高了對FLASH的寫操 作的安全性。
系統(tǒng)中還可以進(jìn)一步包括與判斷模塊503相連的定位模塊505,用于在確 定所述寫操作非法時,根據(jù)判斷模塊的判斷結(jié)果定位所述寫操作錯誤發(fā)生原 因。
系統(tǒng)中還可以進(jìn)一步包括輸出模塊506與定位模塊505相連,用于將定位 模塊定位出的寫操作發(fā)生原因輸出。具體的可以通過在管理系統(tǒng)所處的CPU 管理系統(tǒng)上的串口 204進(jìn)行輸出。
可以看出,由系統(tǒng)產(chǎn)生外部中斷信號后,觸發(fā)定位模塊的調(diào)試代碼,可以 用于幫助軟件人員找出錯誤的軟件邏輯避免后續(xù)的錯誤操作,減低系統(tǒng)FLASH -故改寫的隱患。
系統(tǒng)中進(jìn)一步還可以包括與FLASH201相連寫保護(hù)模塊507,用于根據(jù)對 FLASH的寫操作指令,對FLASH進(jìn)行寫保護(hù)。 具體的,寫保護(hù)模塊中可以包括
寫操作指令接收單元,用于在接收到對FLASH進(jìn)行寫操作的指令后,觸 發(fā)置位單元;
置位單元,用于在被所述寫操作指令接收單元觸發(fā)后,關(guān)閉對FLASH的 寫保護(hù),在對FLASH寫操作完成,接收到寫操作完成指令時;或,在沒有接 收到寫操作指令時,當(dāng)采樣到FLASH寫信號與FLASH片選信號線為低電平 時;或,接收到寫操作指令后,在設(shè)定時間閾值內(nèi)沒有接收到寫操作完成指令 時,打開對FLASH的寫保護(hù)。
置位單元可以與FLASH201的寫保護(hù)管腳相連,在關(guān)閉對FLASH的寫保 護(hù)時將寫保護(hù)管腳置于低電平,在打開對FLASH的寫保護(hù)時將寫保護(hù)管腳置 于高電平。
可以看出,通過寫保護(hù)模塊控制FLASH的寫保護(hù)管腳,達(dá)到了在平時工 作的時候不允許非法的寫才喿作,克服了由于FLASH的寫保護(hù)管腳平時一直處 于打開狀態(tài),導(dǎo)致系統(tǒng)被錯誤改寫的概率增加的不足,從而降低了 FLASH被 改寫的概率,減輕了管理系統(tǒng)的負(fù)荷。
圖6為FLASH寫操作處理裝置結(jié)構(gòu)示意圖,如圖所示,裝置中包括請求 模塊502、寫保護(hù)模塊507,其中
請求模塊502用于在對FLASH寫操作完成后,發(fā)起對所述寫操作進(jìn)行合
法性判斷的中斷請求。
裝置中請求模塊可以包括
檢測單元5021 ,用于在對FLASH寫操作完成,接收到寫操作完成指令后; 或,在沒有接收到寫操作指令時,當(dāng)采樣到FLASH寫信號與FLASH片選信 號線為低電平時;或,接收到寫操作指令后,在設(shè)定時間閾值內(nèi)沒有接收到寫 操作完成指令時,觸發(fā)請求單元;
請求單元5022,用于在被所述檢測單元觸發(fā)后向管理系統(tǒng)發(fā)起中斷請求; 所述中斷請求用于觸發(fā)管理系統(tǒng)對所述寫操作進(jìn)行合法性判斷。
裝置中還可以進(jìn)一步包括寫保護(hù)模塊507,用于根據(jù)對FLASH的寫操作 狀態(tài),對FLASH進(jìn)行寫保護(hù)。
寫保護(hù)模塊中可以包括
寫操作指令接收單元5072,用于在接收對FLASH進(jìn)行寫操作的指令進(jìn)入 寫操作狀態(tài)時,觸發(fā)置位單元;
置位單元5071,用于在被所述寫操作指令接收單元觸發(fā)后,關(guān)閉對FLASH 的寫保護(hù),在對FLASH寫操:作完成,接收到寫操作完成指令時;或,在沒有 接收到寫操作指令時,當(dāng)采樣到FLASH寫信號與FLASH片選信號線為低電 平時;或,接收到寫操作指令后,在設(shè)定時間閾值內(nèi)沒有接收到寫操作完成指 令時,打開對FLASH的寫保護(hù)。
置位單元可以與FLASH的寫保護(hù)管腳相連,在對FLASH進(jìn)行寫保護(hù)時 將寫保護(hù)管腳置于低電平,在打開寫保護(hù)時將寫保護(hù)管腳置于高電平來實現(xiàn)寫 保護(hù)。
圖7為CPU管理系統(tǒng)結(jié)構(gòu)示意圖,如圖所示,系統(tǒng)中可以包括備份才莫 塊501、管理系統(tǒng)200、判斷模塊503、恢復(fù)模塊504,其中
備份模塊501,用于在對FLASH進(jìn)行寫操作前,對FLASH中將要被改寫 的數(shù)據(jù)進(jìn)行備份;
判斷模塊503在接到中斷請求后進(jìn)入中斷處理,根據(jù)管理系統(tǒng)200的寫操
作記錄對所述寫操作進(jìn)行合法性判斷,在確定所述寫操作合法時,退出中斷處
理,在確定所述寫操作非法時,觸發(fā)恢復(fù)模塊504;
恢復(fù)模塊504,與所述判斷模塊503、所述備份模塊501相連,用于根據(jù) 所述備份模塊的備份數(shù)據(jù)恢復(fù)被改寫的數(shù)據(jù)。
CPU管理系統(tǒng)中還可以進(jìn)一步包括定位模塊505,用于在確定所述寫操作 非法時,根據(jù)判斷模塊503的判斷結(jié)果定位所述寫操作錯誤發(fā)生原因。
CPU管理系統(tǒng)還可以進(jìn)一步包括輸出模塊506,用于將定位模塊505定位 出的所述寫操作錯誤發(fā)生原因輸出。
下面再用實施例一來說明本發(fā)明的具體實施方式
。
實施例一
本例中將以CPLD ( Complex Programmable Logic Device,復(fù)雜可編程邏輯 器件)的實施來進(jìn)行說明,CPLD是一種可編程邏輯器件,它可以在制造完成 后由用戶根據(jù)自己的需要定義其邏輯功能,在電子系統(tǒng)中 一般用于實現(xiàn)一些簡 單的用戶定制邏輯。顯然,使用CPLD就能夠?qū)崿F(xiàn)上述請求模塊、寫保護(hù)模塊 的功能,同時,實施中還使用了包括前述實施例中管理系統(tǒng)的CPU管理系統(tǒng), 由于CPU管理系統(tǒng)是一個軟件操作系統(tǒng),在該CPU管理系統(tǒng)中實現(xiàn)備份模塊、 接收模塊、判斷模塊、定位模塊、輸出模塊、恢復(fù)模塊的功能,對本領(lǐng)域技術(shù) 人員來說也是易知的。同時需要指出,實施時可以根據(jù)需要在CPU管理系統(tǒng) 或CPLD或其他實體中實現(xiàn)不同的功能模塊,并不僅限于本例中的實施方式, 比如,備份模塊、恢復(fù)模塊不僅可以在CPU管理系統(tǒng)上實現(xiàn),也可以用其他 具備數(shù)據(jù)存儲功能、數(shù)據(jù)讀寫功能的實體上實現(xiàn)。在利用了現(xiàn)行的CPLD進(jìn)行 實施本發(fā)明時,則可以按如下方式實施
圖8為實施例一的FLASH寫梯:作處理系統(tǒng)結(jié)構(gòu)示意圖,如圖所示,系統(tǒng) 由CPLD801 、 FLASH201 、 CPU管理系統(tǒng)800、以及與CPU管理系統(tǒng)相連 的串口 204組成,其中
CPU管理系統(tǒng)800通過總線發(fā)送讀寫命令用于控制CPLD801;
CPU管理系統(tǒng)800通過讀信號線、寫信號線、數(shù)據(jù)線、地址線等發(fā)送讀寫 命令給FLASH201;
CPLD801通過INT (管理系統(tǒng)的外部中斷信號線)用于通知CPU管理系 統(tǒng)800及時的處理中斷請求,即發(fā)生的寫操作;
CPLD801通過一一艮管腳802控制FLASH201的寫保護(hù)管腳203,在平時工 作情況下,該管腳的電平輸出低電平,不允許FLASH完成寫操作,只有接收 到CPU管理系統(tǒng)發(fā)送的寫操作指令觸發(fā)關(guān)閉寫保護(hù)的時候才送出高電平,這 個時候FLASH才會接受管理系統(tǒng)的寫操作。
圖9為實施例一中寫操:作處理系統(tǒng)的實施流程示意圖,則如圖所示,上述 寫操作處理系統(tǒng)的寫操作流程可以如下
步驟901、 CPU管理系統(tǒng)通知CPLD打開寫保護(hù)管腳允許寫操作。
具體的,本步驟中可是通過對CPLD上的寫保護(hù)模塊發(fā)出寫操作指令,從 而使寫保護(hù)模塊關(guān)閉對FLASH的寫保護(hù),以便進(jìn)行寫操作。
步驟902、 CPU管理系統(tǒng)備份被改寫的FLASH內(nèi)容到系統(tǒng)的內(nèi)存。
具體實施中,并不僅限于備份至內(nèi)存,容易知道所有的數(shù)據(jù)存儲介質(zhì)都可 以實現(xiàn)。
步驟903、 CPU管理系統(tǒng)發(fā)起寫操作,F(xiàn)LASH接受寫操作。 步驟904、 CPU管理系統(tǒng)等待寫才喿作完成。
步驟905、 CPU管理系統(tǒng)通知CPLD關(guān)閉寫保護(hù)管腳禁止非法的寫操作。 在步驟904、 905中,不僅可以通過CPU管理系統(tǒng)在寫操作完成后發(fā)出寫
操作完成指令通知CPLD中的寫保護(hù)模塊關(guān)閉,還可以通過CPLD主動檢測到
異常寫操作后關(guān)閉。
實施中,可能會出現(xiàn)發(fā)出錯誤的寫操作指令,也因而沒有步驟905中所述 的正確地與之對應(yīng)的寫操:作完成指令來使FLASH進(jìn)入寫保護(hù),在此情況下, 寫保護(hù)模塊可以通過主動檢測到異常寫操作后使FLASH進(jìn)入寫保護(hù)狀態(tài),也 可以通過中斷請求判斷出該寫操作為非法操作后,再發(fā)出寫操作完成指令來使FLASH進(jìn)入寫保護(hù)狀態(tài)。
步驟906、 CPLD關(guān)閉寫保護(hù)管腳禁止非法的寫l喿作。
上述步驟904、 905、 906中,并不僅限于在步驟904中CPU管理系統(tǒng)在 等待寫操作完成后,向CPLD發(fā)出寫操作完成指令的一種實施方式,也可以是 CPLD雖然沒有接收到寫操作指令,但當(dāng)采樣到FLASH寫信號與FLASH片選 信號線為低電平時;或,接收到寫操作指令,但在設(shè)定時間閾值內(nèi)沒有接收到 寫操作完成指令時,CPLD也主動關(guān)閉寫保護(hù)管腳,其原因在于,寫操作并不 一定是由CPU管理系統(tǒng)通過寫操作指令發(fā)起的,寫操作有可能是在CPU管理 系統(tǒng)不知情的情況下進(jìn)行的,為更好的對FLASH進(jìn)行寫保護(hù),CPLD也可在 沒有接收到寫才喿作完成指令時關(guān)閉寫保護(hù)管腳。
步驟907、 CPLD產(chǎn)生中斷信號(INT)通知CPU管理系統(tǒng)寫操作完成。
本步驟的發(fā)出中斷信號可以是CPLD接收到寫操作指令,在對FLASH 寫操作完成后,CPLD接收到寫操作完成指令后發(fā)起中斷請求;
或,在CPLD沒有接收到寫操作指令時,當(dāng)CPLD采樣到FLASH寫信號 與FLASH片選信號線為低電平時發(fā)起中斷請求;
或,CPLD接收到寫操作指令后,但在設(shè)定時間閾值內(nèi)沒有接收到寫操作 完成指令時,CPLD發(fā)送中斷請求。
步驟908、 CPU管理系統(tǒng)響應(yīng)INT的外部中斷,進(jìn)入中斷處理程序。
步驟909、 CPU管理系統(tǒng)確認(rèn)目前的寫操作是否合法,如果合法則轉(zhuǎn)入步 驟910,否則轉(zhuǎn)入步驟911。
步驟910、退出中斷處理。
步驟911、 CPU管理系統(tǒng)定位當(dāng)前寫操作可能的錯誤。 步驟912、 CPU管理系統(tǒng)恢復(fù)被改寫的FLASH內(nèi)容。 步驟913、 CPU管理系統(tǒng)通過串口輸出提示信息,提示用戶修改管理系統(tǒng) 的軟件代碼。
本實施例中通過在電路中添加CPLD用于檢測不正確的改寫FLASH的行
為。在每次寫操作完成后管理系統(tǒng)都對寫操作進(jìn)行核對確認(rèn)是否是被允許的寫
操作。如果發(fā)現(xiàn)錯誤的寫FLASH操作,CPU管理系統(tǒng)負(fù)責(zé)恢復(fù)被改寫的FLASH 內(nèi)容,從而避免老設(shè)計系統(tǒng)的FLASH由于被CPU管理系統(tǒng)錯誤修改而導(dǎo)致系 統(tǒng)癱瘓,比如系統(tǒng)啟動代碼被錯誤的修改,系統(tǒng)的主程序被破壞。
實施中通過在CPU管理系統(tǒng)發(fā)起寫操作的時候由CPLD產(chǎn)生外部中斷信 號觸發(fā)CPU管理系統(tǒng)的調(diào)試代碼,便可以幫助軟件人員找出錯誤的軟件邏輯 以避免后續(xù)的錯誤操作,減低了系統(tǒng)FLASH被改寫的隱患。
同時還通過控制FLASH的寫保護(hù)管腳,達(dá)到在平時工作的時候不允許非 法的寫操作,進(jìn)一步降低了 FLASH被改寫的概率,減輕管理系統(tǒng)的負(fù)荷。
由上述實施例可知,本發(fā)明中通過檢測對FLASH的寫操作,并且在出現(xiàn) 錯誤的寫操作后進(jìn)行出錯處理,提高了軟件人員查出軟件代碼的錯誤邏輯的效 率。進(jìn)一步的可以通過控制WP管腳的高低電平,來達(dá)到允許和禁止寫FLASH 的操作,減低了 FLASH被誤寫的概率。并且通過檢測每次CPU管理系統(tǒng)發(fā)起 的寫FLASH的操作后,通知CPU管理系統(tǒng)確認(rèn)當(dāng)前的寫操作是否合法,并將 恢復(fù)被錯誤改寫的FLASH內(nèi)容,使得系統(tǒng)能夠在出現(xiàn)寫操作錯誤時進(jìn)行恢復(fù)。
明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及 其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動和變型在內(nèi)。
權(quán)利要求
1、一種FLASH的寫操作處理方法,其特征在于,包括如下步驟在對FLASH進(jìn)行寫操作前,對FLASH中將要被改寫的數(shù)據(jù)進(jìn)行備份;在對FLASH寫操作完成后,發(fā)起中斷請求;在接到中斷請求后,進(jìn)入中斷處理,根據(jù)寫操作記錄對所述寫操作進(jìn)行合法性判斷;在確定所述寫操作合法時,退出中斷處理,在確定所述寫操作非法時,根據(jù)備份數(shù)據(jù)恢復(fù)被改寫的數(shù)據(jù)。
2、 如權(quán)利要求1所述的方法,其特征在于,在確定所述寫纟喿作非法時, 進(jìn)一步包括如下步驟定位所述寫操作錯誤發(fā)生原因。
3、 如權(quán)利要求2所述的方法,其特征在于,定位出所述寫操作發(fā)生原因 后,進(jìn)一步包括如下步驟將所述錯誤原因輸出。
4、 如權(quán)利要求l所述的方法,其特征在于,所述在對FLASH寫操作完成 后,發(fā)起中斷請求具體為在對FLASH寫操作完成,接收到寫操作完成指令后發(fā)起中斷請求;或,在沒有接收到寫操作指令時,當(dāng)采樣到FLASH寫信號與FLASH片選信號線為低電平時發(fā)起中斷請求;或,接收到寫操作指令后,在設(shè)定時間闊值內(nèi)沒有接收到寫操作完成指令時發(fā)送中斷請求。
5、 如權(quán)利要求1至4任一所述的方法,其特征在于,進(jìn)一步包括如下步驟在接收到對FLASH進(jìn)行寫操作的指令時,關(guān)閉對FLASH的寫保護(hù),執(zhí) 行寫操作;在對FLASH寫操作完成,接收到寫操作完成指令時;或,在沒有接收到 寫操作指令時,當(dāng)采樣到FLASH寫信號與FLASH片選信號線為低電平時; 或,接收到寫操作指令后,在設(shè)定時間閾值內(nèi)沒有接收到寫操作完成指令時, 打開對FLASH的寫保護(hù)。
6、 一種FLASH的寫操作處理系統(tǒng),包括管理系統(tǒng),其特征在于,還包括 備份模塊,用于在對FLASH進(jìn)行寫操作前,對FLASH中將要被改寫的數(shù)據(jù)進(jìn)行備份;請求模塊,用于在對FLASH寫操作完成后,向判斷模塊發(fā)起中斷請求; 判斷模塊,與所述請求模塊、所述管理系統(tǒng)相連,用于在接到中斷請求后 進(jìn)入中斷處理,根據(jù)管理系統(tǒng)的寫操作記錄對所述寫操作進(jìn)行合法性判斷,在 確定所述寫操作合法時,退出中斷處理,在確定所述寫才喿作非法時,觸發(fā)恢復(fù)模塊;恢復(fù)模塊,與所述判斷模塊、所述備份模塊相連,用于根據(jù)所述備份模塊 的備份數(shù)據(jù)恢復(fù)被改寫的數(shù)據(jù)。
7、 如權(quán)利要求6所述的系統(tǒng),其特征在于,所述請求模塊包括 檢測單元,用于在對FLASH寫操作完成,接收到寫操作完成指令后;或,在沒有接收到寫操作指令時,當(dāng)采樣到FLASH寫信號與FLASH片選信號線 為低電平時;或,接收到寫操作指令后,在設(shè)定時間閾值內(nèi)沒有接收到寫操作 完成指令時,觸發(fā)請求單元;請求單元,用于在被所述檢測單元觸發(fā)后向所述判斷模塊發(fā)起中斷請求。
8、 如權(quán)利要求6所述的系統(tǒng),其特征在于,進(jìn)一步包括定位模塊,與所 述判斷模塊相連,用于在確定所述寫操作非法時,根據(jù)所述判斷模塊的判斷結(jié) 果定位所述寫操作錯誤發(fā)生原因。
9、 如權(quán)利要求8所述的系統(tǒng),其特征在于,進(jìn)一步包括輸出模塊,與所 述定位模塊相連,用于將所述定位模塊定位出的所述寫操作發(fā)生原因輸出。
10、 如權(quán)利要求6至9任一所述的系統(tǒng),其特征在于,進(jìn)一步包括寫保護(hù) 模塊,用于根據(jù)對FLASH的寫操作指令,對FLASH進(jìn)行寫保護(hù)。
11、 如權(quán)利要求IO所述的系統(tǒng),其特征在于,所述寫保護(hù)模塊包括 寫操作指令接收單元,用于在接收到對FLASH進(jìn)行寫操作的指令后,觸發(fā)置位單元;置位單元,用于在^L所述寫操作指令接收單元觸發(fā)后,關(guān)閉對FLASH的 寫保護(hù),在對FLASH寫操作完成,接收到寫操作完成指令時;或,在沒有接 收到寫操作指令時,當(dāng)采樣到FLASH寫信號與FLASH片選信號線為低電平 時;或,接收到寫操作指令后,在設(shè)定時間閾值內(nèi)沒有接收到寫操作完成指令 時,打開對FLASH的寫^f呆護(hù)。
12、 一種FLASH寫操作處理裝置,其特征在于,包括請求模塊,用于在對FLASH寫操作完成后,發(fā)起對所述寫操作進(jìn)行合法 性判斷的中斷請求。
13、 如權(quán)利要求12所述的裝置,其特征在于,所述請求模塊包括 檢測單元,用于在對FLASH寫操作完成,接收到寫操作完成指令后;或,在沒有接收到寫操作指令時,當(dāng)采樣到FLASH寫信號與FLASH片選信號線 為低電平時;或,接收到寫操作指令后,在設(shè)定時間閾值內(nèi)沒有接收到寫操作 完成指令時,觸發(fā)請求單元;請求單元,用于在被所述檢測單元觸發(fā)后向管理系統(tǒng)發(fā)起中斷請求;所述 中斷請求用于觸發(fā)管理系統(tǒng)對所述寫操作進(jìn)行合法性判斷。
14、 如權(quán)利要求12所述的裝置,其特征在于,進(jìn)一步包括 寫操作指令接收單元,用于在接收對FLASH進(jìn)行寫操作的指令進(jìn)入寫操作狀態(tài)時,觸發(fā)置位單元;置位單元,用于在被所述寫操作指令接收單元觸發(fā)后,關(guān)閉對FLASH的 寫保護(hù),在對FLASH寫操作完成,接收到寫操作完成指令時;或,在沒有接 收到寫操作指令時,當(dāng)采樣到FLASH寫信號與FLASH片選信號線為低電平 時;或,接收到寫操作指令后,在設(shè)定時間閾值內(nèi)沒有接收到寫操作完成指令 時,打開對FLASH的寫保護(hù)。
15、 一種CPU管理系統(tǒng),包括管理系統(tǒng),其特征在于,還包括 備份模塊,用于在對FLASH進(jìn)行寫操作前,對FLASH中將要被改寫的數(shù)據(jù)進(jìn)行備份;判斷模塊,用于在接到中斷請求后進(jìn)入中斷處理,根據(jù)管理系統(tǒng)的寫操作 記錄對所述寫操作進(jìn)行合法性判斷,在確定所述寫操作合法時,退出中斷處理, 在確定所述寫操作非法時,觸發(fā)恢復(fù)模塊;恢復(fù)模塊,與所述判斷模塊、所述備份模塊相連,用于根據(jù)所述備份模塊 的備份數(shù)據(jù)恢復(fù)被改寫的數(shù)據(jù)。
16、 如權(quán)利要求15所述的系統(tǒng),其特征在于,進(jìn)一步包括定位模塊,用 于在確定所述寫操作非法時,根據(jù)所述判斷模塊的判斷結(jié)果定位所述寫操作錯 誤發(fā)生原因。
全文摘要
本發(fā)明公開了一種FLASH的寫操作處理方法、系統(tǒng)及設(shè)備,包括在對FLASH進(jìn)行寫操作前,對FLASH中將要被改寫的數(shù)據(jù)進(jìn)行備份;在對FLASH寫操作完成后,發(fā)起中斷請求;在接到中斷請求后,進(jìn)入中斷處理,根據(jù)寫操作記錄對所述寫操作進(jìn)行合法性判斷;在確定所述寫操作合法時,退出中斷處理,在確定所述寫操作非法時,根據(jù)備份數(shù)據(jù)恢復(fù)被改寫的數(shù)據(jù)。使用本發(fā)明,能夠在確定寫操作非法時,則可以恢復(fù)被改寫的數(shù)據(jù),使得即使出現(xiàn)錯誤的寫操作,也不會因錯誤修改而導(dǎo)致系統(tǒng)癱瘓。
文檔編號G06F11/14GK101178678SQ200710195568
公開日2008年5月14日 申請日期2007年12月6日 優(yōu)先權(quán)日2007年12月6日
發(fā)明者林建加 申請人:福建星網(wǎng)銳捷網(wǎng)絡(luò)有限公司