MAXQ環(huán)境下EEPROM的保護(hù)措施-技術(shù)方案_第1頁
MAXQ環(huán)境下EEPROM的保護(hù)措施-技術(shù)方案_第2頁
MAXQ環(huán)境下EEPROM的保護(hù)措施-技術(shù)方案_第3頁
MAXQ環(huán)境下EEPROM的保護(hù)措施-技術(shù)方案_第4頁
MAXQ環(huán)境下EEPROM的保護(hù)措施-技術(shù)方案_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

精品文檔-下載后可編輯MAXQ環(huán)境下EEPROM的保護(hù)措施-技術(shù)方案在嵌入式微控制器應(yīng)用中,通常都要用到非易失性存儲器。無論是掉電時維持需要保存的設(shè)置,還是存儲公司的重要記錄,可靠的非易失性存儲器都是現(xiàn)代微控制器領(lǐng)域的一個基本單元。非易失性存儲常常采用外部串行存儲器實現(xiàn)。多年以來,該領(lǐng)域用到了數(shù)十億顆類似存儲器件,它們的可靠性得到了的廣泛認(rèn)可。目前,存儲器可以做到幾百字節(jié)到1兆字節(jié)甚至更大的容量,在每一個需要保持設(shè)置的設(shè)備中,都能找到這樣一個緊湊、廉價的器件。包括EEPROM、閃存和旋轉(zhuǎn)式存儲器在內(nèi),所有類型的非易失性存儲器都面臨一個共同的問題:寫周期被中斷時,數(shù)據(jù)會丟失。一旦在寫周期執(zhí)行過程中掉電,那么即使再恢復(fù)電源,也很難修復(fù)損壞的數(shù)據(jù)。本文提出了一種基于事務(wù)的提交-回退機(jī)制,用于保護(hù)一個外部串行EEPROM存儲器件的內(nèi)容。這些措施同樣適用于大多數(shù)MAXQ微控制器的內(nèi)置EEPROM。可以本應(yīng)用的代碼文件(ZIP,20.5kb)。

I2CEEPROM的特點(diǎn)串行存儲器件有多種接口,但常用的接口是I2C接口。這種總線接口有很多優(yōu)點(diǎn):高度標(biāo)準(zhǔn)化的接口;控制器和存儲器之間只需兩條線;而且具有靈活的時序要求,可以由軟件驅(qū)動。一個I2C主機(jī)可以驅(qū)動很多I2C從機(jī),從而減少了主機(jī)的引腳數(shù)。在所有EEPROM器件中,寫周期都要比讀周期長的多。因為在寫周期過程中,電荷需要借助隧道效應(yīng)并通過絕緣層進(jìn)行轉(zhuǎn)移,而這個過程很費(fèi)時間。雖然增加電壓可以加快這個過程,但是過高的電壓會導(dǎo)致絕緣層的介質(zhì)擊穿,從而損壞器件。典型的EEPROM器件寫周期持續(xù)10毫秒左右;而讀周期通常需要幾百個納秒。

為了顯著縮短寫周期的時間,許多I2CEEPROM器件采用頁面模式。該模式允許將多個字節(jié)傳送到緩存中,然后將數(shù)據(jù)性寫入存儲區(qū)。I2C存儲器件的典型頁面尺寸為32字節(jié)。因此,可以在一個寫周期內(nèi)向EEPROM填入32個字節(jié)。

這一點(diǎn)非常重要,因為串行EEPROM器件都具有特定的耐久度:即每個頁面所能承受的寫周期次數(shù)上限。典型的寫周期次數(shù)從10,000到1,000,000次。然而,即使存儲器件能夠承受1百萬次寫周期,軟件也會很快將其損耗殆盡。軟件每秒僅執(zhí)行100次寫周期,那么不到3個小時就會耗盡器件的寫周期次數(shù)。

考慮到這些基本的EEPROM特性,設(shè)計者為一個嵌入式處理器設(shè)計可靠的非易失存儲系統(tǒng)時,需切記以下幾點(diǎn):

不要在同一頁面上反復(fù)執(zhí)行寫操作。尤其是不要將某個頁面設(shè)置成寫入任何其它頁面時都要更新的“目錄”。如果在寫周期過程中電源被中斷,必須提供以下機(jī)制:(1)檢測被中斷的寫操作;(2)完成被中斷的操作;(3)或者將事件回退至寫操作之前的狀態(tài)。必須通過某些數(shù)據(jù)校驗機(jī)制(校驗和、CRC或消息摘要)來保證數(shù)據(jù)的完整性。

