前言
前面的文章我們詳細(xì)分析了NvM,F(xiàn)ee,F(xiàn)ls模塊以及NvM User和NvM的交互,對AUTOSAR架構(gòu)下的存儲協(xié)議棧應(yīng)該有了一個比較深入的了解了?;仡^來看,站在NvM使用者的角度來看最關(guān)心的是如何使用NvM存儲服務(wù),以及使用過程中出現(xiàn)Error后如何快速定位和分析問題。NvM服務(wù)的使用可以參考<
縮略詞:
簡寫 | 全稱 |
DMU | Data Memory Unit |
Fls | Flash |
OPER | Flash Operation Error |
SQER | Command Sequence Error |
EVER | Erase Verify Error |
注:本公眾號文章中使用了一些第三方工具和文檔,若有侵權(quán),請聯(lián)系作者刪除!
參考文檔:
1.AURIXTC3XX_um_part1_v2.0.pdf
2. Specification of Flash EEPROM Emulation
3. Specification of Flash Driver
4.Specification of NVRAM Manager AUTOSAR CP Release 4.3.1
5.AUTOSAR架構(gòu)下NVM Block連續(xù)寫及Default Value問題分析
6.AUTOSAR架構(gòu)下NvM模塊詳細(xì)分析
7.AUTOSAR架構(gòu)下Fee詳細(xì)分析
8.TC37x芯片FLASH基本概念介紹
9.AUTOSAR架構(gòu)下Fls詳細(xì)分析
10.TC3xx芯片DMU介紹
正文
1.Error自定向上分析
由于從NvM User的存儲服務(wù)請求正向自定向下分析Error發(fā)生的條件和流轉(zhuǎn)十分困難,我們采用自底向上的方法從底層已知Error出發(fā)向上分析Error的流轉(zhuǎn),也就是:Fls已知Error àFeeàNvMàNvM User
如下表所示,我們把自底向上分析的結(jié)果以表格的形式統(tǒng)計(jì)出來,通過這種方式,NvM User就能從JobResult結(jié)果查找NvM,Fee,Fls報(bào)了什么錯誤,也就能采用對應(yīng)的應(yīng)對措施。
Note:
1.該表格僅把NvM最常用的服務(wù)(讀,寫,擦除)可能產(chǎn)生的Error統(tǒng)計(jì)進(jìn)去,像NvMCancell這類的不常用服務(wù)沒有統(tǒng)計(jì)進(jìn)去。
2.NvM除了底層上報(bào)的錯誤外,本身還有很多Error處理機(jī)制,比如,調(diào)用底層接口的返回值判斷等,這里錯誤也沒有統(tǒng)計(jì)進(jìn)去,也就是我們僅僅把NvM DMU上報(bào)的錯誤統(tǒng)計(jì)出來
3.DMU上報(bào)的Error的原因,以及對應(yīng)軟件的處理辦法可以查看數(shù)據(jù)手冊獲得。具體請參考: <<TC3xx芯片DMU介紹>>
NvM User | NvM | Fee | Fls |
NvM User可以通過Block Callback獲取NvM Job請求的結(jié)果, 然后根據(jù)結(jié)果執(zhí)行對應(yīng)的策略 |
NvM調(diào)用NvM Block配置的Callback函數(shù)JobEndCbkExtFunc_pt,傳入的JobResult為NVM_REQ_NOT_OK NvM_CurrentBlockInfo_t.LastResult_t = NVM_REQ_NOT_OK |
Fee在處理Write任務(wù)時會調(diào)用Fls的Compare接口對比寫入DFlash的數(shù)據(jù)和RAM緩存的數(shù)據(jù),如果出現(xiàn)錯誤,F(xiàn)ee會調(diào)用NvM_JobErrorNotification Fls調(diào)用Fee_JobErrorNotification, Fee_JobErrorNotication調(diào)用FeeNvmIllegalStateNotification FeeJobResult == MEMIF_BLOCK_FAILED Note: FeeNvmIllegalStateNotification是一個Callout函數(shù),由User實(shí)現(xiàn) |
Fls執(zhí)行Compare任務(wù)時發(fā)生錯誤,調(diào)用Fee_JobErrorNotification FlsJobResult == MEMIF_BLOCK_INCONSISTENT Note: 寫入Flash的數(shù)據(jù)和RAM緩存的數(shù)據(jù)不一致 |
Fls調(diào)用Fee_JobErrorNotification, Fee_JobErrorNotification調(diào)用NvM_JobErrorNotification FeeJobResult == MEMIF_BLOCK_FAILED |
Fls擦寫過程中發(fā)生了超時,調(diào)用Fee_JobErrorNotification FlsJobResult == MEMIF_BLOCK_FAILED Note: 監(jiān)控擦寫任務(wù)執(zhí)行的時間,超時就會報(bào)錯 |
||
Fls擦除過程中發(fā)生錯誤,調(diào)用Fee_JobErrorNotification FlsJobResult == MEMIF_BLOCK_FAILED Note: 發(fā)生OPER, EVER, SQER |
|||
Fls寫數(shù)據(jù)過程發(fā)生錯誤,調(diào)用Fee_JobErrorNotification FlsJobResult == MEMIF_BLOCK_FAILED Note: 發(fā)生OPER, PVER, SQER錯誤 |
|||
Fls讀數(shù)據(jù)過程發(fā)生錯誤,調(diào)用Fee_JobErrorNotification FlsJobResult == MEMIF_BLOCK_FAILED Note: 開啟了ECC_ERROR檢查,如果發(fā)生了ECC錯誤就會報(bào)錯 |
|||
NvM調(diào)用NvM Block配置的Callback函數(shù)JobEndCbkExtFunc_pt,傳入的JobResult為NVM_REQ_INTEGRITY_FAILED NvM_CurrentBlockInfo_t.LastResult_t = NVM_REQ_INTEGRITY_FAILED |
Fee在處理Read任務(wù)時發(fā)現(xiàn)數(shù)據(jù)不一致(比如,Block重來沒有被寫過)就會調(diào)用NvM_JobErrorNotification FeeJobResult == MEMIF_BLOCK_INCONSISTENT |
||
NvM調(diào)用NvM Block配置的Callback函數(shù)JobEndCbkExtFunc_pt,傳入的JobResult為NVM_REQ_NV_INVALIDATED NvM_CurrentBlockInfo_t.LastResult_t = NVM_REQ_NV_INVALIDATED |
Fee在處理Read任務(wù)時發(fā)現(xiàn)數(shù)據(jù)是無效的就會調(diào)用NvM_JobErrorNotification FeeJobResult == MEMIF_BLOCK_INVALID |
||
NvM調(diào)用NvM Block配置的Callback函數(shù)JobEndCbkExtFunc_pt,傳入的JobResult為NVM_REQ_NOT_OK NvM_CurrentBlockInfo_t.LastResult_t = NVM_REQ_NOT_OK |
Fee在處理寫任務(wù)時發(fā)現(xiàn)寫的次數(shù)已經(jīng)超過該Block配置的最大寫次數(shù)了就會調(diào)用NvM_JobErrorNotification FeeJobResult == MEMIF_BLOCK_FAILED |
2.數(shù)據(jù)INTEGRITY_FAILED錯誤示例
我們把TC3xx芯片的DFlash都擦除掉,然后通過仿真器執(zhí)行重啟。
Fee在處理Read任務(wù)時發(fā)現(xiàn)數(shù)據(jù)不一致(Block沒有被寫過),F(xiàn)ee_MainFunction會調(diào)用
NvM_JobErrorNotification通知到上層的NvM模塊。
如果對應(yīng)的NvM Block配置了Callback函數(shù),NvM模塊就會調(diào)用該Block的Callback函數(shù)通知到NvM_User,這樣NvM User就能知道當(dāng)前NvM Block的狀態(tài)。
3. 總結(jié)
本文自底向上分析了存儲協(xié)議棧的Error流轉(zhuǎn)過程,通過本文總結(jié)的Error流轉(zhuǎn)表格,我們可以方便的查找DMU操作出問題的可能原因。但是,對于NvM模塊本身的一些邏輯狀態(tài)上報(bào)的Error,這個表格沒有統(tǒng)計(jì),感興趣的朋友可以自己再去研究。
審核編輯:彭菁
-
存儲
+關(guān)注
關(guān)注
13文章
4296瀏覽量
85798 -
軟件
+關(guān)注
關(guān)注
69文章
4921瀏覽量
87394 -
NVM
+關(guān)注
關(guān)注
1文章
41瀏覽量
19118 -
協(xié)議棧
+關(guān)注
關(guān)注
2文章
141瀏覽量
33628
原文標(biāo)題:AUTOSAR架構(gòu)下存儲協(xié)議棧Error問題自底向上分析
文章出處:【微信號:汽車電子嵌入式,微信公眾號:汽車電子嵌入式】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論