AUTOSAR的NvM Block有三種Native、Redundant和DataSet,用得最多的是Native,但你知道其他兩種是干什么的嗎?
AUTOSAR NVM(Non-Volatile Memory)是AUTOSAR標準中定義的一種用于存儲非易失性數據的機制。在AUTOSAR NVM中,數據被存儲在一個或多個NVM塊中。每個NVM塊由一個或多個NVM數據集組成,可以存儲不同類型的數據。
圖見《一圖讀懂AUTOSAR NvM(附pdf版文檔資源)》
在AUTOSAR NVM塊中的三種類型,它們之間的區別如下:
Native
Native數據是NVM塊中存儲的原始數據,是應用程序需要讀寫的數據。Native數據只在NVM塊中存儲一份,如果數據損壞或丟失,將無法恢復。因此,在寫入Native數據時,需要確保數據的可靠性和一致性。
舉例說明:江湖中的《九陽神功》只有一份,弄丟了就丟了。
Redundant
Redundant數據是為了增加數據的可靠性而存儲在NVM塊中的備份數據。與Native數據不同,Redundant數據通常存儲在NVM塊中的不同位置,以增加數據的冗余度。如果Native數據損壞或丟失,可以使用Redundant數據進行恢復。在寫入Redundant數據時,需要確保數據的可靠性和一致性,以確保Redundant數據可以成功地用于數據恢復。
舉例說明:江湖中,如果你巧合得到了一份《葵花寶典》,你也很清楚這玩意的“魅力”,你不想擁有它也不希望它失傳,于是偷偷抄了一份,把原件扔到江湖中,愛咋咋地。如果江湖中的原件丟了,那你可以偷偷拿出你的手抄稿慢慢研究,咳咳~~
DataSet
DataSet數據是AUTOSAR NVM中的一個特殊數據類型,它是一組數據的集合。DataSet數據通常用于存儲應用程序的配置數據或狀態數據,例如車輛參數、故障碼等。與Native和Redundant數據不同,DataSet數據可以在應用程序運行期間進行讀寫,并且可以使用AUTOSAR配置工具進行配置和管理。
DataSet數據由一個或多個DataBlock組成,每個DataBlock由一個或多個DataElement組成。在寫入DataSet數據時,需要確保數據的可靠性和一致性,并且需要考慮到數據的版本管理和數據更新等問題。
舉例說明:江湖中的《降龍十八掌》有好多個版本,例如有洪七公版、郭靖版和喬峰版,每個版本都有點不一樣。
總之,在AUTOSAR NVM中,Native數據是應用程序需要讀寫的原始數據,Redundant數據是為了增加數據的可靠性而存儲的備份數據,DataSet數據是一組數據的集合,通常用于存儲配置數據或狀態數據,一般可以是車廠不同車型的配置數據。
理論是這個樣子,話也是這么說,但總得拿出來遛一遛,看看實際的樣子。
于是乎,上代碼、改配置,直接運行試試效果:
以下工程驗證還是基于《AUTOSAR NvM模塊配置詳解》案例來修改。
Native
這個在原來教程有展示了,也是用得比較多一種,就配置成Native就好了,在EEPROM或FLASH中存儲的數據只有一份。
它的讀寫示意圖是這樣的:
Redundant
Redundant就是冗余、重復的意思,最直觀的理解就是有多一個備份Block。這樣可以讓數據更加可靠、容錯性更好,可用性也更好。
注意:只要數據了,備份每次都要重新同步的。
實際案例中的寫入過程動圖是這樣的:
在讀的時候,讀到其中一份是正確的就OK了
真實的讀取過程也很簡單:
但是,如果從第一個Block讀取的數據是錯誤的(例如CRC校驗不正確),那么,它就會從備份Block去讀取數據。以下,我故意將CRC部分改成別的錯誤值,其讀出來后會校驗CRC,發現錯的,再嘗試讀取備份區域的數據:
那么它的讀取過程是怎樣的呢?看動圖:
這樣看來,這個非常適合用于存儲非常重要的數據,例如用于功能安全場合。
DataSet
DataSet數據是一組數據,這組數據里面有很多份相互獨立的數據。它并不像Redundant那樣,這些數據即使會有些相似性,但都是不一樣的,改動其中一份不會影響其他的。
DataSet的讀寫其實跟Native的基本一樣,只是在操作之前需要調用NvM_SetDataIndex函數來指定要操作哪一個DataSet數據塊。它的參數定義是這樣的:
Std_ReturnType NvM_SetDataIndex(NvM_BlockIdType BlockId, uint8 DataIndex)
如果不調用這個NvM_SetDataIndex函數,默認情況下,是操作最前的那個數據塊,跟Native的表現一致:
如果操作第二塊就是這樣(起始地址是第一塊的后面,緊挨著的):
以上就是NvM Block的Native、Redundant和DataSet的區別了。
審核編輯 :李倩
-
存儲
+關注
關注
13文章
4353瀏覽量
86169 -
數據集
+關注
關注
4文章
1209瀏覽量
24833 -
DataSet
+關注
關注
0文章
5瀏覽量
2211
原文標題:AUTOSAR NvM Block的Native、Redundant和Dataset有什么區別?
文章出處:【微信號:embedded_sw,微信公眾號:嵌入式軟件實戰派】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
分析Autosar架構下的NVM源碼
NvM在AUTOSAR中的層次結構
NVM Block連續寫及Default Value問題分析
![<b class='flag-5'>NVM</b> <b class='flag-5'>Block</b>連續寫及Default Value問題分析](https://file1.elecfans.com/web2/M00/8D/BA/wKgaomS_aq-ADo1MAAA01Mq1Fdc994.png)
評論