設(shè)計目標(biāo)雖然上面提到的EEPROM問題可通過多種非易失文件系統(tǒng)加以解決,但這樣的文件機(jī)制對于小型嵌入式微控制器來說負(fù)擔(dān)過重。很多文件系統(tǒng)需要更多的RAM,遠(yuǎn)遠(yuǎn)超出了小型微控制器所能提供的容量,而且對于多數(shù)應(yīng)用,也不需要一個完整的文件系統(tǒng)??紤]到這一點(diǎn),下面列出了EEPROM數(shù)據(jù)保護(hù)機(jī)制的設(shè)計目標(biāo):

精簡:保護(hù)機(jī)制用于存儲校驗數(shù)據(jù)的空間不應(yīng)超過EEPROM的10%,它應(yīng)該只需要少量的計算開銷。塊大小:被保護(hù)的塊大小,應(yīng)該和EEPROM的寫操作頁面大小一樣。由于EEPROM器件的頁面大小通常是2的偶數(shù)次冪,因此與每個塊保留1或2個字節(jié)的做法相比,相同的尺寸大小更便于軟件編碼。耐久性:每個保護(hù)周期不要對同一頁面進(jìn)行寫操作。可靠性:每次掉電情況下,數(shù)據(jù)都應(yīng)是可恢復(fù)的。這里提到的保護(hù)機(jī)制有6個接口函數(shù):讀、寫、提交、回退、檢查和清理。

讀函數(shù)接收一個塊編號和一個指向32字節(jié)緩存的指針。如果緩存地址和塊編號處于有效范圍內(nèi),程序就會將指定的塊數(shù)據(jù)讀入緩存,并校驗數(shù)據(jù)的有效性。它會返回如下狀態(tài):有效讀(validread)、無效讀(invalidread)、無效緩存地址(invalidbufferaddress)、無效頁面編號(invalidpagenumber)或保護(hù)失敗(protectionfailure)。

寫函數(shù)接收一個塊編號和一個指向填好數(shù)據(jù)的32字節(jié)緩存的指針。如果緩存地址和塊編號處于有效范圍內(nèi),程序就會將數(shù)據(jù)寫入非易失性緩存,并標(biāo)記緩存狀態(tài)以準(zhǔn)備提交。

提交和回退函數(shù),是可以在寫操作之后執(zhí)行的互補(bǔ)型操作。提交函數(shù)將近被寫入的緩存數(shù)據(jù)復(fù)制到對應(yīng)的存儲區(qū)終位置,并為下一個待寫入的數(shù)據(jù)塊準(zhǔn)備好緩存結(jié)構(gòu)。回退函數(shù)實際上就是一個“取消”操作。它消除近寫操作產(chǎn)生的效果,并為下一個寫操作準(zhǔn)備好緩存子系統(tǒng)。檢查函數(shù)讀取存儲器件的每個數(shù)據(jù)塊,并檢查存儲數(shù)據(jù)的有效性。該函數(shù)還檢查緩存子系統(tǒng),以確保沒有未執(zhí)行的寫操作。任何無效塊或未執(zhí)行的寫操作都會使檢查函數(shù)返回一個錯誤狀態(tài)。

清理函數(shù)修復(fù)一個數(shù)據(jù)損壞的EEPROM。實際上,它將試圖找出發(fā)生的錯誤,并采取相應(yīng)的解決措施。

關(guān)于這些函數(shù)的更多細(xì)節(jié),參見下面的操作詳解。

