復(fù)位方法和網(wǎng)絡(luò)設(shè)備的制作方法
【專利摘要】本發(fā)明涉及一種復(fù)位方法和網(wǎng)絡(luò)設(shè)備。該方法包括:SPI?Flash接收處理器發(fā)送的復(fù)位指令,根據(jù)所述復(fù)位指令,進(jìn)行復(fù)位指令對應(yīng)的復(fù)位處理,該復(fù)位處理包括中斷當(dāng)前操作,記錄當(dāng)前操作被中斷時(shí)的中斷狀態(tài)信息,以及將當(dāng)前狀態(tài)設(shè)置為響應(yīng)所述處理器讀指令的狀態(tài);處理器完成復(fù)位操作后,向SPI?Fla?sh發(fā)送讀指令,接收SPI?Fla?sh根據(jù)讀指令發(fā)送的中斷狀態(tài)信息,然后根據(jù)所述中斷狀態(tài)信息,判斷是否要繼續(xù)進(jìn)行SPI?Fla?sh中被中斷的操作,如果是,則向SPI?Fla?sh發(fā)送繼續(xù)進(jìn)行被中斷的操作的指令。由此,本發(fā)明實(shí)現(xiàn)了在處理器進(jìn)行復(fù)位操作時(shí)使與之相連接的SPI?Fla?sh處于可以被處理器訪問的狀態(tài)。
【專利說明】復(fù)位方法和網(wǎng)絡(luò)設(shè)備
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)【技術(shù)領(lǐng)域】,尤其涉及一種復(fù)位方法和網(wǎng)絡(luò)設(shè)備。
【背景技術(shù)】
[0002]串行外設(shè)接口閃存(英文:Seri a I Peripheral Int erface Fl a sh,縮寫:SPI Fl a sh)可與處理器之間通過SPI接口進(jìn)行同步串行數(shù)據(jù)傳輸。通過SPI接口,處理器可以對SP I Fl a s h進(jìn)行讀寫操作,SPI接口只需要4根信號線,即片選(英文:ChipSe I ec t,縮寫:CS)信號線,SPI時(shí)鐘(英文:SPI C I ock,縮寫=SCLK)信號線,主器件輸出從器件輸入(英文:Ma s t er Out put S I averlnput,縮寫:M0S I)信號線,主器件輸入從器件輸出(英文:Ma s t er Inputs I aver Out put,縮寫:MI SO)信號線,以節(jié)約處理器的管腳資源。
[0003]通常,當(dāng)SPI Fla sh正在進(jìn)行擦除或編程操作時(shí),即使處理器向SPI Fla sh發(fā)送讀指令,F(xiàn)l a sh也拒絕響應(yīng)。由于此種機(jī)制,當(dāng)通過SPI Fl a sh啟動的處理器被復(fù)位結(jié)束后,處理器開始從SPI Fla sh中讀取軟件代碼數(shù)據(jù)。如果處理器在被復(fù)位前,F(xiàn)lash正在進(jìn)行擦除操作,并且處理器被復(fù)位結(jié)束后開始讀取軟件代碼數(shù)據(jù)時(shí),SPI Fla sh擦除操作還沒有結(jié)束,F(xiàn)la sh此時(shí)拒絕響應(yīng)處理器發(fā)出的讀取數(shù)據(jù)指令,即SPI Fla sh數(shù)據(jù)輸出信號線上無數(shù)據(jù)輸出,而處理器認(rèn)為數(shù)據(jù)讀取操作已完成。因此,處理器可能從SPI Fla sh讀取到不正確的軟件代碼數(shù)據(jù),不正確的軟件代碼被進(jìn)行,從而導(dǎo)致處理器程序運(yùn)行不正確或無法啟動系統(tǒng),大大降低了系統(tǒng)的可靠性。
【發(fā)明內(nèi)容】
[0004]本發(fā)明提供了一種復(fù)位方法和網(wǎng)絡(luò)設(shè)備,以實(shí)現(xiàn)在處理器進(jìn)行復(fù)位操作時(shí)使與之相連接的SPI Fl a sh處于可以被處理器訪問的狀態(tài),提高系統(tǒng)的可靠性。
[0005]第一方面,本發(fā)明提供了一種復(fù)位方法,所述方法包括:
[0006]串行外設(shè)接口閃存SPI Fla sh接收處理器發(fā)送的復(fù)位指令;
[0007]所述SPI Fla sh根據(jù)所述復(fù)位指令,進(jìn)行所述復(fù)位指令對應(yīng)的復(fù)位處理,所述復(fù)位處理包括中斷當(dāng)前操作,記錄所述當(dāng)前操作被中斷時(shí)的中斷狀態(tài)信息,以及將所述SPIFl a sh的當(dāng)前狀態(tài)設(shè)置為響應(yīng)所述處理器讀指令的狀態(tài);
[0008]所述處理器當(dāng)完成復(fù)位操作后,向所述SPI Fla sh發(fā)送讀指令;
[0009]所述處理器接收所述SPI Fla sh根據(jù)所述讀指令發(fā)送的所述復(fù)位寄存器中的所述中斷狀態(tài)信息;
[0010]所述處理器根據(jù)所述中斷狀態(tài)信息,判斷是否要繼續(xù)進(jìn)行所述被中斷的當(dāng)前操作,如果是,則向所述SPI Fl a sh發(fā)送繼續(xù)進(jìn)行所述被中斷的當(dāng)前操作的指令。
[0011]在第一方面的第一種可能的實(shí)現(xiàn)方式中,所述當(dāng)前操作為擦除操作時(shí),所述記錄所述當(dāng)前操作被中斷時(shí)的中斷狀態(tài)信息具體為:將所述擦除操作的擦除中斷狀態(tài)信息記錄在復(fù)位寄存器中。[0012]在第一方面的第二種可能的實(shí)現(xiàn)方式中,所述當(dāng)前操作為編程操作時(shí),所述記錄所述當(dāng)前操作被中斷時(shí)的中斷狀態(tài)信息具體為:將所述編程操作的編程中斷狀態(tài)信息記錄在復(fù)位寄存器中,并將所述編程操作對應(yīng)的編程數(shù)據(jù)保存在數(shù)據(jù)緩存器中。
[0013]結(jié)合第一方面或者第一方面的第一種可能的實(shí)現(xiàn)方式,在第三種可能的實(shí)現(xiàn)方式中,所述向所述SPI Fla sh發(fā)送繼續(xù)進(jìn)行所述被中斷的當(dāng)前操作的指令具體為:向所述SPIFla sh發(fā)送繼續(xù)進(jìn)行被中斷的擦除操作的擦除指令;所述擦除指令中攜帶有從所述中斷狀態(tài)信息中獲取的未擦除地址和未擦除扇區(qū)。
[0014]結(jié)合第一方面或者第一方面的第二種可能的實(shí)現(xiàn)方式,在第四種可能的實(shí)現(xiàn)方式中,所述向所述SPI Fla Sh發(fā)送繼續(xù)進(jìn)行所述被中斷的當(dāng)前操作的指令具體為:向所述SPIFla sh發(fā)送繼續(xù)進(jìn)行被中斷的編程操作的編程指令;所述編程指令中攜帶有從所述中斷狀態(tài)信息中獲取的未編程地址,以及從所述數(shù)據(jù)緩存器中獲取的沒有編程成功的操作數(shù)據(jù)。
[0015]第二方面,本發(fā)明提供了一種網(wǎng)絡(luò)設(shè)備,所述設(shè)備包括處理器和SPIFl a s h,所述處理器包括第一復(fù)位引腳、串行外設(shè)接口 SPI主控制器、主器件輸出引腳、主器件輸入引腳,所述SPI Fl a Sh包括復(fù)位寄存器、第二復(fù)位引腳、邏輯控制器、從器件輸入引腳、從器件輸出引腳;
[0016]所述第一復(fù)位引腳和所述第二復(fù)位引腳通過復(fù)位信號線連接,所述主器件輸出引腳和所述從器件輸入引腳通過輸出信號線連接,所述主器件輸入引腳和所述從器件輸出引腳通過輸入信號連接;
[0017]所述SPI Flash的所述從器件輸入引腳接收所述處理器通過所述輸出信號線發(fā)送的復(fù)位指令;所述邏輯控制器根據(jù)所述復(fù)位指令,進(jìn)行所述復(fù)位指令對應(yīng)的復(fù)位處理,所述復(fù)位處理包括中斷當(dāng)前操作,在所述復(fù)位寄存器中記錄所述當(dāng)前操作被中斷時(shí)的中斷狀態(tài)信息,以及將當(dāng)前狀態(tài)設(shè)置為響應(yīng)所述處理器讀指令的狀態(tài);
[0018]當(dāng)完成復(fù)位操作后,所述SPI主控制器控制所述主輸出引腳通過所述輸出信號線向所述SPI Fla Sh發(fā)送讀指令;所述主器件輸入引腳接收所述SPIFla sh根據(jù)所述讀指令發(fā)送的所述復(fù)位寄存器中的所述中斷狀態(tài)信息,所述中斷狀態(tài)信息為所述SPI Fla sh通過所述輸入信號線發(fā)送的;根據(jù)所述中斷狀態(tài)信息,所述處理器判斷是否要繼續(xù)進(jìn)行所述SPIFla sh中的被中斷的所述當(dāng)前操作,如果是,則通過所述輸出信號線向所述SPI Fl a s h發(fā)送繼續(xù)進(jìn)行被中斷的所述當(dāng)前操作的指令。
[0019]在第二方面的第一種可能的實(shí)現(xiàn)方式中,所述當(dāng)前操作為擦除操作時(shí),所述SPIFla sh將所述擦除操作的擦除中斷狀態(tài)信息記錄在所述復(fù)位寄存器中。
[0020]結(jié)合第二方面的第二種可能的實(shí)現(xiàn)方式中,所述SPI Fla sh還包括數(shù)據(jù)緩存器,當(dāng)前操作為編程操作時(shí),所述SPI Fla Sh將所述編程操作的編程中斷狀態(tài)信息記錄在所述復(fù)位寄存器中,并將所述編程操作對應(yīng)的編程數(shù)據(jù)保存在所述數(shù)據(jù)緩存器中。
[0021]結(jié)合第二方面或者第二方面的第一種可能的實(shí)現(xiàn)方式,在第三種可能的實(shí)現(xiàn)方式中,所述當(dāng)前操作為擦除操作時(shí),所述處理器向所述SPI Fla Sh發(fā)送繼續(xù)進(jìn)行被中斷的擦除操作的擦除指令;所述擦除指令中攜帶有從所述中斷狀態(tài)信息中獲取的未擦除地址和未擦除扇區(qū)。
[0022]結(jié)合第二方面或第二方面的第二種可能的實(shí)現(xiàn)方式,在第四種可能的實(shí)現(xiàn)方式中,所述當(dāng)前操作為編程操作時(shí),所述處理器向所述SPI Fl a Sh發(fā)送繼續(xù)進(jìn)行被中斷的編程操作的編程指令;所述編程指令中攜帶有從所述中斷狀態(tài)信息中獲取的未編程地址,以及從所述數(shù)據(jù)緩存器中獲取的沒有編程成功的操作數(shù)據(jù)。
[0023]本發(fā)明所提供的技術(shù)方案中,在只能通過外部SPI Fla sh進(jìn)行啟動的處理器進(jìn)行復(fù)位操作時(shí),處理器會向SPI Fla Sh發(fā)送復(fù)位指令,使得SPI Fla sh也進(jìn)行復(fù)位處理操作,該復(fù)位處理操作包括中斷當(dāng)前操作、記錄當(dāng)前操作被中斷時(shí)的中斷狀態(tài)信息、將當(dāng)前狀態(tài)設(shè)置為響應(yīng)處理器讀指令的狀態(tài)。這樣,在處理器完成復(fù)位操作時(shí),可讀取SPI Flash中保存的中斷狀態(tài)信息并判斷是否需要繼續(xù)被中斷的當(dāng)前操作,如果是,則繼續(xù)進(jìn)行被中斷的當(dāng)前操作。由此,本發(fā)明實(shí)現(xiàn)了在處理器進(jìn)行復(fù)位操作時(shí)使與之相連接的SPI Fla sh處于可以被處理器訪問的狀態(tài),提高了系統(tǒng)的可靠性。
【專利附圖】
【附圖說明】
[0024]圖1為本發(fā)明實(shí)施例提供的一種復(fù)位方法流程圖;
[0025]圖2為本發(fā)明實(shí)施例提供的一種網(wǎng)絡(luò)設(shè)備示意圖。
【具體實(shí)施方式】
[0026]以下描述中,為了說明而不是為了限定,提出了諸如特定系統(tǒng)結(jié)構(gòu)、接口、技術(shù)之類的具體細(xì)節(jié),以便透切理解本發(fā)明。然而,本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)清楚,在沒有這些具體細(xì)節(jié)的其它實(shí)施例中也可以實(shí)現(xiàn)本發(fā)明。在其它情況中,省略對眾所周知的裝置、電路以及方法的詳細(xì)說明,以免不必要的細(xì)節(jié)妨礙本發(fā)明的描述。
[0027]本發(fā)明實(shí)施例針對目前復(fù)位方法的缺陷,提供了一種復(fù)位方法和網(wǎng)絡(luò)設(shè)備。在通過SPI Fla sh進(jìn)行啟動的處理器進(jìn)行復(fù)位操作時(shí),向與之相連接的SPI Fla sh發(fā)送復(fù)位指令,SPI Fla sh接收到處理器發(fā)送的復(fù)位指令時(shí),根據(jù)所述復(fù)位指令,進(jìn)行所述復(fù)位指令對應(yīng)的復(fù)位處理,所述復(fù)位處理包括中斷當(dāng)前操作,記錄所述當(dāng)前操作被中斷時(shí)的中斷狀態(tài)信息,以及將當(dāng)前狀態(tài)設(shè)置為響應(yīng)所述處理器讀指令的狀態(tài)。處理器完成復(fù)位操作后,向SPI Flash發(fā)送讀指令;接收所述SPI Fla sh根據(jù)所述讀指令發(fā)送的所述復(fù)位寄存器中的中斷狀態(tài)信息;根據(jù)所述中斷狀態(tài)信息,判斷是否要繼續(xù)進(jìn)行所述SPI Fla sh中的被中斷的操作,如果判斷需要繼續(xù)執(zhí)行被中斷的操作,則根據(jù)中斷狀態(tài)信息對SPI Fla sh繼續(xù)進(jìn)行被中斷的操作。由此,本發(fā)明實(shí)施例實(shí)現(xiàn)了在處理器進(jìn)行復(fù)位操作時(shí)使與之相連接的SPIFlash處于可以被處理器訪問的狀態(tài),提高了系統(tǒng)的可靠性。
[0028]圖1為本發(fā)明實(shí)施例提供的一種復(fù)位方法流程圖。該實(shí)施例的執(zhí)行主體是包括SPI Fla Sh和處理器的網(wǎng)絡(luò)設(shè)備,其中詳細(xì)描述了處理器在進(jìn)行復(fù)位操作時(shí),使與之相連接的SPI Fla sh進(jìn)行復(fù)位處理來提高系統(tǒng)可靠性的方法。如圖1所示,本實(shí)施例包括以下步驟:
[0029]步驟101,串行外設(shè)接口閃存SPI Fla sh接收處理器發(fā)送的復(fù)位指令。
[0030]為了實(shí)現(xiàn)本發(fā)明實(shí)施例的技術(shù)方案,在實(shí)際應(yīng)用中,SPI Fl a sh中增加了一個(gè)外部復(fù)位引腳,該復(fù)位引腳可以接收到處理器發(fā)送的復(fù)位指令。
[0031]步驟102,所述SPI Fla sh根據(jù)所述復(fù)位指令,進(jìn)行所述復(fù)位指令對應(yīng)的復(fù)位處理,所述復(fù)位處理包括中斷當(dāng)前操作,記錄所述當(dāng)前操作被中斷時(shí)的中斷狀態(tài)信息,以及將當(dāng)前狀態(tài)設(shè)置為響應(yīng)所述處理器讀指令的狀態(tài)。[0032]當(dāng)外部復(fù)位引腳接收到復(fù)位指令后,SPI Flash可根據(jù)該復(fù)位指令進(jìn)行復(fù)位處理操作,該復(fù)位處理操作包括中斷當(dāng)前操作,記錄當(dāng)前操作被中斷時(shí)的中斷狀態(tài)信息,以及將SPI Fla Sh的當(dāng)前狀態(tài)設(shè)置為可響應(yīng)處理器的讀指令的狀態(tài)。
[0033]為了實(shí)現(xiàn)本發(fā)明實(shí)施例的技術(shù)方案,在實(shí)際應(yīng)用中,SPI Fl a s h中增加了一個(gè)復(fù)位寄存器,該復(fù)位寄存器中可以保存SPI Fla Sh被中斷的操作的中斷狀態(tài)信息。
[0034]其中,SPI Fl a s h正在進(jìn)行的當(dāng)前操作可以為編程操作或者擦除操作,在中斷編程操作時(shí),可記錄的中斷狀態(tài)信息包括操作狀態(tài)、已編程區(qū)域、已編程地址、未編程區(qū)域和未編程地址,可將中斷狀態(tài)信息記錄在復(fù)位寄存器中;對于編程操作,還可將沒有編程成功的操作數(shù)據(jù)保存在SPI Fla Sh的數(shù)據(jù)緩存器(英文:Da ta Buffer)中。在中斷擦除操作時(shí),可記錄的中斷狀態(tài)信息包括已擦除扇區(qū)、已擦除地址、是否擦除成功、未擦除扇區(qū)和未擦除地址,可將該中斷狀態(tài)信息保存在復(fù)位寄存器中。
[0035]步驟103,所述處理器當(dāng)完成復(fù)位操作后,向所述SPI Fl a sh發(fā)送讀指令。
[0036]當(dāng)處理器完成自身的復(fù)位操作,在系統(tǒng)啟動后,可向SP I Fl a sh發(fā)送讀指令,用以讀取其中的復(fù)位寄存器的內(nèi)容。
[0037]步驟104,所述處理器接收所述SPI Fla sh根據(jù)所述讀指令發(fā)送的所述復(fù)位寄存器中的所述中斷狀態(tài)信息。
[0038]由于SPI Fla sh之前已設(shè)置了本地狀態(tài)為可響應(yīng)處理器讀指令的狀態(tài),因此可接收到處理器發(fā)送的用于讀取復(fù)位寄存器中的內(nèi)容的讀指令并且給予響應(yīng),即向處理器發(fā)送復(fù)位寄存器中的中斷狀態(tài)信息。
[0039]由于SPI Fl a s h在復(fù)位寄存器中記錄了中斷狀態(tài)信息,因此在接收到處理器發(fā)送的讀指令后,可將所保存的中斷狀態(tài)信息發(fā)送至處理器。
[0040]步驟105,所述處理器根據(jù)所述中斷狀態(tài)信息,判斷是否要繼續(xù)進(jìn)行所述SPI Flash中被中斷的所述當(dāng)前操作,如果是,則向所述SPI Fla sh發(fā)送繼續(xù)進(jìn)行被中斷的所述當(dāng)前操作的指令。
[0041]對于被中斷的操作為編程操作的情況,在處理器接收到該中斷狀態(tài)信息后,可根據(jù)該中斷狀態(tài)信息判斷是否需要繼續(xù)進(jìn)行被中斷的操作,如果需要,則把中斷狀態(tài)信息中的未編程地址作為需要對SPI Fla Sh進(jìn)行編程操作的編程地址,把數(shù)據(jù)緩存器中的沒有編程成功的操作數(shù)據(jù)作為需要對SPI Fla sh進(jìn)行編程操作的編程數(shù)據(jù),向SPI Fla sh發(fā)送繼續(xù)進(jìn)行編程操作的指令,該指令中攜帶有該從中斷狀態(tài)信息中讀取到的未編程地址和沒有編程成功的操作數(shù)據(jù)。SPI Flash接收到該繼續(xù)進(jìn)行編程操作的指令后,即可根據(jù)該指令繼續(xù)進(jìn)行被中斷的編程操作,以防止重要的數(shù)據(jù)丟失。
[0042]對于被中斷的操作為擦除操作的情況,在處理器接收到該中斷狀態(tài)信息后,可根據(jù)該中斷狀態(tài)信息判斷是否需要繼續(xù)進(jìn)行被中斷的操作,如果需要,則把中斷狀態(tài)信息中的未擦除扇區(qū)和未擦除地址作為需要對SPI Fla Sh進(jìn)行擦除操作的擦除扇區(qū)和擦除地址,向SPI Fla sh發(fā)送繼續(xù)進(jìn)行擦除操作的指令,該指令中攜帶有該從中斷狀態(tài)信息中讀取到的未擦除地址和未擦除扇區(qū)。SPI Fla sh接收到該繼續(xù)進(jìn)行擦除操作的指令后,即可根據(jù)該指令繼續(xù)進(jìn)行被中斷的擦除操作,以防止未擦除的區(qū)域或未擦除的數(shù)據(jù)導(dǎo)致系統(tǒng)無法運(yùn)行或運(yùn)行錯誤。
[0043]在一個(gè)可選的實(shí)現(xiàn)方式中,SPI Fla sh將沒有編程成功的操作數(shù)據(jù)保存在SPIFla sh的數(shù)據(jù)緩存器中時(shí),也保存該沒有編程成功的操作數(shù)據(jù)的校驗(yàn)和,即第一校驗(yàn)和。在執(zhí)行步驟105之前,首先在SPI Fla sh的數(shù)據(jù)緩存器中讀取其中保存的沒有編程成功的操作數(shù)據(jù)以及沒有編程成功的操作數(shù)據(jù)的第一校驗(yàn)和,然后對所讀取的沒有編程成功的操作數(shù)據(jù)進(jìn)行校驗(yàn)和的計(jì)算得到第二校驗(yàn)和,判斷第一校驗(yàn)和和第二校驗(yàn)和是否一致,如果一致則再執(zhí)行步驟105。上述對讀取的沒有編程成功的操作數(shù)據(jù)進(jìn)行校驗(yàn)和的計(jì)算的算法與計(jì)算第一校驗(yàn)和的算法相同。
[0044]本發(fā)明實(shí)施例中,在處理器進(jìn)行復(fù)位的過程中,通過使與之相連接的SPIFl a s h進(jìn)行對應(yīng)的復(fù)位處理操作,實(shí)現(xiàn)了在處理器進(jìn)行復(fù)位操作時(shí)使與之相連接的SPI Fla Sh處于可以被處理器訪問的狀態(tài),提高了系統(tǒng)的可靠性。
[0045]相應(yīng)地,本發(fā)明實(shí)施例還提供了一種網(wǎng)絡(luò)設(shè)備。圖2為本發(fā)明實(shí)施例提供的一種網(wǎng)絡(luò)設(shè)備示意圖。如圖2所示,本網(wǎng)絡(luò)設(shè)備包括處理器210和SPIFl a s h220,其中處理器210中包括SPI主控制器211,第一復(fù)位Res e t引腳212,還包括主器件輸出MO引腳213、主器件輸入MI引腳214 ;SPI Fl a sh220中包括第二復(fù)位Res et引腳221、邏輯控制器222、復(fù)位寄存器223、數(shù)據(jù)緩存器224,除此之外,還包括從器件輸入S I引腳225、從器件輸出SO引腳226等。
[0046]其中,所述第一復(fù)位引腳和所述第二復(fù)位引腳通過復(fù)位信號線連接,所述主器件輸出引腳和所述從器件輸入引腳通過輸出信號線連接,所述主器件輸入引腳和所述從器件輸出引腳通過輸入信號連接。當(dāng)然,SPI Fla sh還包括片選引腳和串行時(shí)鐘引腳,處理器也還包括片選引腳和串行時(shí)鐘引腳,SPIFl a s h的片選引腳和處理器的片選引腳通過片選信號線連接,SP I Fl a sh的串行時(shí)鐘引腳和處理器的串行時(shí)鐘引腳通過串行時(shí)鐘信號線連接。
[0047]在處理器通過輸出信號線向SPI Fla sh發(fā)送復(fù)位指令之前,處理器還將通過復(fù)位信號線向SPI Fla Sh發(fā)送復(fù)位觸發(fā)信號,用以指示所述邏輯控制器222接下來輸出信號線接收到的指令為復(fù)位指令。
[0048]所述SPI Fla sh220的所述從器件輸入引腳接收所述處理器通過所述輸出信號線發(fā)送的復(fù)位指令;所述邏輯控制器根據(jù)所述復(fù)位指令,進(jìn)行所述復(fù)位指令對應(yīng)的復(fù)位處理,所述復(fù)位處理包括中斷當(dāng)前操作,在所述復(fù)位寄存器中記錄所述當(dāng)前操作被中斷時(shí)的中斷狀態(tài)信息,以及將當(dāng)前狀態(tài)設(shè)置為響應(yīng)所述處理器讀指令的狀態(tài)。
[0049]當(dāng)完成復(fù)位操作后,所述SPI主控制器控制所述主輸出引腳通過所述輸出信號線向所述SPI Fla Sh發(fā)送讀指令;所述主器件輸入引腳接收所述SPIFla sh根據(jù)所述讀指令發(fā)送的所述復(fù)位寄存器中的所述中斷狀態(tài)信息,所述中斷狀態(tài)信息為所述SPI Fla sh通過所述輸入信號線發(fā)送的;根據(jù)所述中斷狀態(tài)信息,所述處理器判斷是否要繼續(xù)進(jìn)行所述SPIFla sh中的被中斷的所述當(dāng)前操作,如果是,則通過所述輸出信號線向所述SPI Fl a sh發(fā)送繼續(xù)進(jìn)行被中斷的所述當(dāng)前操作的指令
[0050]其中,SPI Fla sh220正在進(jìn)行的當(dāng)前操作可以為編程操作或者擦除操作。所述SPI記錄所述當(dāng)前操作被中斷時(shí)的中斷狀態(tài)信息的操作具體為:將所述擦除操作的擦除中斷狀態(tài)信息記錄在復(fù)位寄存器223中;或者,將所述編程操作的編程中斷狀態(tài)信息記錄在復(fù)位寄存器223中,并將所述編程操作對應(yīng)的編程數(shù)據(jù)保存在數(shù)據(jù)緩存器224中。在中斷編程操作時(shí),可記錄的中斷狀態(tài)信息包括操作狀態(tài)、已編程區(qū)域、已編程地址、未編程區(qū)域和未編程地址,可將中斷狀態(tài)信息記錄在復(fù)位寄存器223中;對于編程操作,還可將沒有編程成功的操作數(shù)據(jù)保存在SPI Fla sh220的數(shù)據(jù)緩存器224(英文:Data Buffer)中。在中斷擦除操作時(shí),可記錄的中斷狀態(tài)信息包括已擦除扇區(qū)、已擦除地址、是否擦除成功、未擦除扇區(qū)和未擦除地址,可將該中斷狀態(tài)信息保存在復(fù)位寄存器223中。
[0051]具體地,對于被中斷的操作為編程操作的情況,在處理器210接收到該中斷狀態(tài)信息后,可根據(jù)該中斷狀態(tài)信息判斷是否需要繼續(xù)進(jìn)行被中斷的操作,如果需要,則把中斷狀態(tài)信息中的未編程地址作為需要對SPI Fl a S h220進(jìn)行編程操作的編程地址,把數(shù)據(jù)緩存器224中的沒有編程成功的操作數(shù)據(jù)作為需要對SPI Fla sh220進(jìn)行編程操作的編程數(shù)據(jù),向SPI Fla sh220發(fā)送繼續(xù)進(jìn)行編程操作的指令,該指令中攜帶有該從中斷狀態(tài)信息中讀取到的未編程地址和沒有編程成功的操作數(shù)據(jù)。SPI Fla sh220接收到該繼續(xù)進(jìn)行編程操作的指令后,即可根據(jù)該指令繼續(xù)進(jìn)行被中斷的編程操作,以防止重要的數(shù)據(jù)丟失。
[0052]對于被中斷的操作為擦除操作的情況,在處理器210接收到該中斷狀態(tài)信息后,可根據(jù)該中斷狀態(tài)信息判斷是否需要繼續(xù)進(jìn)行被中斷的操作,如果需要,則把中斷狀態(tài)信息中的未擦除扇區(qū)和未擦除地址作為需要對SPIFla sh220進(jìn)行擦除操作的擦除扇區(qū)和擦除地址,向SPI Fla sh220發(fā)送繼續(xù)進(jìn)行擦除操作的指令,該指令中攜帶有該從中斷狀態(tài)信息中讀取到的未擦除地址和未擦除扇區(qū)。SPI Fla sh220接收到該繼續(xù)進(jìn)行擦除操作的指令后,即可根據(jù)該指令繼續(xù)進(jìn)行被中斷的擦除操作,以防止未擦除的區(qū)域或未擦除的數(shù)據(jù)導(dǎo)致系統(tǒng)無法運(yùn)行或運(yùn)行錯誤。
[0053]在一個(gè)可選的實(shí)現(xiàn)方式中,SPI Fla sh220將沒有編程成功的操作數(shù)據(jù)保存在SPIFla sh220的數(shù)據(jù)緩存器224中時(shí),也保存該沒有編程成功的操作數(shù)據(jù)的校驗(yàn)和,即第一校驗(yàn)和。在執(zhí)行判斷是否繼續(xù)進(jìn)行被中斷的操作之前,首先在SPI Flash220的數(shù)據(jù)緩存器224中讀取其中保存的沒有編程成功的操作數(shù)據(jù)以及沒有編程成功的操作數(shù)據(jù)的第一校驗(yàn)和,然后對所讀取的沒有編程成功的操作數(shù)據(jù)進(jìn)行校驗(yàn)和的計(jì)算得到第二校驗(yàn)和,判斷第一校驗(yàn)和和第二校驗(yàn)和是否一致,如果一致則再執(zhí)行判斷是否繼續(xù)進(jìn)行被中斷的操作的步驟。上述對讀取的沒有編程成功的操作數(shù)據(jù)進(jìn)行校驗(yàn)和的計(jì)算的算法與計(jì)算第一校驗(yàn)和的算法相同。
[0054]本發(fā)明實(shí)施例中,在處理器進(jìn)行復(fù)位的過程中,通過使與之相連接的SPIFl a s h進(jìn)行對應(yīng)的復(fù)位處理操作,實(shí)現(xiàn)了在處理器進(jìn)行復(fù)位操作時(shí)使與之相連接的SPI Fla Sh處于可以被處理器訪問的狀態(tài),提高了系統(tǒng)的可靠性。
[0055]以上所述的【具體實(shí)施方式】,對本發(fā)明的目的、技術(shù)方案和有益效果進(jìn)行了進(jìn)一步詳細(xì)說明,所應(yīng)理解的是,以上所述僅為本發(fā)明的【具體實(shí)施方式】而已,并不用于限定本發(fā)明的保護(hù)范圍,凡在本發(fā)明的技術(shù)方案基礎(chǔ)上,所做的任何顯而易見的修改、等同替換等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
【權(quán)利要求】
1.一種復(fù)位方法,其特征在于,所述方法包括: 串行外設(shè)接口閃存SPI Fla Sh接收處理器發(fā)送的復(fù)位指令; 所述SPI Fla sh根據(jù)所述復(fù)位指令,進(jìn)行所述復(fù)位指令對應(yīng)的復(fù)位處理,所述復(fù)位處理包括中斷當(dāng)前操作,記錄所述當(dāng)前操作被中斷時(shí)的中斷狀態(tài)信息,以及將所述SPI Flash的當(dāng)前狀態(tài)設(shè)置為響應(yīng)所述處理器讀指令的狀態(tài); 所述處理器當(dāng)完成復(fù)位操作后,向所述SPI Fla sh發(fā)送讀指令; 所述處理器接收所述SPI Fla sh根據(jù)所述讀指令發(fā)送的所述復(fù)位寄存器中的所述中斷狀態(tài)信息; 所述處理器根據(jù)所述中斷狀態(tài)信息,判斷是否要繼續(xù)進(jìn)行所述被中斷的當(dāng)前操作,如果是,則向所述SP I Fl a S h發(fā)送繼續(xù)進(jìn)行所述被中斷的當(dāng)前操作的指令。
2.根據(jù)權(quán)利要求1所述的復(fù)位方法,其特征在于,所述當(dāng)前操作為擦除操作時(shí),所述記錄所述當(dāng)前操作被中斷時(shí)的中斷狀態(tài)信息具體為: 將所述擦除操作的擦除中斷狀態(tài)信息記錄在復(fù)位寄存器中。
3.根據(jù)權(quán)利要求1所述的復(fù)位方法,其特征在于,所述當(dāng)前操作為編程操作時(shí),所述記錄所述當(dāng)前操作被中斷時(shí)的中斷狀態(tài)信息具體為:將所述編程操作的編程中斷狀態(tài)信息記錄在復(fù)位寄存器中,并將所述編程操作對應(yīng)的編程數(shù)據(jù)保存在數(shù)據(jù)緩存器中。
4.根據(jù)權(quán)利要求2所述的復(fù)位方法,其特征在于,所述向所述SPIFla sh發(fā)送繼續(xù)進(jìn)行所述被中斷的當(dāng)前操作的指令具體為:向所述SPI Flash發(fā)送繼續(xù)進(jìn)行被中斷的擦除操作的擦除指令;所述擦除指令 中攜帶有從所述中斷狀態(tài)信息中獲取的未擦除地址和未擦除扇區(qū)。
5.根據(jù)權(quán)利要求3所述的復(fù)位方法,其特征在于,所述向所述SPIFlash發(fā)送繼續(xù)進(jìn)行所述被中斷的當(dāng)前操作的指令具體為:向所述SPI Fla Sh發(fā)送繼續(xù)進(jìn)行被中斷的編程操作的編程指令;所述編程指令中攜帶有從所述中斷狀態(tài)信息中獲取的未編程地址,以及從所述數(shù)據(jù)緩存器中獲取的沒有編程成功的操作數(shù)據(jù)。
6.一種網(wǎng)絡(luò)設(shè)備,其特征在于,所述網(wǎng)絡(luò)設(shè)備包括處理器和串行外設(shè)接口閃存SPI Fla sh,所述處理器包括第一復(fù)位引腳、串行外設(shè)接口 SPI主控制器、主器件輸出引腳、主器件輸入引腳,所述SPI Fl a sh包括復(fù)位寄存器、第二復(fù)位引腳、邏輯控制器、從器件輸入引腳、從器件輸出引腳; 所述第一復(fù)位引腳和所述第二復(fù)位引腳通過復(fù)位信號線連接,所述主器件輸出引腳和所述從器件輸入引腳通過輸出信號線連接,所述主器件輸入引腳和所述從器件輸出引腳通過輸入信號連接; 所述SPI Fla sh的所述從器件輸入引腳接收所述處理器通過所述輸出信號線發(fā)送的復(fù)位指令;所述邏輯控制器根據(jù)所述復(fù)位指令,進(jìn)行所述復(fù)位指令對應(yīng)的復(fù)位處理,所述復(fù)位處理包括中斷當(dāng)前操作,在所述復(fù)位寄存器中記錄所述當(dāng)前操作被中斷時(shí)的中斷狀態(tài)信息,以及將當(dāng)前狀態(tài)設(shè)置為響應(yīng)所述處理器讀指令的狀態(tài); 當(dāng)完成復(fù)位操作后,所述SPI主控制器控制所述主輸出引腳通過所述輸出信號線向所述SPI Fla sh發(fā)送讀指令;所述主器件輸入引腳接收所述SPIFla sh根據(jù)所述讀指令發(fā)送的所述復(fù)位寄存器中的所述中斷狀態(tài)信息,所述中斷狀態(tài)信息為所述SPI Fla sh通過所述輸入信號線發(fā)送的;根據(jù)所述中斷狀態(tài)信息,所述處理器判斷是否要繼續(xù)進(jìn)行所述SPI FlaSh中的被中斷的所述當(dāng)前操作,如果是,則通過所述輸出信號線向所述SPI Fl a Sh發(fā)送繼續(xù)進(jìn)行被中斷的所述當(dāng)前操作的指令。
7.根據(jù)權(quán)利要求6所述的網(wǎng)絡(luò)設(shè)備,其特征在于,所述當(dāng)前操作為擦除操作時(shí),所述SPI Fla Sh將所述擦除操作的擦除中斷狀態(tài)信息記錄在所述復(fù)位寄存器中。
8.根據(jù)權(quán)利要求6所述的網(wǎng)絡(luò)設(shè)備,其特征在于,所述SPIFl a s h還包括數(shù)據(jù)緩存器,當(dāng)前操作為編程操作時(shí),所述SPI Fla sh將所述編程操作的編程中斷狀態(tài)信息記錄在所述復(fù)位寄存器中,并將所述編程操作對應(yīng)的編程數(shù)據(jù)保存在所述數(shù)據(jù)緩存器中。
9.根據(jù)權(quán)利要求7所述的網(wǎng)絡(luò)設(shè)備,其特征在于,所述當(dāng)前操作為擦除操作時(shí),所述處理器向所述SPI Fla Sh發(fā)送繼續(xù)進(jìn)行被中斷的擦除操作的擦除指令;所述擦除指令中攜帶有從所述中斷狀態(tài)信息中獲取的未擦除地址和未擦除扇區(qū)。
10.根據(jù)權(quán)利要求8所述的網(wǎng)絡(luò)設(shè)備,其特征在于,所述當(dāng)前操作為編程操作時(shí),所述處理器向所述SPI Fla Sh發(fā)送繼續(xù)進(jìn)行被中斷的編程操作的編程指令;所述編程指令中攜帶有從所述中斷狀態(tài)信息中獲取的未編程地址,以及從所述數(shù)據(jù)緩存器中獲取的沒有編程成功的操作數(shù)據(jù)。
【文檔編號】G06F1/24GK103809717SQ201210447224
【公開日】2014年5月21日 申請日期:2012年11月9日 優(yōu)先權(quán)日:2012年11月9日
【發(fā)明者】宋奎超, 饒俊陽, 柳強(qiáng) 申請人:華為技術(shù)有限公司