日韩床上生活一级视频|能看毛片的操逼网站|色悠悠网站在线观看视频|国产免费观看A淫色免费|国产av久久久久久久|免费A级视频美女网站黄|国产毛片av日韩小黄片|热久久免费国产视频|中文字幕无码色色|成人在线视频99久久久

機(jī)電之家資源網(wǎng)
單片機(jī)首頁|單片機(jī)基礎(chǔ)|單片機(jī)應(yīng)用|單片機(jī)開發(fā)|單片機(jī)文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓(xùn)信息
贊助商
MAXQ環(huán)境下EEPROM的保護(hù)措施
MAXQ環(huán)境下EEPROM的保護(hù)措施
 更新時(shí)間:2008-8-18 9:51:29  點(diǎn)擊數(shù):24
【字體: 字體顏色

                      圖2. 讀操作的流程圖

    讀操作這個(gè)最簡單的接口函數(shù),也是相當(dāng)復(fù)雜的。圖2給出了操作流程:

    檢查頁面地址和緩存地址,以檢驗(yàn)它們的有效性。如果地址無效,則就此結(jié)束操作,函數(shù)返回一個(gè)無效緩存地址或無效頁面編號錯(cuò)誤代碼。
將所選頁面讀入緩存。

    計(jì)算校驗(yàn)頁面的地址,并將相應(yīng)的校驗(yàn)頁面讀入暫存區(qū)。

    計(jì)算校驗(yàn)頁面的CRC。如果校驗(yàn)頁面的數(shù)據(jù)無效,則返回一個(gè)保護(hù)失敗錯(cuò)誤代碼。

    計(jì)算數(shù)據(jù)緩存的CRC,并將其與暫存區(qū)中對應(yīng)讀取頁面的CRC進(jìn)行比較。如果CRC匹配,則程序返回有效讀代碼;如果CRC不匹配,則程序返回?zé)o效讀代碼。無論結(jié)果怎樣,實(shí)際讀取的數(shù)據(jù)都保存在返回緩存中,以供調(diào)用讀操作的程序使用。

    寫操作

     

                          圖3. 寫操作的流程圖
 
    如上所述,寫操作并不是真正將數(shù)據(jù)寫入主存儲區(qū)。實(shí)際上,寫操作是將數(shù)據(jù)寫入4個(gè)緩存之一。在這種方式下,主存儲區(qū)內(nèi)原先的數(shù)據(jù)將一直保持到整個(gè)有效寫操作流程完成后為止。圖3的流程說明了以下幾點(diǎn):

    檢查頁面地址和緩存地址,以檢驗(yàn)其有效性。如果地址無效,操作在這里結(jié)束,函數(shù)返回一個(gè)無效緩存地址或無效頁面編號錯(cuò)誤代碼。

    讀取每個(gè)寫緩存的狀態(tài)域。如果任何緩存處于占用狀態(tài),則操作失敗并返回寫過程(write sequence)錯(cuò)誤代碼。

    4個(gè)寫緩存之一應(yīng)處于終止?fàn)顟B(tài)。如果是這樣,激活下一個(gè)緩存。數(shù)據(jù)被復(fù)制到寫緩存的數(shù)據(jù)域。頁面地址被寫入地址域。計(jì)算CRC校驗(yàn)結(jié)果并將其寫入CRC域。將狀態(tài)改為占用。將前一個(gè)緩存置為可用狀態(tài)(即更新原來的終止?fàn)顟B(tài))。

    需要注意,此時(shí)對新寫的頁面進(jìn)行讀操作,將返回頁面原來的數(shù)值。只有等提交操作完成后,才會返回新值。

    提交操作

    

                      圖4. 提交操作的流程

    提交函數(shù)不需要參數(shù)。它的工作就是如實(shí)地將數(shù)據(jù)從寫緩存?zhèn)魉偷街鞔鎯^(qū),然后將寫緩存標(biāo)記為終止?fàn)顟B(tài)。提交函數(shù)的操作流程如圖4所示:
