本技術(shù)屬于數(shù)據(jù)處理領(lǐng)域,具體涉及一種針對eeprom的數(shù)據(jù)讀寫方法、裝置和設(shè)備。
背景技術(shù):
1、電可擦可編程只讀存儲器(electrically?erasable?programmable?read-onlymemory,eeprom)常用于存儲需要長期保留的數(shù)據(jù)。一種常見的eeprom操作方法是:每一頁存儲一個數(shù)據(jù)包,同時在該頁的前8字節(jié)設(shè)置一個標志位,用于指示該頁數(shù)據(jù)的狀態(tài)。數(shù)據(jù)的寫入操作按照順序從第一頁開始,逐頁向后排列,當最后一頁被寫滿后,再從第一頁開始循環(huán)覆蓋。讀取數(shù)據(jù)時,從頭開始逐頁讀取,直到找到所需的數(shù)據(jù)包。
2、這種實現(xiàn)方式簡單易行,但存在一些設(shè)計上的局限性。
3、局部磨損加?。?
4、數(shù)據(jù)始終從起始頁順序?qū)懭?,排滿后循環(huán)覆蓋,導(dǎo)致起始頁(如page?0)的擦寫次數(shù)遠高于后續(xù)頁,形成局部熱點區(qū)域。這種不均衡的使用方式違背了存儲介質(zhì)的均衡使用原則,從而大幅縮短了eeprom的整體使用壽命。
5、高cpu占用與系統(tǒng)延遲:?
6、每次讀取第一頁數(shù)據(jù)后,為了保持數(shù)據(jù)的連續(xù)性,需要將后續(xù)的所有頁數(shù)據(jù)逐頁前移一頁。這個過程需要頻繁占用cpu進行數(shù)據(jù)搬運,導(dǎo)致實時任務(wù)被阻塞,中斷響應(yīng)延遲增加,進而影響系統(tǒng)的時序穩(wěn)定性。
7、無效寫入次數(shù)暴增:?
8、數(shù)據(jù)遷移過程中,需要將后續(xù)所有頁的數(shù)據(jù)逐頁重寫,這產(chǎn)生了大量的冗余擦寫操作。例如,當需要遷移n頁數(shù)據(jù)時,實際擦寫次數(shù)將達到n次,這種無效寫入直接加劇了eeprom的磨損。
9、隨機存取存儲器(random?access?memory,ram)資源瓶頸:?
10、數(shù)據(jù)遷移時,需要將多個頁的數(shù)據(jù)(如128字節(jié)/頁)暫存到ram中。對于資源受限的mcu(如僅2kb?ram),單次遷移可能占用超過20%的內(nèi)存資源,這不僅會降低系統(tǒng)性能,甚至可能導(dǎo)致遷移操作失敗。
11、數(shù)據(jù)遷移風險:?
12、在數(shù)據(jù)前移的過程中,如果發(fā)生斷電或外部干擾,可能會破壞原始數(shù)據(jù)鏈的連續(xù)性,導(dǎo)致數(shù)據(jù)丟失或邏輯錯亂。此外,由于缺乏斷點續(xù)傳機制,一旦遷移過程中斷,數(shù)據(jù)恢復(fù)將變得非常困難。
13、高功耗問題:?
14、無效寫入次數(shù)的增加也帶來了功耗問題。每次寫入操作時的電流可達ma級(比讀取高10-100倍),對于電池供電的設(shè)備(如iot傳感器)而言,這將顯著縮短其續(xù)航時間。
15、寫入沖突與數(shù)據(jù)錯誤:?
16、在數(shù)據(jù)遷移過程中,如果外部嘗試寫入新數(shù)據(jù),將產(chǎn)生寫入沖突。這可能導(dǎo)致數(shù)據(jù)寫入錯誤或不成功,進一步增加數(shù)據(jù)管理的復(fù)雜性和風險。
17、綜上所述,現(xiàn)有eeprom的操作方式存在多方面的缺陷,不僅影響了存儲介質(zhì)的使用壽命和系統(tǒng)的性能穩(wěn)定性,還增加了數(shù)據(jù)管理的復(fù)雜性和風險。
技術(shù)實現(xiàn)思路
1、本技術(shù)提供了一種針對eeprom的數(shù)據(jù)讀寫方法、裝置和設(shè)備,以保證數(shù)據(jù)擦寫的均衡性,同時避免了高cpu占用、ram占用、多次重復(fù)寫flash帶來的功耗增加問題,以及避免新數(shù)據(jù)寫入與數(shù)據(jù)遷移沖撞的風險,提高eeprom的使用壽命。
2、本技術(shù)提供了一種針對eeprom的數(shù)據(jù)讀寫方法,包括:
3、接收針對eeprom的操作指令,所述操作指令指示向eeprom的數(shù)據(jù)區(qū)寫入數(shù)據(jù),或者從所述eeprom的數(shù)據(jù)區(qū)中讀取數(shù)據(jù),所述eeprom被劃分為管理區(qū)和所述數(shù)據(jù)區(qū),所述管理區(qū)用于存儲所述數(shù)據(jù)區(qū)包括的每個存儲頁的狀態(tài)信息,所述數(shù)據(jù)區(qū)包括的每個存儲頁用于存儲寫入的數(shù)據(jù),所述狀態(tài)信息用于表征所述每個存儲頁的數(shù)據(jù)讀寫情況;
4、根據(jù)所述操作指令讀取所述管理區(qū)中存儲的每個存儲頁的狀態(tài)信息;
5、根據(jù)所述狀態(tài)信息確定目標存儲頁;
6、在所述目標存儲頁中執(zhí)行所述操作指令對應(yīng)的目標操作,并根據(jù)所述目標操作更新所述管理區(qū)中所述目標存儲頁的狀態(tài)信息。
7、根據(jù)本技術(shù)提供的針對eeprom的數(shù)據(jù)讀寫方法,所述根據(jù)所述狀態(tài)信息確定目標存儲頁,包括:在所述操作指令指示向eeprom的數(shù)據(jù)區(qū)寫入數(shù)據(jù)的情況下,根據(jù)所述狀態(tài)信息確定所述數(shù)據(jù)區(qū)中多個存儲頁中的至少一個空頁,以及所述至少一個空頁的擦寫次數(shù);根據(jù)所述擦寫次數(shù)從所述至少一個空頁中確定目標存儲頁。
8、根據(jù)本技術(shù)提供的針對eeprom的數(shù)據(jù)讀寫方法,所述根據(jù)所述目標操作更新所述管理區(qū)中所述目標存儲頁的狀態(tài)信息,包括:確定所述目標操作的操作類型,所述操作類型包括分包寫入或者不分包寫入;在所述操作類型為所述分包寫入的情況下,確定所述目標操作對應(yīng)的數(shù)據(jù)包類型和所述數(shù)據(jù)包的數(shù)據(jù)包序列號,所述數(shù)據(jù)包類型包括首包、中包或尾包;在所述目標操作完成后,確定所述目標存儲頁的擦寫次數(shù)加1,得到所述目標存儲頁的當前擦寫次數(shù);根據(jù)所述操作類型、所述數(shù)據(jù)包類型、所述數(shù)據(jù)包序列號和所述當前擦寫次數(shù)更新所述目標存儲頁的狀態(tài)信息。
9、根據(jù)本技術(shù)提供的針對eeprom的數(shù)據(jù)讀寫方法,所述根據(jù)所述狀態(tài)信息確定目標存儲頁,包括:在所述操作指令指示從所述eeprom的數(shù)據(jù)區(qū)中讀取數(shù)據(jù)的情況下,確定所述操作指令的數(shù)據(jù)讀取類型,所述數(shù)據(jù)讀取類型包括分包讀取或不分包括讀??;在所述數(shù)據(jù)讀取類型為所述分包讀取的情況下,根據(jù)所述狀態(tài)信息確定所述數(shù)據(jù)區(qū)中多個存儲頁中存儲有分包數(shù)據(jù)的第一參考存儲頁和所述第一參考存儲頁的第一頁碼序號;根據(jù)所述狀態(tài)信息確定所述第一參考存儲頁中存儲的數(shù)據(jù)的第一緊急程度,以及所述第一參考存儲頁中存儲的數(shù)據(jù)是否為首包數(shù)據(jù);根據(jù)所述第一頁碼序號、所述第一緊急程度和所述第一參考存儲頁中存儲的數(shù)據(jù)是否為首包數(shù)據(jù)確定所述目標存儲頁。
10、根據(jù)本技術(shù)提供的針對eeprom的數(shù)據(jù)讀寫方法,所述根據(jù)所述狀態(tài)信息確定目標存儲頁,包括:在所述數(shù)據(jù)讀取類型為所述不分包讀取的情況下,根據(jù)所述狀態(tài)信息確定所述數(shù)據(jù)區(qū)中多個存儲頁中存儲有不分包數(shù)據(jù)的第二參考存儲頁和所述第二參考存儲頁的第二頁碼序號;根據(jù)所述狀態(tài)信息確定所述第二參考存儲頁中存儲的數(shù)據(jù)的第二緊急程度;根據(jù)所述第二參考存儲頁和所述第二緊急程度確定目標存儲頁。
11、根據(jù)本技術(shù)提供的針對eeprom的數(shù)據(jù)讀寫方法,所述在所述目標存儲頁中執(zhí)行所述操作指令對應(yīng)的目標操作,并根據(jù)所述目標操作更新所述管理區(qū)中所述目標存儲頁的狀態(tài)信息,包括:讀取所述目標存儲頁中存儲的數(shù)據(jù),并擦除所述目標存儲頁中存儲的數(shù)據(jù);更新所述目標存儲頁的狀態(tài)信息并獲取所述目標存儲頁中存儲的數(shù)據(jù)的數(shù)據(jù)包序號,更新后的狀態(tài)信息指示所述目標存儲頁為空頁;根據(jù)所述數(shù)據(jù)包序號從所述數(shù)據(jù)區(qū)中確定下一待讀取頁,并確定所述下一待讀取頁是否為尾頁;在所述下一待讀取頁不為尾頁的情況下,確定所述下一待讀取頁為所述目標存儲頁,并重復(fù)執(zhí)行上述步驟;在所述下一待讀取頁為尾頁的情況下,讀取所述下一待讀取頁中存儲的數(shù)據(jù),并擦除所述下一待讀取頁中存儲的數(shù)據(jù),以及更新所述下一待讀取頁的狀態(tài)信息,更新后的狀態(tài)信息指示所述下一待讀取頁為空頁。
12、根據(jù)本技術(shù)提供的針對eeprom的數(shù)據(jù)讀寫方法,所述管理區(qū)包括主管理區(qū)和備份管理區(qū),所述根據(jù)所述目標操作更新所述管理區(qū)中所述目標存儲頁的狀態(tài)信息,包括:在所述備份管理區(qū)中更新所述目標存儲頁的狀態(tài)信息;在確認所述目標操作后,將所述備份管理區(qū)中更新的狀態(tài)信息同步到所述主管理區(qū)中。
13、根據(jù)本技術(shù)提供的針對eeprom的數(shù)據(jù)讀寫方法,所述在所述目標存儲頁中執(zhí)行所述操作指令對應(yīng)的目標操作之后,所述方法還包括:獲取針對所述目標操作的反饋信息,所述反饋信息用于指示所述目標操作的執(zhí)行情況;在所述反饋信息指示所述目標操作執(zhí)行失敗的情況下,更新所述目標存儲頁的狀態(tài)信息,更新后的所述狀態(tài)信息指示所述目標存儲頁為壞頁;針對所述目標存儲頁執(zhí)行多次數(shù)據(jù)寫入和讀取操作,并驗證每次寫入和讀取的數(shù)據(jù)是否一致,得到多個驗證結(jié)果;若所述多個驗證結(jié)果均指示寫入和讀取的數(shù)據(jù)一致,再次更新所述目標存儲頁的狀態(tài)信息,再次更新后的所述狀態(tài)信息指示所述目標存儲頁為正常頁。
14、本技術(shù)還提供了一種針對eeprom的數(shù)據(jù)讀寫裝置,包括:
15、接收單元,用于接收針對eeprom的操作指令,所述操作指令指示向eeprom的數(shù)據(jù)區(qū)寫入數(shù)據(jù),或者從所述eeprom的數(shù)據(jù)區(qū)中讀取數(shù)據(jù),所述eeprom被劃分為管理區(qū)和所述數(shù)據(jù)區(qū),所述管理區(qū)用于存儲所述數(shù)據(jù)區(qū)包括的每個存儲頁的狀態(tài)信息,所述數(shù)據(jù)區(qū)包括的每個存儲頁用于存儲寫入的數(shù)據(jù),所述狀態(tài)信息用于表征所述每個存儲頁的數(shù)據(jù)讀寫情況;
16、讀取單元,用于根據(jù)所述操作指令讀取所述管理區(qū)中存儲的每個存儲頁的狀態(tài)信息;
17、確定單元,用于根據(jù)所述狀態(tài)信息確定目標存儲頁;
18、執(zhí)行單元,用于在所述目標存儲頁中執(zhí)行所述操作指令對應(yīng)的目標操作,并根據(jù)所述目標操作更新所述管理區(qū)中所述目標存儲頁的狀態(tài)信息。
19、本技術(shù)還提供了一種電子設(shè)備,包括存儲器、處理器及存儲在存儲器上并可在處理器上運行的計算機程序,所述處理器執(zhí)行所述計算機程序時實現(xiàn)如上述任一種針對電可擦可編程只讀存儲器eeprom的數(shù)據(jù)讀寫方法。
20、本技術(shù)還提供了一種非暫態(tài)計算機可讀存儲介質(zhì),其上存儲有計算機程序,該計算機程序被處理器執(zhí)行時實現(xiàn)如上述任一種針對電可擦可編程只讀存儲器eeprom的數(shù)據(jù)讀寫方法。
21、本技術(shù)還提供了一種計算機程序產(chǎn)品,包括計算機程序,所述計算機程序被處理器執(zhí)行時實現(xiàn)如上述任一種針對電可擦可編程只讀存儲器eeprom的數(shù)據(jù)讀寫方法。
22、本技術(shù)提供的針對eeprom的數(shù)據(jù)讀寫方法、裝置和設(shè)備,首先接收針對eeprom的操作指令,所述操作指令指示向eeprom的數(shù)據(jù)區(qū)寫入數(shù)據(jù),或者從所述eeprom的數(shù)據(jù)區(qū)中讀取數(shù)據(jù),所述eeprom被劃分為管理區(qū)和所述數(shù)據(jù)區(qū),所述管理區(qū)用于存儲所述數(shù)據(jù)區(qū)包括的每個存儲頁的狀態(tài)信息,所述數(shù)據(jù)區(qū)包括的每個存儲頁用于存儲寫入的數(shù)據(jù),然后根據(jù)所述操作指令讀取所述管理區(qū)中存儲的每個存儲頁的狀態(tài)信息,再然后根據(jù)所述狀態(tài)信息確定目標存儲頁,最后在所述目標存儲頁中執(zhí)行所述操作指令對應(yīng)的目標操作,并根據(jù)所述目標操作更新所述管理區(qū)中所述目標存儲頁的狀態(tài)信息。
23、可見,本實施例中,將存儲器分為管理區(qū)和數(shù)據(jù)區(qū),實現(xiàn)操作隔離,保證了數(shù)據(jù)安全,同時也提高了數(shù)據(jù)訪問的便捷性。在讀取數(shù)據(jù)時,無需進行數(shù)據(jù)遷移,可以減少ram開銷,cpu占用。同時減少了無效的擦寫次數(shù),降低了存儲器的磨損,延長了存儲器使用壽命。由于不需要數(shù)據(jù)遷移,因此也降低了數(shù)據(jù)擦寫次數(shù),也就降低了功耗,同時解決了原來數(shù)據(jù)遷移和數(shù)據(jù)寫入沖突導(dǎo)致數(shù)據(jù)錯誤或者不成功問題。