圖1.EEPROM存儲器的結(jié)構(gòu)。存儲器被劃分為3個區(qū)域:主存儲區(qū),包含實際用戶數(shù)據(jù);校驗存儲區(qū),包含主存儲區(qū)每1頁的CRC;緩存,包含存儲臨時寫入數(shù)據(jù)的四個緩存。EEPROM結(jié)構(gòu)參考上面圖1給出的EEPROM結(jié)構(gòu)。EEPROM包含三個主要區(qū)域:主存儲區(qū):EEPROM的區(qū)域用于存儲用戶數(shù)據(jù)。在一個16kB器件內(nèi),包括512頁、每頁32字節(jié)的存儲空間。在這樣的器件中,開始的473個頁面專門用來存儲數(shù)據(jù)。校驗存儲區(qū):EEPROM的第二個部分,用于校驗主存儲區(qū)每個頁面的數(shù)據(jù)。校驗存儲區(qū)的每1頁都包含15個16位的CRC值。每1頁的1個CRC用于校驗本頁數(shù)據(jù)。校驗存儲區(qū)占用31頁(從473到503頁)。緩存:EEPROM的部分,包含由8個頁面構(gòu)成的4個寫緩存。每個緩存包含4個域:數(shù)據(jù)域,它包含32字節(jié)數(shù)據(jù),執(zhí)行下一個提交命令時,數(shù)據(jù)將被寫入主存儲區(qū);地址域,它表示緩存數(shù)據(jù)要寫入的頁面地址;狀態(tài)域,它表示緩存的狀態(tài)(包括可用(available)、占用(occupied)和終止(expired)狀態(tài));16位CRC域,用來校驗整個寫緩存。緩存結(jié)構(gòu)見圖1所示。這種EEPROM結(jié)構(gòu)可以實現(xiàn)主要的設(shè)計目標(biāo)。首先,由于主存儲區(qū)每1頁數(shù)據(jù)的校驗結(jié)果都存儲在另一個位置,所以頁面的所有位都用于存儲用戶數(shù)據(jù)。其次,由于主存儲區(qū)的每1頁都通過校驗存儲區(qū)的特定字來校驗,因此校驗存儲區(qū)不會有單點(diǎn)錯誤,并且也不會在每個寫周期中都去更新整個校驗存儲區(qū)的同一頁面。,使用4個寫緩存分散了寫周期帶來的損耗。操作詳解對于一個不帶保護(hù)功能的EEPROM,具體操作非常簡單。一個讀周期簡單地將字節(jié)從所選擇的地址傳送給主機(jī);一個寫周期將字節(jié)從主機(jī)寫入EEPROM,并等待操作完成(大多數(shù)器件需要幾個毫秒的時間)。然而,在一個提供保護(hù)的EEPROM環(huán)境下,讀和寫操作就比較復(fù)雜了。在以下各節(jié)中,對每個操作進(jìn)行了分解,以便了解函數(shù)被調(diào)用時到底是如何操作的。讀操作

圖2.讀操作的流程圖讀操作這個簡單的接口函數(shù),也是相當(dāng)復(fù)雜的。圖2給出了操作流程:檢查頁面地址和緩存地址,以檢驗它們的有效性。如果地址無效,則就此結(jié)束操作,函數(shù)返回一個無效緩存地址或無效頁面編號錯誤代碼。將所選頁面讀入緩存。計算校驗頁面的地址,并將相應(yīng)的校驗頁面讀入暫存區(qū)。計算校驗頁面的CRC。如果校驗頁面的數(shù)據(jù)無效,則返回一個保護(hù)失敗錯誤代碼。計算數(shù)據(jù)緩存的CRC,并將其與暫存區(qū)中對應(yīng)讀取頁面的CRC進(jìn)行比較。如果CRC匹配,則程序返回有效讀代碼;如果CRC不匹配,則程序返回?zé)o效讀代碼。無論結(jié)果怎樣,實際讀取的數(shù)據(jù)都保存在返回緩存中,以供調(diào)用讀操作的程序使用。寫操作

圖3.寫操作的流程圖如上所述,寫操作并不是真正將數(shù)據(jù)寫入主存儲區(qū)。實際上,寫操作是將數(shù)據(jù)寫入4個緩存之一。在這種方式下,主存儲區(qū)內(nèi)原先的數(shù)據(jù)將一直保持到整個有效寫操作流程完成后為止。圖3的流程說明了以下幾點(diǎn):檢查頁面地址和緩存地址,以檢驗其有效性。如果地址無效,操作在這里結(jié)束,函數(shù)返回一個無效緩存地址或無效頁面編號錯誤代碼。讀取每個寫緩存的狀態(tài)域。如果任何緩存處于占用狀態(tài),則操作失敗并返回寫過程(writesequence)錯誤代碼。4個寫緩存之一應(yīng)處于終止?fàn)顟B(tài)。如果是這樣,激活下一個緩存。數(shù)據(jù)被復(fù)制到寫緩存的數(shù)據(jù)域。頁面地址被寫入地址域。計算CRC校驗結(jié)果并將其寫入CRC域。將狀態(tài)改為占用。將前一個緩存置為可用狀態(tài)(即更新原來的終止?fàn)顟B(tài))。需要注意,此時對新寫的頁面進(jìn)行讀操作,將返回頁面原來的數(shù)值。只有等提交操作完成后,才會返回新值。

提交操作