讀取每個(gè)寫緩存的狀態(tài)域。應(yīng)該只有1個(gè)緩存標(biāo)記為占用狀態(tài)。否則,函數(shù)在此結(jié)束,并返回一個(gè)寫過程錯(cuò)誤代碼。

    對被占用的緩存進(jìn)行CRC校驗(yàn)。如果不匹配,則返回一個(gè)數(shù)據(jù)損壞錯(cuò)誤代碼。提取頁面地址,并將數(shù)據(jù)寫入主存儲區(qū)的指定頁面。 計(jì)算緩存的數(shù)據(jù)部分的CRC。該值被保存在一個(gè)臨時(shí)寄存器中。 找到對應(yīng)所選主存儲區(qū)頁面的校驗(yàn)頁面,并讀取該校驗(yàn)頁面的內(nèi)容。 用前面計(jì)算的CRC更新校驗(yàn)頁面,為校驗(yàn)頁面計(jì)算新的CRC。 將校驗(yàn)頁面數(shù)據(jù)重新寫回校驗(yàn)存儲區(qū)。 將寫緩存更新為終止?fàn)顟B(tài)。

    回退操作

    

                 圖5. 回退操作的流程圖

    如圖5所示,回退函數(shù)是最簡單的操作之一。由于主存儲區(qū)只有在完成一個(gè)提交操作后才更新數(shù)據(jù),而不是在一個(gè)寫操作之后更新的,所以回退操作只需將寫緩存置為無效狀態(tài)即可。
讀取每個(gè)寫緩存的狀態(tài)域。應(yīng)該只有一個(gè)緩存被標(biāo)記為占用。否則,函數(shù)在此結(jié)束,并返回一個(gè)寫過程錯(cuò)誤代碼。 將所選的寫緩存狀態(tài)域置為終止。

    檢查操作

    

                      圖6. 檢查操作的流程圖
 
    在任何上電情況下,都需要調(diào)用檢查函數(shù)以確保EEPROM可以接受數(shù)據(jù)。檢查函數(shù)檢驗(yàn)存儲系統(tǒng)的可用性,并報(bào)告任何發(fā)現(xiàn)的錯(cuò)誤。該函數(shù)的檢查操作如圖6所示:
讀取每個(gè)寫緩存。確認(rèn)只有一個(gè)緩存不是可用狀態(tài)。如果只有一個(gè)緩存含有未定義的狀態(tài)代碼,則返回一個(gè)寫操作中斷(interrupted write)錯(cuò)誤代碼。如果所有緩存均包含未定義的狀態(tài)代碼,則返回EEPROM未初始化(uninitialized EEPROM)錯(cuò)誤代碼。

    如果僅有一個(gè)緩存包含占用狀態(tài)代碼,計(jì)算此緩存的CRC。如果CRC不匹配,則返回一個(gè)寫操作中斷錯(cuò)誤代碼。

    檢查校驗(yàn)存儲區(qū)的每一個(gè)頁面。如果任何頁面沒有通過CRC校驗(yàn),則返回保護(hù)失敗錯(cuò)誤代碼。最后,檢查主存儲區(qū)的每一頁,并與存儲的各頁CRC進(jìn)行對比。如果有1頁未通過CRC校驗(yàn),則返回一個(gè)提交中斷(interrupted commit)錯(cuò)誤代碼。

    清理操作

    

                       圖7. 清理操作的流程

    清理函數(shù)解決EEPROM系統(tǒng)存在的任何問題。在清理操作退出時(shí),無論EEPROM子系統(tǒng)先前是何種狀態(tài),都應(yīng)該可以繼續(xù)使用了。所有未提交的寫操作將被回退,并且完成失敗的提交操作。
