亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種基于ECC校驗的防止SD使用過程中flash被意外篡改的方法與流程

文檔序號:11949872閱讀:595來源:國知局
一種基于ECC校驗的防止SD使用過程中flash被意外篡改的方法與流程

本發(fā)明涉及智能設(shè)備技術(shù)領(lǐng)域,具體地講,是涉及一種基于ECC校驗的防止SD使用過程中flash被意外篡改的方法。



背景技術(shù):

目前很多公司都紛紛嘗試智能設(shè)備(SD,Smart Device)領(lǐng)域,SD設(shè)備功能越來越多,硬件集成度越來越高。但是因為一些成本控制或者設(shè)計方案不那么完善,以及一些難以避免的原因(如突然停電)導(dǎo)致了SD使用過程中flash(閃存)上固件被意外篡改,SD設(shè)備無法正常工作。

SD在使用過程中,由于硬件設(shè)備老化、正常使用突然斷電等原因,導(dǎo)致了flash中存放的固件被意外篡改,使SD無法正常使用。圖1所示,是常規(guī)的flash布局,具體的SD設(shè)備制造廠商可能略有不同。第一個分區(qū)一定是Bootloader分區(qū),對系統(tǒng)進(jìn)行引導(dǎo),同時系統(tǒng)鏡像分區(qū)也一定會有,實現(xiàn)設(shè)備主要的功能。其他區(qū)域按照各設(shè)備的需求而定。

由于某些特殊原因(如突然斷電),flash中的鏡像文件被篡改,導(dǎo)致SD無法正常啟動。遇到這種情況用戶只能選擇退換貨或者自認(rèn)倒霉。Flash被意外篡改的情況導(dǎo)致退換貨在SD設(shè)備制造公司非常普遍。如果能夠有效減少flash被意外篡改的發(fā)生,可以有效的減少公司的損失。從源頭上來減少flash被意外篡改,各大flash廠商正在努力的去改正,但是卻無法避免。



技術(shù)實現(xiàn)要素:

針對上述現(xiàn)有技術(shù)的不足,本發(fā)明提供一種基于ECC校驗的防止SD使用過程中flash被意外篡改的方法,通過ECC校驗的方式修正已經(jīng)發(fā)生少量bit位篡改的flash,保證設(shè)備的正常使用。

為了實現(xiàn)上述目的,本發(fā)明采用的技術(shù)方案如下:

一種基于ECC校驗的防止SD使用過程中flash被意外篡改的方法,包括如下步驟:

(S1)按照SD設(shè)備需求在flash內(nèi)生成bootloader分區(qū);

(S2)根據(jù)生成的bootloader分區(qū)生成對應(yīng)的ECC校驗值,并把該ECC校驗值保存于所述bootloader分區(qū)后生成的bootloaderECC校驗區(qū)中;

(S3)按照SD設(shè)備需求生成系統(tǒng)內(nèi)核和根文件系統(tǒng)分區(qū);

(S4)根據(jù)所述系統(tǒng)內(nèi)核和根文件分區(qū)生成對應(yīng)的ECC校驗值,并把該ECC校驗值保存于所述系統(tǒng)內(nèi)核和根文件分區(qū)后生成的系統(tǒng)ECC校驗區(qū)中;

(S5)所述SD設(shè)備在每次啟動過程中,根據(jù)flash讀出的每256字節(jié)數(shù)據(jù)生成一個新的ECC校驗值,將其與該flash的bootloaderECC校驗區(qū)或系統(tǒng)ECC校驗區(qū)內(nèi)對應(yīng)保存的ECC校驗值進(jìn)行對比,若二者一致,則表明該256字節(jié)數(shù)據(jù)正常,否則根據(jù)ECC校驗規(guī)則對該256字節(jié)數(shù)據(jù)進(jìn)行修復(fù)。

為了有效區(qū)分ECC校驗區(qū)域,避免啟動過程中出現(xiàn)該部分錯誤,所述bootloader分區(qū)和所述bootloaderECC校驗區(qū)之間通過由一些特殊定義的字符構(gòu)成的第一分隔區(qū)間隔。

相應(yīng)地,所述系統(tǒng)內(nèi)核和根文件系統(tǒng)分區(qū)和所述系統(tǒng)ECC校驗區(qū)之間通過由一些特殊定義的字符構(gòu)成的第二分隔區(qū)間隔。