圖4.提交操作的流程提交函數(shù)不需要參數(shù)。它的工作就是如實地將數(shù)據(jù)從寫緩存?zhèn)魉偷街鞔鎯^(qū),然后將寫緩存標(biāo)記為終止?fàn)顟B(tài)。提交函數(shù)的操作流程如圖4所示:讀取每個寫緩存的狀態(tài)域。應(yīng)該只有1個緩存標(biāo)記為占用狀態(tài)。否則,函數(shù)在此結(jié)束,并返回一個寫過程錯誤代碼。對被占用的緩存進(jìn)行CRC校驗。如果不匹配,則返回一個數(shù)據(jù)損壞錯誤代碼。提取頁面地址,并將數(shù)據(jù)寫入主存儲區(qū)的指定頁面。計算緩存的數(shù)據(jù)部分的CRC。該值被保存在一個臨時寄存器中。找到對應(yīng)所選主存儲區(qū)頁面的校驗頁面,并讀取該校驗頁面的內(nèi)容。用前面計算的CRC更新校驗頁面,為校驗頁面計算新的CRC。將校驗頁面數(shù)據(jù)重新寫回校驗存儲區(qū)。將寫緩存更新為終止?fàn)顟B(tài)。回退操作

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

圖6.檢查操作的流程圖在任何上電情況下,都需要調(diào)用檢查函數(shù)以確保EEPROM可以接受數(shù)據(jù)。檢查函數(shù)檢驗存儲系統(tǒng)的可用性,并任何發(fā)現(xiàn)的錯誤。該函數(shù)的檢查操作如圖6所示:讀取每個寫緩存。確認(rèn)只有一個緩存不是可用狀態(tài)。如果只有一個緩存含有未定義的狀態(tài)代碼,則返回一個寫操作中斷(interruptedwrite)錯誤代碼。如果所有緩存均包含未定義的狀態(tài)代碼,則返回EEPROM未初始化(uninitializedEEPROM)錯誤代碼。如果僅有一個緩存包含占用狀態(tài)代碼,計算此緩存的CRC。如果CRC不匹配,則返回一個寫操作中斷錯誤代碼。檢查校驗存儲區(qū)的每一個頁面。如果任何頁面沒有通過CRC校驗,則返回保護(hù)失敗錯誤代碼。,檢查主存儲區(qū)的每一頁,并與存儲的各頁CRC進(jìn)行對比。如果有1頁未通過CRC校驗,則返回一個提交中斷(interruptedcommit)錯誤代碼。清理操作

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

如果檢查操作返回一個EEPROM未初始化的錯誤代碼,則初始化EEPROM。清除所有數(shù)據(jù)頁面,并且初始化所有校驗頁面。除一個寫緩存被初始化為終止?fàn)顟B(tài)外,清除其它所有寫緩存并置為可用狀態(tài)。如果檢查操作返回一個寫操作中斷錯誤代碼,則找到那個不是可用狀態(tài)的寫緩存。將它的狀態(tài)改為終止?fàn)顟B(tài)。如果檢查操作返回一個提交中斷錯誤代碼,則找到CRC不匹配的主頁面。計算出它的CRC并更新相關(guān)校驗頁面。如果檢查操作返回保護(hù)失敗錯誤代碼,則表示緊隨提交操作的更新校驗頁面操作被中斷。讀出所有與錯誤校驗頁面相關(guān)的主存儲區(qū)頁面,并刷新校驗頁面。

安全性證明要證明系統(tǒng)的安全性,需要確定寫操作過程中數(shù)據(jù)容易損壞的時刻。(讀操作從本質(zhì)上來說是安全的。讀操作期間不會對EEPROM頁面進(jìn)行寫操作,因此數(shù)據(jù)不會被損壞。)確定了這些易損時刻后,只需要再確定一個恢復(fù)過程。如果恢復(fù)機(jī)制涵蓋了所有可能的數(shù)據(jù)損失情況,而且如果我們假定在任何一個可能破壞EEPROM寫周期的事件之后,都將首先執(zhí)行校驗/清理周期(例如上電),那么系統(tǒng)就是安全的。在大多數(shù)串行EEPROM器件中,一個寫操作首先將頁面的每位數(shù)據(jù)都置為已知值,然后將所有需要改變的位設(shè)置為需要的值。因此在掉電時,中斷的寫操作極有可能破壞該頁的所有字節(jié)。通??梢酝ㄟ^向損壞頁面寫入新數(shù)據(jù),進(jìn)而從這一失效事件中恢復(fù)出來。但這會失去原來的數(shù)據(jù)。

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

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

