本技術(shù)涉及數(shù)據(jù)存儲,特別是一種數(shù)據(jù)存儲方法、系統(tǒng)、車輛以及電子設備。
背景技術(shù):
1、當前汽車控制器的數(shù)據(jù)存儲方案通常分為兩類,第一類方案是使用國內(nèi)外各autosar(automotive?open?system?architecture,汽車開放系統(tǒng)架構(gòu))供應商提供的autosar的nvm(non-volatile?memory,非易失性存儲器)模塊,通過將存儲器劃分為多個存儲區(qū),并額外花費一個或幾個存儲區(qū)對所有存儲區(qū)進行管理,并將實際的存儲需求抽象為有限的幾類,對抽象出的需求進行實現(xiàn)。對于頻繁存儲數(shù)據(jù)的需求,通常使用多個存儲區(qū)存儲目標數(shù)據(jù),通過管理存儲區(qū)指向存儲最新數(shù)據(jù)的存儲區(qū),每次存儲時覆蓋存儲“最舊”數(shù)據(jù)的存儲區(qū),并更新管理存儲區(qū)的指向目標,第二類方案是在存儲數(shù)據(jù)塊的起始或末尾額外花費幾個字節(jié)存儲數(shù)據(jù)的管理信息,例如首次運行標志、數(shù)據(jù)校驗值等。對于頻繁存儲數(shù)據(jù)的需求,通常使用多個數(shù)據(jù)塊存儲目標數(shù)據(jù),通過一個存儲于固定地址的偏移地址指向最新數(shù)據(jù)塊,每次存儲時覆蓋“最舊”的數(shù)據(jù)塊,并將更新偏移地址。
2、然而,第一類方案運算量較大、成本高、存儲效率低下,第二類方案支持的最大存儲次數(shù)受存儲偏移地址的flash存儲器壽命限制,對于頻繁存儲的需求,可能無法滿足產(chǎn)品設計生命周期。
3、因此,亟需一種新的數(shù)據(jù)存儲方法,以滿足數(shù)據(jù)頻繁存儲的需求。
技術(shù)實現(xiàn)思路
1、鑒于上述問題,本技術(shù)實施例提供了一種數(shù)據(jù)存儲方法、系統(tǒng)、車輛以及電子設備,以便克服上述問題或者至少部分地解決上述問題。
2、本技術(shù)實施例第一方面,提供了一種數(shù)據(jù)存儲方法,所述方法包括:
3、接收車輛控制器發(fā)送的數(shù)據(jù)寫入指令;
4、響應于所述數(shù)據(jù)寫入指令,順次對預設數(shù)據(jù)存儲區(qū)塊中的多個數(shù)據(jù)存儲區(qū)進行標志位狀態(tài)檢索;
5、根據(jù)檢索結(jié)果,判斷所述預設數(shù)據(jù)存儲數(shù)據(jù)塊中的各個數(shù)據(jù)存儲區(qū)各自對應的標志位狀態(tài)是否全部為第一標志位狀態(tài);
6、若所述各個數(shù)據(jù)存儲區(qū)各自對應的標志位狀態(tài)全部為第一標志位狀態(tài),則將所述各個數(shù)據(jù)存儲區(qū)各自對應的標志位狀態(tài)進行擦寫,以使各個數(shù)據(jù)存儲區(qū)各自對應的標志位狀態(tài)全部更新為第二標志位狀態(tài);
7、若所述各個數(shù)據(jù)存儲區(qū)各自對應的標志位狀態(tài)中存在第二標志位狀態(tài),則保留所述各個數(shù)據(jù)存儲區(qū)各自對應的當前的標志位狀態(tài)。
8、可選地,所述方法還包括:
9、基于所述各個數(shù)據(jù)存儲區(qū)各自對應的標志位狀態(tài),確定所述數(shù)據(jù)寫入指令對應的目標數(shù)據(jù)存儲區(qū);
10、基于所述目標數(shù)據(jù)存儲區(qū),在所述目標數(shù)據(jù)存儲區(qū)內(nèi)進行數(shù)據(jù)的寫入,并在數(shù)據(jù)寫入后,將所述目標數(shù)據(jù)存儲區(qū)的標志位狀態(tài)由所述第二標志位狀態(tài)更新為所述第一標志位狀態(tài)。
11、可選地,所述響應于所述數(shù)據(jù)寫入指令,順次對預設數(shù)據(jù)存儲區(qū)塊中的多個數(shù)據(jù)存儲區(qū)進行標志位狀態(tài)檢索,包括:
12、獲取針對所述預設數(shù)據(jù)存儲區(qū)塊預先定義的起始位和終止位;
13、按照從所述起始位到所述終止位的方向,順次對所述預設數(shù)據(jù)存儲區(qū)塊中的多個數(shù)據(jù)存儲區(qū)進行檢索;
14、基于檢索的每個所述數(shù)據(jù)存儲區(qū),讀取其對應的標志位狀態(tài);
15、所述基于所述各個數(shù)據(jù)存儲區(qū)各自對應的標志位狀態(tài),確定所述數(shù)據(jù)寫入指令對應的目標數(shù)據(jù)存儲區(qū),包括:
16、若讀取到的標志位狀態(tài)為所述第一標志位狀態(tài),則繼續(xù)檢索下一個數(shù)據(jù)存儲區(qū),直到讀取到所述第二標志位狀態(tài),則將該第二標志位狀態(tài)對應的數(shù)據(jù)存儲區(qū)確定為所述目標數(shù)據(jù)存儲區(qū)。
17、可選地,所述方法還包括:
18、接收車輛控制器發(fā)送的數(shù)據(jù)讀取指令;
19、響應于所述數(shù)據(jù)讀取指令,順次對預設數(shù)據(jù)存儲區(qū)塊中的多個數(shù)據(jù)存儲區(qū)進行標志位狀態(tài)檢索;
20、根據(jù)檢索結(jié)果,確定目標數(shù)據(jù)存儲區(qū);
21、基于所述目標數(shù)據(jù)存儲區(qū),在所述目標數(shù)據(jù)存儲區(qū)內(nèi)進行數(shù)據(jù)的讀取。
22、可選地,所述響應于所述數(shù)據(jù)讀取指令,順次對預設數(shù)據(jù)存儲區(qū)塊中的多個數(shù)據(jù)存儲區(qū)進行標志位狀態(tài)檢索,包括:
23、獲取針對所述預設數(shù)據(jù)存儲區(qū)塊預先定義的起始位和終止位;
24、按照從所述起始位到所述終止位的方向,順次對所述預設數(shù)據(jù)存儲區(qū)塊中的多個數(shù)據(jù)存儲區(qū)進行標志位狀態(tài)檢索;
25、所述根據(jù)檢索結(jié)果,確定所述目標數(shù)據(jù)存儲區(qū),包括:
26、基于檢索的每個所述數(shù)據(jù)存儲區(qū),讀取其對應的標志位狀態(tài);
27、若讀取到的標志位狀態(tài)為所述第一標志位狀態(tài),則繼續(xù)檢索下一個數(shù)據(jù)存儲區(qū),直到讀取到的標志位狀態(tài)為所述第二標志位狀態(tài),則將所述第二標志位狀態(tài)對應的數(shù)據(jù)存儲區(qū)的前一個數(shù)據(jù)存儲區(qū)確定為所述目標數(shù)據(jù)存儲區(qū);
28、若讀取到的標志位狀態(tài)全部為所述第一標志位狀態(tài),則將最后檢索的數(shù)據(jù)存儲區(qū)確定為所述目標數(shù)據(jù)存儲區(qū)。
29、可選地,為所述預設數(shù)據(jù)存儲區(qū)塊預先配置標志位的步驟包括:
30、將所述預設數(shù)據(jù)存儲區(qū)塊按照預設存儲空間劃分為多個所述數(shù)據(jù)存儲區(qū);
31、將所述標志位中的多個比特位與多個所述數(shù)據(jù)存儲區(qū)進行一一映射,得到所述標志位與所述預設數(shù)據(jù)存儲區(qū)塊的配置關系,其中每一個比特位均關聯(lián)標志位狀態(tài)。
32、可選地,所述標志位的存儲空間按照字節(jié)為單位進行確定,步驟包括:
33、根據(jù)所述數(shù)據(jù)存儲區(qū)的數(shù)量,確定所述標志位中需配置的所述比特位的數(shù)量;
34、根據(jù)所述比特位的數(shù)量,確定所述標志位的存儲空間需配置的字節(jié)數(shù)量。
35、本技術(shù)實施例第二方面,提供了一種數(shù)據(jù)存儲系統(tǒng),所述系統(tǒng)包括:
36、接收模塊,用于接收車輛控制器發(fā)送的數(shù)據(jù)寫入指令;
37、檢索模塊,用于響應于所述數(shù)據(jù)寫入指令,順次對預設數(shù)據(jù)存儲區(qū)塊中的多個數(shù)據(jù)存儲區(qū)進行標志位狀態(tài)檢索;
38、判斷模塊,用于根據(jù)檢索結(jié)果,判斷所述預設數(shù)據(jù)存儲數(shù)據(jù)塊中的各個數(shù)據(jù)存儲區(qū)各自對應的標志位狀態(tài)是否全部為第一標志位狀態(tài);
39、若所述各個數(shù)據(jù)存儲區(qū)各自對應的標志位狀態(tài)全部為第一標志位狀態(tài),則將所述各個數(shù)據(jù)存儲區(qū)各自對應的標志位狀態(tài)進行擦寫,以使各個數(shù)據(jù)存儲區(qū)各自對應的標志位狀態(tài)全部更新為第二標志位狀態(tài);
40、若所述各個數(shù)據(jù)存儲區(qū)各自對應的標志位狀態(tài)中存在第二標志位狀態(tài),則保留所述各個數(shù)據(jù)存儲區(qū)各自對應的當前的標志位狀態(tài)。
41、可選地,所述系統(tǒng)還包括:
42、第一確定子模塊,用于基于所述各個數(shù)據(jù)存儲區(qū)各自對應的標志位狀態(tài),確定所述數(shù)據(jù)寫入指令對應的目標數(shù)據(jù)存儲區(qū);
43、數(shù)據(jù)寫入子模塊,用于基于所述目標數(shù)據(jù)存儲區(qū),在所述目標數(shù)據(jù)存儲區(qū)內(nèi)進行數(shù)據(jù)的寫入,并在數(shù)據(jù)寫入后,將所述目標數(shù)據(jù)存儲區(qū)的標志位狀態(tài)由所述第二標志位狀態(tài)更新為所述第一標志位狀態(tài)。
44、可選地,所述響應于所述數(shù)據(jù)寫入指令,順次對預設數(shù)據(jù)存儲區(qū)塊中的多個數(shù)據(jù)存儲區(qū)進行標志位狀態(tài)檢索,所述檢索模塊,包括:
45、獲取子模塊,用于獲取針對所述預設數(shù)據(jù)存儲區(qū)塊預先定義的起始位和終止位;
46、第一檢索子模塊,用于按照從所述起始位到所述終止位的方向,順次對所述預設數(shù)據(jù)存儲區(qū)塊中的多個數(shù)據(jù)存儲區(qū)進行檢索;
47、第一讀取子模塊,用于基于檢索的每個所述數(shù)據(jù)存儲區(qū),讀取其對應的標志位狀態(tài);
48、所述基于所述各個數(shù)據(jù)存儲區(qū)各自對應的標志位狀態(tài),確定所述數(shù)據(jù)寫入指令對應的目標數(shù)據(jù)存儲區(qū),所述第一確定子模塊,包括:
49、第一檢索子單元,用于若讀取到的標志位狀態(tài)為所述第一標志位狀態(tài),則繼續(xù)檢索下一個數(shù)據(jù)存儲區(qū),直到讀取到所述第二標志位狀態(tài),則將該第二標志位狀態(tài)對應的數(shù)據(jù)存儲區(qū)確定為所述目標數(shù)據(jù)存儲區(qū)。
50、可選地,所述系統(tǒng)還包括:
51、接收子模塊,用于接收車輛控制器發(fā)送的數(shù)據(jù)讀取指令;
52、第二檢索子模塊,用于響應于所述數(shù)據(jù)讀取指令,順次對預設數(shù)據(jù)存儲區(qū)塊中的多個數(shù)據(jù)存儲區(qū)進行標志位狀態(tài)檢索;
53、第二確定子模塊,用于根據(jù)檢索結(jié)果,確定目標數(shù)據(jù)存儲區(qū);
54、第二讀取子模塊,用于基于所述目標數(shù)據(jù)存儲區(qū),在所述目標數(shù)據(jù)存儲區(qū)內(nèi)進行數(shù)據(jù)的讀取。
55、可選地,所述響應于所述數(shù)據(jù)讀取指令,順次對預設數(shù)據(jù)存儲區(qū)塊中的多個數(shù)據(jù)存儲區(qū)進行標志位狀態(tài)檢索,所述第二檢索子模塊,包括:
56、獲取子單元,用于獲取針對所述預設數(shù)據(jù)存儲區(qū)塊預先定義的起始位和終止位;
57、第二檢索子單元,用于按照從所述起始位到所述終止位的方向,順次對所述預設數(shù)據(jù)存儲區(qū)塊中的多個數(shù)據(jù)存儲區(qū)進行標志位狀態(tài)檢索;
58、所述根據(jù)檢索結(jié)果,確定所述目標數(shù)據(jù)存儲區(qū),所述第二確定子模塊,包括:
59、讀取子單元,用于基于檢索的每個所述數(shù)據(jù)存儲區(qū),讀取其對應的標志位狀態(tài);
60、第三檢索子單元,用于若讀取到的標志位狀態(tài)為所述第一標志位狀態(tài),則繼續(xù)檢索下一個數(shù)據(jù)存儲區(qū),直到讀取到的標志位狀態(tài)為所述第二標志位狀態(tài),則將所述第二標志位狀態(tài)對應的數(shù)據(jù)存儲區(qū)的前一個數(shù)據(jù)存儲區(qū)確定為所述目標數(shù)據(jù)存儲區(qū);
61、確定子單元,用于若讀取到的標志位狀態(tài)全部為所述第一標志位狀態(tài),則將最后檢索的數(shù)據(jù)存儲區(qū)確定為所述目標數(shù)據(jù)存儲區(qū)。
62、可選地,為所述預設數(shù)據(jù)存儲區(qū)塊預先配置標志位,所述系統(tǒng)還包括:
63、劃分子模塊,用于將所述預設數(shù)據(jù)存儲區(qū)塊按照預設存儲空間劃分為多個所述數(shù)據(jù)存儲區(qū);
64、映射子模塊,用于將所述標志位中的多個比特位與多個所述數(shù)據(jù)存儲區(qū)進行一一映射,得到所述標志位與所述預設數(shù)據(jù)存儲區(qū)塊的配置關系,其中每一個比特位均關聯(lián)標志位狀態(tài)。
65、可選地,所述標志位的存儲空間按照字節(jié)為單位進行確定,所述系統(tǒng)還包括:
66、第三確定子模塊,用于根據(jù)所述數(shù)據(jù)存儲區(qū)的數(shù)量,確定所述標志位中需配置的所述比特位的數(shù)量;
67、第四確定子模塊,用于根據(jù)所述比特位的數(shù)量,確定所述標志位的存儲空間需配置的字節(jié)數(shù)量。
68、本技術(shù)實施例第三方面,提供了一種車輛,所述車輛包括如本技術(shù)第二方面所述的數(shù)據(jù)存儲系統(tǒng),和/或用于執(zhí)行如本技術(shù)第一方面所述的數(shù)據(jù)存儲方法。
69、本技術(shù)實施例第四方面,提供了一種電子設備,包括存儲器、處理器及存儲在所述存儲器上的計算機程序,所述處理器執(zhí)行所述計算機程序以實現(xiàn)如本技術(shù)第一方面所述的數(shù)據(jù)存儲方法。
70、本技術(shù)的有益效果:
71、本技術(shù)提供了一種數(shù)據(jù)存儲方法,所述方法包括:接收車輛控制器發(fā)送的數(shù)據(jù)寫入指令;響應于所述數(shù)據(jù)寫入指令,順次對預設數(shù)據(jù)存儲區(qū)塊中的多個數(shù)據(jù)存儲區(qū)進行標志位狀態(tài)檢索;根據(jù)檢索結(jié)果,判斷所述預設數(shù)據(jù)存儲數(shù)據(jù)塊中的各個數(shù)據(jù)存儲區(qū)各自對應的標志位狀態(tài)是否全部為第一標志位狀態(tài);若所述各個數(shù)據(jù)存儲區(qū)各自對應的標志位狀態(tài)全部為第一標志位狀態(tài),則將所述各個數(shù)據(jù)存儲區(qū)各自對應的標志位狀態(tài)進行擦寫,以使各個數(shù)據(jù)存儲區(qū)各自對應的標志位狀態(tài)全部更新為第二標志位狀態(tài);若所述各個數(shù)據(jù)存儲區(qū)各自對應的標志位狀態(tài)中存在第二標志位狀態(tài),則保留所述各個數(shù)據(jù)存儲區(qū)各自對應的當前的標志位狀態(tài)。本技術(shù)在接收到數(shù)據(jù)寫入指令后,依次檢索多個數(shù)據(jù)存儲區(qū)的標志位狀態(tài)。如果所有標志位均為第一標志位狀態(tài),則執(zhí)行擦寫操作,將所有標志位狀態(tài)更新為第二標志位狀態(tài);如果存在標志位狀態(tài)為第二標志位狀態(tài),則保留每個數(shù)據(jù)存儲區(qū)各自對應的標志位狀態(tài),從而降低了標志位的擦寫頻次,提高了數(shù)據(jù)存儲次數(shù)和數(shù)據(jù)存儲區(qū)的擦寫壽命。