具體地,所述步驟(S5)中將新的ECC校驗值與對應(yīng)保存的ECC校驗值進(jìn)行對比的具體方法為將二者按位異或。

進(jìn)一步地,所述步驟(S5)中將新的ECC校驗值與對應(yīng)保存的ECC校驗值按位異或后,若結(jié)果為0,則表示不存在錯誤,當(dāng)3個字節(jié)異或結(jié)果中存在11個bit位為1,則表示存在可糾正的一個bit錯誤,當(dāng)3個字節(jié)異或結(jié)果中只存在1個bit位為1,則表示該對應(yīng)的ECC校驗區(qū)出錯。

更具體地,所述ECC校驗規(guī)則的生成算法包含每次對256字節(jié)數(shù)據(jù)進(jìn)行行校驗生成和列校驗生成,其中,所述256字節(jié)數(shù)據(jù)排列構(gòu)成256行、8列的矩陣,該矩陣的每個元素表示一個bit位。

更進(jìn)一步地,所述行校驗生成的過程如下:

(ra)所述矩陣中奇數(shù)行生成其對應(yīng)的校驗結(jié)果RP0,偶數(shù)行生成其對應(yīng)的校驗結(jié)果RP1;

(rb)由這256個校驗結(jié)果RP0和RP1順次相鄰地構(gòu)成128對校驗對,并且排列為偶數(shù)的檢驗對內(nèi)的RP0和RP1異或生成校驗結(jié)果RP2,排列為奇數(shù)的檢驗對內(nèi)的RP0和RP1異或生成校驗結(jié)果RP3;

(rc)由這128個校驗結(jié)果RP2和RP3順次相鄰地構(gòu)成64對校驗對,并且排列為偶數(shù)的檢驗對內(nèi)的RP2和RP3異或生成校驗結(jié)果RP4,排列為奇數(shù)的檢驗對內(nèi)的RP2和RP3異或生成校驗結(jié)果RP5;

(rd)以此方式類推,直至生成由校驗結(jié)果RP14和校驗結(jié)果RP15構(gòu)成的唯一一對校驗對。

更進(jìn)一步地,所述列校驗生成的過程如下:

(ca)所述矩陣中偶數(shù)列生成其對應(yīng)的校驗結(jié)果CP0,奇數(shù)列生成其對應(yīng)的校驗結(jié)果CP1;

(cb)由這8個校驗結(jié)果CP0和CP1順次相鄰構(gòu)成4對校驗對,并且排列為奇數(shù)的校驗對內(nèi)的CP0和CP1異或生成校驗結(jié)果CP3,排列為偶數(shù)的校驗對內(nèi)的CP0和CP1異或生成校驗結(jié)果CP2;

(cc)由該順次相鄰排列的校驗結(jié)果CP2和CP3構(gòu)成2對校驗對,依次異或生成校驗結(jié)果CP5和CP4。

更進(jìn)一步地,所述校驗結(jié)果RP0~RP15和校驗結(jié)果CP0~CP5將其校驗值保存于對應(yīng)的ECC校驗區(qū)中,每256字節(jié)數(shù)據(jù)生成的22bit位ECC校驗值存儲于3個字節(jié)中,該3個字節(jié)內(nèi)的空余2bit位用值1填充。

更具體地,所述根據(jù)ECC校驗規(guī)則對該256字節(jié)數(shù)據(jù)進(jìn)行修復(fù)具體為

通過生成的新的ECC校驗值與保存的ECC校驗值的異或?qū)Ρ?,定位發(fā)生篡改的bit位的行列位置,并將其修復(fù)為與已保存的ECC校驗值匹配的bit位值。

與現(xiàn)有技術(shù)相比,本發(fā)明具有以下有益效果:

(1)本發(fā)明巧妙利用ECC檢驗原理有效地糾正了由于SD的flash性能不穩(wěn)定造成的少量bit的篡改問題,有效地改善了SD設(shè)備在使用過程中因停電、flash參數(shù)擦寫過于頻繁等導(dǎo)致少量bit被篡改而無法啟動的情況,同時對于flash硬件中沒有提供OOB(out of band)區(qū)的設(shè)備可獨立地利用flash空間開辟一個用于存放ECC校驗值的區(qū)域,有效解決了本發(fā)明實現(xiàn)的硬件更新障礙,并且其同類ECC校驗值全部存放于一個校驗區(qū)內(nèi),僅通過依次讀flash操作即可獲取到全部ECC校驗值,相較常規(guī)的每次分別讀取,大大提高了ECC校驗校正的效率,減少了ECC校驗占用的時間,降低了flash的使用率,并且本發(fā)明構(gòu)思巧妙新穎,易于實現(xiàn),應(yīng)用性好,成本低廉,具有廣泛的應(yīng)用前景,適合推廣應(yīng)用。

(2)本發(fā)明利用分隔區(qū)在bootloader分區(qū)和系統(tǒng)內(nèi)核和根文件分區(qū)之后產(chǎn)生對應(yīng)的ECC校驗區(qū),專門保持相應(yīng)的ECC校驗值,有效地避免了flash中沒有預(yù)設(shè)OOB區(qū)而存儲ECC校驗值產(chǎn)生的系統(tǒng)錯誤。

附圖說明

圖1為現(xiàn)有技術(shù)中flash內(nèi)的分區(qū)布局示意圖。

圖2為本發(fā)明的流程示意圖。

圖3為本發(fā)明中的flash分區(qū)布局示意圖。

圖4為本發(fā)明中分隔區(qū)的布局示意圖。

圖5為本發(fā)明中ECC行校驗生成的示意圖。

圖6為本發(fā)明中ECC列校驗生成的示意圖。

圖7為本發(fā)明中校驗結(jié)果保存的示意圖。

具體實施方式

下面結(jié)合附圖和實施例對本發(fā)明作進(jìn)一步說明,本發(fā)明的實施方式包括但不限于下列實施例。

實施例

如圖2至圖7所示,該基于ECC校驗的防止SD使用過程中flash被意外篡改的方法,包括如下步驟:

(S1)按照SD設(shè)備需求在flash內(nèi)生成bootloader分區(qū);

(S2)根據(jù)生成的bootloader分區(qū)生成對應(yīng)的ECC校驗值,并把該ECC校驗值保存于所述bootloader分區(qū)后生成的bootloaderECC校驗區(qū)中;

(S3)按照SD設(shè)備需求生成系統(tǒng)內(nèi)核和根文件系統(tǒng)分區(qū);

(S4)根據(jù)所述系統(tǒng)內(nèi)核和根文件分區(qū)生成對應(yīng)的ECC校驗值,并把該ECC校驗值保存于所述系統(tǒng)內(nèi)核和根文件分區(qū)后生成的系統(tǒng)ECC校驗區(qū)中;

為了有效區(qū)分ECC校驗區(qū)域,避免啟動過程中出現(xiàn)該部分錯誤,所述bootloader分區(qū)和所述bootloaderECC校驗區(qū)之間通過由一些特殊定義的字符構(gòu)成的第一分隔區(qū)間隔。相應(yīng)地,所述系統(tǒng)內(nèi)核和根文件系統(tǒng)分區(qū)和所述系統(tǒng)ECC校驗區(qū)之間通過由一些特殊定義的字符構(gòu)成的第二分隔區(qū)間隔。尤其是針對在flash中沒有專門設(shè)置OOB區(qū)域的SD設(shè)備,通過該分隔區(qū)的設(shè)置,可以在其flash中開辟一個獨立的區(qū)域用于存放ECC校驗值。

(S5)所述SD設(shè)備在每次啟動過程中,根據(jù)flash讀出的每256字節(jié)數(shù)據(jù)生成一個新的ECC校驗值,將其與該flash的bootloaderECC校驗區(qū)或系統(tǒng)ECC校驗區(qū)內(nèi)對應(yīng)保存的ECC校驗值進(jìn)行對比,若二者一致,則表明該256字節(jié)數(shù)據(jù)正常,否則根據(jù)ECC校驗規(guī)則對該256字節(jié)數(shù)據(jù)進(jìn)行修復(fù)。

其中,將新的ECC校驗值與對應(yīng)保存的ECC校驗值進(jìn)行對比的具體方法為將二者按位異或。若結(jié)果為0,則表示不存在錯誤,當(dāng)3個字節(jié)異或結(jié)果中存在11個bit位為1,則表示存在可糾正的一個bit錯誤,當(dāng)3個字節(jié)異或結(jié)果中只存在1個bit位為1,則表示該對應(yīng)的ECC校驗區(qū)出錯。