圖7演示了清理操作是如何工作的:

    如果檢查操作返回一個(gè)EEPROM未初始化的錯(cuò)誤代碼,則初始化EEPROM。清除所有數(shù)據(jù)頁面,并且初始化所有校驗(yàn)頁面。除最后一個(gè)寫緩存被初始化為終止?fàn)顟B(tài)外,清除其它所有寫緩存并置為可用狀態(tài)。

    如果檢查操作返回一個(gè)寫操作中斷錯(cuò)誤代碼,則找到那個(gè)不是可用狀態(tài)的寫緩存。將它的狀態(tài)改為終止?fàn)顟B(tài)。

    如果檢查操作返回一個(gè)提交中斷錯(cuò)誤代碼,則找到CRC不匹配的主頁面。計(jì)算出它的CRC并更新相關(guān)校驗(yàn)頁面。

    如果檢查操作返回保護(hù)失敗錯(cuò)誤代碼,則表示緊隨提交操作的更新校驗(yàn)頁面操作被中斷。讀出所有與錯(cuò)誤校驗(yàn)頁面相關(guān)的主存儲區(qū)頁面,并刷新校驗(yàn)頁面。

    安全性證明

    要證明系統(tǒng)的安全性,需要確定寫操作過程中數(shù)據(jù)容易損壞的時(shí)刻。(讀操作從本質(zhì)上來說是安全的。讀操作期間不會對EEPROM頁面進(jìn)行寫操作,因此數(shù)據(jù)不會被損壞。) 確定了這些易損時(shí)刻后,只需要再確定一個(gè)恢復(fù)過程。如果恢復(fù)機(jī)制涵蓋了所有可能的數(shù)據(jù)損失情況,而且如果我們假定在任何一個(gè)可能破壞EEPROM寫周期的事件之后,都將首先執(zhí)行校驗(yàn)/清理周期(例如上電),那么系統(tǒng)就是安全的。

    在大多數(shù)串行EEPROM器件中,一個(gè)寫操作首先將頁面的每位數(shù)據(jù)都置為已知值,然后將所有需要改變的位設(shè)置為需要的值。因此在掉電時(shí),中斷的寫操作極有可能破壞該頁的所有字節(jié)。通?梢酝ㄟ^向損壞頁面寫入新數(shù)據(jù),進(jìn)而從這一失效事件中恢復(fù)出來。但這會失去原來的數(shù)據(jù)。

    寫操作過程中數(shù)據(jù)容易損壞的時(shí)刻如下所述(按發(fā)生的時(shí)間順序排列):

    對數(shù)據(jù)域進(jìn)行寫操作:如果此時(shí)發(fā)生電源失效事件,檢查操作不會檢測到錯(cuò)誤。正在被寫入的寫緩存仍顯示可用狀態(tài),但可用的緩存不包含有效的CRC值。 向當(dāng)前寫緩存寫入狀態(tài)信息:這個(gè)操作將狀態(tài)域改為占用狀態(tài),設(shè)定CRC并為寫操作填入頁面地址。如果這個(gè)過程被中斷,可能發(fā)生如下情況:(1) 狀態(tài)無效,從而導(dǎo)致一個(gè)寫操作中斷錯(cuò)誤;(2) 狀態(tài)有效,但CRC錯(cuò)誤,仍會導(dǎo)致一個(gè)寫操作中斷錯(cuò)誤;(3) 狀態(tài)和CRC域有效。在最后這種情形下,系統(tǒng)有未提交處理的寫操作。可以檢測到這一狀態(tài),因?yàn)榇藭r(shí)一個(gè)緩存將處于占用狀態(tài)而另一個(gè)緩存為終止?fàn)顟B(tài)。如果子系統(tǒng)的其它部分檢查通過,則用戶代碼可通過發(fā)出提交或回退操作繼續(xù)執(zhí)行。無論發(fā)生何種情況,主存儲區(qū)和校驗(yàn)存儲區(qū)都是安全的。

    前一個(gè)緩存狀態(tài)清除為可用狀態(tài):緩存可能有損壞的狀態(tài)或CRC,而下一個(gè)緩存為占用狀態(tài)。這意味著清除該緩存的狀態(tài)時(shí)操作被中斷,這種情況下可以執(zhí)行提交或回退操作。

    在寫操作和提交操作之間:只有一個(gè)寫緩存將處于占用狀態(tài),并且通過了CRC校驗(yàn)。用戶代碼可以請求提交或回退操作。寫緩存、校驗(yàn)存儲區(qū)和主存儲區(qū)都是安全的。

    提交操作過程中數(shù)據(jù)容易損壞的時(shí)刻如下所述:

    將數(shù)據(jù)域復(fù)制到主存儲區(qū):如果寫操作被中斷,主存儲區(qū)的1個(gè)頁面數(shù)據(jù)可能被破壞。檢查函數(shù)會檢測到兩種狀態(tài):(1) 一個(gè)有效的占用寫緩存;(2) 中斷的提交操作導(dǎo)致主存儲區(qū)頁面數(shù)據(jù)損壞。寫緩存和校驗(yàn)存儲區(qū)是安全的。在這種情況下,清理操作會完成提交操作并返回一個(gè)干凈的系統(tǒng)。注意:即使寫操作已經(jīng)完成,檢查操作仍會因?yàn)樾r?yàn)存儲區(qū)的CRC與計(jì)算出的CRC不匹配而報(bào)錯(cuò)。

    更新校驗(yàn)存儲區(qū)的CRC:如果對校驗(yàn)頁面的寫操作被中斷,則整個(gè)頁面的數(shù)據(jù)都可能被破壞。這意味著主存儲區(qū)的15個(gè)頁面都對應(yīng)著無效的CRC。但是由于校驗(yàn)存儲區(qū)的每一頁都有自己的校驗(yàn)和,而且在寫操作中斷后會產(chǎn)生校驗(yàn)和錯(cuò)誤,因此檢查程序會發(fā)現(xiàn)這一點(diǎn)。在這種情況下,檢查程序會返回保護(hù)失敗。修復(fù)方法如下:首先重新計(jì)算所有受影響的15個(gè)頁面的CRC值。然后將這些值和該頁自身的有效CRC值一起寫入校驗(yàn)頁面。

    更新寫緩存的狀態(tài)信息:如果當(dāng)狀態(tài)變量從占用狀態(tài)變?yōu)榻K止?fàn)顟B(tài)時(shí),寫周期被中斷,那么整個(gè)寫緩存頁面的數(shù)據(jù)都可能被損壞。但是,校驗(yàn)存儲區(qū)和主存儲區(qū)都是安全的。檢查操作會找到數(shù)據(jù)損壞的頁面,并返回寫操作中斷錯(cuò)誤代碼。當(dāng)運(yùn)行清理程序時(shí),它將復(fù)位寫緩存子系統(tǒng),并完成提交操作。 最后,在回退操作中數(shù)據(jù)容易損壞的時(shí)刻為:

    更新寫緩存的狀態(tài):與提交周期的最終狀態(tài)類似,該操作只是簡單地將寫緩存的占用狀態(tài)復(fù)位至終止?fàn)顟B(tài)。如果它被中斷,則檢查程序會返回寫操作中斷,并且清理程序會重新初始化所有的寫緩存區(qū)域。校驗(yàn)存儲區(qū)和主存儲區(qū)仍是安全的。

    可以看出,無論電源何時(shí)掉電或處理器何時(shí)被復(fù)位,存儲子系統(tǒng)都可保持?jǐn)?shù)據(jù)的完整性。發(fā)生電源失效事件后,存儲子系統(tǒng)會返回到可進(jìn)行讀或?qū)懙臓顟B(tài)。如果一個(gè)提交操作被中斷,子系統(tǒng)會返回到可執(zhí)行提交或回退操作的狀態(tài)。

    設(shè)計(jì)起步

    MAXQ微控制器的EEPROM存儲系統(tǒng)功能完備。系統(tǒng)設(shè)計(jì)者可以根據(jù)需要來增強(qiáng)該系統(tǒng)的功能。但需要注意以下幾點(diǎn):

    C封裝程序:在多數(shù)C語言標(biāo)準(zhǔn)中,與匯編語言子程序雙向傳送數(shù)據(jù)時(shí)都有一套標(biāo)準(zhǔn)的方法。例如在IAR開發(fā)環(huán)境下,參數(shù)在低編號的累加器中傳入和傳出。由于參數(shù)已經(jīng)傳入A[0]和A[1],為這些程序建立一個(gè)C封裝器,就像寫函數(shù)原型一樣容易。在其它C環(huán)境下,參數(shù)傳遞是通過數(shù)據(jù)棧進(jìn)行的,需要一個(gè)簡單的封裝子程序。

    并發(fā)處理:首先要保證寫周期的完整性,并且提供一套能夠保證完整性的機(jī)制,對于整個(gè)平臺的成敗至關(guān)重要。但很多應(yīng)用都需要這樣一種機(jī)制,即可以讓一系列寫周期排隊(duì)并一次執(zhí)行完畢,從而保證全都執(zhí)行或全都不執(zhí)行。但本文討論的機(jī)制不能工作在這種方式下。如果一個(gè)系統(tǒng)存有跨越多個(gè)頁面的信息記錄,則可以中斷一個(gè)寫操作,這使得恢復(fù)之后的記錄涵蓋了包含部分新數(shù)據(jù)的頁面和包含部分舊數(shù)據(jù)的頁面。有一種方法可避免該問題,即在執(zhí)行提交操作之前允許多重寫操作。這種方法并不像聽上去那么簡單,因?yàn)橐粋(gè)部分提交的事務(wù),可能同時(shí)包括新紀(jì)錄片斷、舊記錄片斷和損壞的頁面。

    平均讀寫機(jī)制:平均讀寫作為閃存文件系統(tǒng)的一個(gè)特點(diǎn),是指虛擬化頁面地址,使得被頻繁寫入的頁面會出現(xiàn)在存儲器的任何物理位置。但是很難找到實(shí)現(xiàn)這一目標(biāo)的最佳方法。這是因?yàn)?最直接的解決方法(活動存儲塊的目錄處于固定的位置,并且每次寫操作后都要對它進(jìn)行更新)會導(dǎo)致存儲目錄的頁面迅速損耗。所以,就像處理數(shù)據(jù)頁面那樣,還必須虛擬化和離散化目錄本身。 其它頁面尺寸:這里給出的系統(tǒng)假定采用一個(gè)16kB、每頁32字節(jié)的存儲器件。如果所選擇的器件具有更大的頁面尺寸(64字節(jié)或128字節(jié)),這些函數(shù)仍可工作,只是會伴隨一些額外的寫入損耗。(更新128字節(jié)頁面中的32字節(jié)區(qū)段時(shí),會對整個(gè)128字節(jié)頁面執(zhí)行寫操作)。但這些函數(shù)無法對具有更小頁面尺寸的器件進(jìn)行操作?梢詷(gòu)建一個(gè)能夠在線確定EEPROM器件特性的系統(tǒng),并可根據(jù)實(shí)際特性配置系統(tǒng)的參數(shù)。

    增強(qiáng)的安全性:本系統(tǒng)對以下類型的錯(cuò)誤提供保護(hù):由于電源失效或不可預(yù)期的系統(tǒng)復(fù)位而造成的EEPROM操作中斷。但EEPROM器件偶爾也會因?yàn)槠渌虺鲥e(cuò)。例如,由于電路噪聲或致電離輻射導(dǎo)致的軟件錯(cuò)誤;蛘哂捎谝粋(gè)或多個(gè)存儲單元損耗而導(dǎo)致硬件錯(cuò)誤。

    一種解決方法是計(jì)算并維護(hù)校正子(syndrome),而不是采用簡單的CRC校驗(yàn)字。校正子和校驗(yàn)字類似,但是包含了足夠的信息以修復(fù)簡單的位錯(cuò)誤。最簡單的校正子系統(tǒng)可以用log2n + 1個(gè)校驗(yàn)位來檢驗(yàn)n個(gè)數(shù)據(jù)位。因此,對于一個(gè)32字節(jié)(256位)的頁面來說,一個(gè)僅包含9位的校正子就可以修正任何1位錯(cuò)誤。對數(shù)據(jù)完整性的要求更加嚴(yán)格時(shí),可以采用更加復(fù)雜的系統(tǒng)來解決類似問題。

    結(jié)語

    外部串行EEPROM為微控制器環(huán)境下存儲非易失數(shù)據(jù)提供了一種可靠的方法。利用本文提到的技術(shù),即使面臨寫操作中斷的情況,串行EEPROM依然能夠可靠地工作。在任何對數(shù)據(jù)完整性要求較高的應(yīng)用中,設(shè)計(jì)者都可以考慮這些技術(shù)。
 
    (來源:Maxim公司)

  • 上一篇: 內(nèi)容可尋址存儲器MCM69C232及其應(yīng)用
  • 下一篇: 小常識:印制電路板設(shè)計(jì)原則和抗干擾措施
  • 發(fā)表評論   告訴好友   打印此文  收藏此頁  關(guān)閉窗口  返回頂部
    熱點(diǎn)文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機(jī)電之家 | 會員助手 | 免費(fèi)鏈接

    點(diǎn)擊這里給我發(fā)消息66821730(技術(shù)支持)點(diǎn)擊這里給我發(fā)消息66821730(廣告投放) 點(diǎn)擊這里給我發(fā)消息41031197(編輯) 點(diǎn)擊這里給我發(fā)消息58733127(審核)
    本站提供的機(jī)電設(shè)備,機(jī)電供求等信息由機(jī)電企業(yè)自行提供,該企業(yè)負(fù)責(zé)信息內(nèi)容的真實(shí)性、準(zhǔn)確性和合法性。
    機(jī)電之家對此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請聯(lián)系機(jī)電之家,機(jī)電之家將及時(shí)作出處理。
    Copyright 2007 機(jī)電之家 Inc All Rights Reserved.機(jī)電之家-由機(jī)電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機(jī)電一體化學(xué)會
    中國行業(yè)電子商務(wù)100強(qiáng)網(wǎng)站

    網(wǎng)站經(jīng)營許可證:浙B2-20080178-1