將數(shù)據(jù)域復(fù)制到主存儲區(qū):如果寫操作被中斷,主存儲區(qū)的1個頁面數(shù)據(jù)可能被破壞。檢查函數(shù)會檢測到兩種狀態(tài):(1)一個有效的占用寫緩存;(2)中斷的提交操作導(dǎo)致主存儲區(qū)頁面數(shù)據(jù)損壞。寫緩存和校驗存儲區(qū)是安全的。在這種情況下,清理操作會完成提交操作并返回一個干凈的系統(tǒng)。注意:即使寫操作已經(jīng)完成,檢查操作仍會因為校驗存儲區(qū)的CRC與計算出的CRC不匹配而報錯。更新校驗存儲區(qū)的CRC:如果對校驗頁面的寫操作被中斷,則整個頁面的數(shù)據(jù)都可能被破壞。這意味著主存儲區(qū)的15個頁面都對應(yīng)著無效的CRC。但是由于校驗存儲區(qū)的每一頁都有自己的校驗和,而且在寫操作中斷后會產(chǎn)生校驗和錯誤,因此檢查程序會發(fā)現(xiàn)這一點(diǎn)。在這種情況下,檢查程序會返回保護(hù)失敗。修復(fù)方法如下:首先重新計算所有受影響的15個頁面的CRC值。然后將這些值和該頁自身的有效CRC值一起寫入校驗頁面。更新寫緩存的狀態(tài)信息:如果當(dāng)狀態(tài)變量從占用狀態(tài)變?yōu)榻K止?fàn)顟B(tài)時,寫周期被中斷,那么整個寫緩存頁面的數(shù)據(jù)都可能被損壞。但是,校驗存儲區(qū)和主存儲區(qū)都是安全的。檢查操作會找到數(shù)據(jù)損壞的頁面,并返回寫操作中斷錯誤代碼。當(dāng)運(yùn)行清理程序時,它將復(fù)位寫緩存子系統(tǒng),并完成提交操作。,在回退操作中數(shù)據(jù)容易損壞的時刻為:

更新寫緩存的狀態(tài):與提交周期的終狀態(tài)類似,該操作只是簡單地將寫緩存的占用狀態(tài)復(fù)位至終止?fàn)顟B(tài)。如果它被中斷,則檢查程序會返回寫操作中斷,并且清理程序會重新初始化所有的寫緩存區(qū)域。校驗存儲區(qū)和主存儲區(qū)仍是安全的。可以看出,無論電源何時掉電或處理器何時被復(fù)位,存儲子系統(tǒng)都可保持?jǐn)?shù)據(jù)的完整性。發(fā)生電源失效事件后,存儲子系統(tǒng)會返回到可進(jìn)行讀或?qū)懙臓顟B(tài)。如果一個提交操作被中斷,子系統(tǒng)會返回到可執(zhí)行提交或回退操作的狀態(tài)。

設(shè)計起步MAXQ微控制器的EEPROM存儲系統(tǒng)功能完備。系統(tǒng)設(shè)計者可以根據(jù)需要來增強(qiáng)該系統(tǒng)的功能。但需要注意以下幾點(diǎn):C封裝程序:在多數(shù)C語言標(biāo)準(zhǔn)中,與匯編語言子程序雙向傳送數(shù)據(jù)時都有一套標(biāo)準(zhǔn)的方法。例如在IAR開發(fā)環(huán)境下,參數(shù)在低編號的累加器中傳入和傳出。由于參數(shù)已經(jīng)傳入A[0]和A[1],為這些程序建立一個C封裝器,就像寫函數(shù)原型一樣容易。在其它C環(huán)境下,參數(shù)傳遞是通過數(shù)據(jù)棧進(jìn)行的,需要一個簡單的封裝子程序。并發(fā)處理:首先要保證寫周期的完整性,并且提供一套能夠保證完整性的機(jī)制,對于整個平臺的成敗至關(guān)重要。但很多應(yīng)用都需要這樣一種機(jī)制,即可以讓一系列寫周期排隊并執(zhí)行完畢,從而保證全都執(zhí)行或全都不執(zhí)行。但本文討論的機(jī)制不能工作在這種方式下。如果一個系統(tǒng)存有跨越多個頁面的信息記錄,則可以中斷一個寫操作,這使得恢復(fù)之后的記錄涵蓋了包含部分新數(shù)據(jù)的頁面和包含部分舊數(shù)據(jù)的頁面。有一種方法可避免該問題,即在執(zhí)行提交操作之前允許多重寫操作。這種方法并不像聽上去那么簡單,因為一個部分提交的事務(wù),可能同時包括新紀(jì)錄片斷、舊記錄片斷和損壞的頁面。平均讀

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論