更具體地,所述ECC校驗規(guī)則的生成算法包含每次對256字節(jié)數(shù)據(jù)進(jìn)行行校驗生成和列校驗生成,其中,所述256字節(jié)數(shù)據(jù)排列構(gòu)成256行、8列的矩陣,該矩陣的每個元素表示一個bit位。

所述行校驗生成的過程如下:

(ra)所述矩陣中奇數(shù)行生成其對應(yīng)的校驗結(jié)果RP0,偶數(shù)行生成其對應(yīng)的校驗結(jié)果RP1;

(rb)由這256個校驗結(jié)果RP0和RP1順次相鄰地構(gòu)成128對校驗對,并且排列為偶數(shù)的檢驗對內(nèi)的RP0和RP1異或生成校驗結(jié)果RP2,排列為奇數(shù)的檢驗對內(nèi)的RP0和RP1異或生成校驗結(jié)果RP3;

(rc)由這128個校驗結(jié)果RP2和RP3順次相鄰地構(gòu)成64對校驗對,并且排列為偶數(shù)的檢驗對內(nèi)的RP2和RP3異或生成校驗結(jié)果RP4,排列為奇數(shù)的檢驗對內(nèi)的RP2和RP3異或生成校驗結(jié)果RP5;

(rd)以此方式類推,直至生成由校驗結(jié)果RP14和校驗結(jié)果RP15構(gòu)成的唯一一對校驗對。

更進(jìn)一步地,所述列校驗生成的過程如下:

(ca)所述矩陣中偶數(shù)列生成其對應(yīng)的校驗結(jié)果CP0,奇數(shù)列生成其對應(yīng)的校驗結(jié)果CP1;

(cb)由這8個校驗結(jié)果CP0和CP1順次相鄰構(gòu)成4對校驗對,并且排列為奇數(shù)的校驗對內(nèi)的CP0和CP1異或生成校驗結(jié)果CP3,排列為偶數(shù)的校驗對內(nèi)的CP0和CP1異或生成校驗結(jié)果CP2;

(cc)由該順次相鄰排列的校驗結(jié)果CP2和CP3構(gòu)成2對校驗對,依次異或生成校驗結(jié)果CP5和CP4。

更進(jìn)一步地,所述校驗結(jié)果RP0~RP15和校驗結(jié)果CP0~CP5將其校驗值保存于對應(yīng)的ECC校驗區(qū)中,每256字節(jié)數(shù)據(jù)生成的22bit位ECC校驗值存儲于3個字節(jié)中,該3個字節(jié)內(nèi)的空余2bit位用值1填充。

更具體地,所述根據(jù)ECC校驗規(guī)則對該256字節(jié)數(shù)據(jù)進(jìn)行修復(fù)具體為:

通過生成的新的ECC校驗值與保存的ECC校驗值的異或?qū)Ρ龋ㄎ话l(fā)生篡改的bit位的行列位置,并將其修復(fù)為與已保存的ECC校驗值匹配的bit位值。

通過本發(fā)明可避免SD設(shè)備因突然斷電或參數(shù)區(qū)頻繁操作等因素產(chǎn)生的電子干擾效應(yīng)影響flash內(nèi)臨近區(qū)域的穩(wěn)定性導(dǎo)致少量bit發(fā)生篡改,而引起的系統(tǒng)無法正常啟動的問題,有效地改善了SD設(shè)備的用戶使用體驗。

還需說明的是,本發(fā)明主要針對同一256字節(jié)數(shù)據(jù)區(qū)間內(nèi)出現(xiàn)1bit位的篡改問題可以修復(fù),并可以檢測出3bit位內(nèi)的篡改問題,但無法修復(fù);如出現(xiàn)bootloader分區(qū)前半部分發(fā)生的問題無法解決,也無法解決ECC校驗區(qū)內(nèi)的bit位篡改問題。

上述實施例僅為本發(fā)明的優(yōu)選實施例,并非對本發(fā)明保護(hù)范圍的限制,但凡采用本發(fā)明的設(shè)計原理,以及在此基礎(chǔ)上進(jìn)行非創(chuàng)造性勞動而作出的變化,均應(yīng)屬于本發(fā)明的保護(hù)范圍之內(nèi)。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1