前言
前面的文章我們?cè)敿?xì)分析了NvM,Fee,Fls模塊以及NvM User和NvM的交互,對(duì)AUTOSAR架構(gòu)下的存儲(chǔ)協(xié)議棧應(yīng)該有了一個(gè)比較深入的了解了。回頭來看,站在NvM使用者的角度來看最關(guān)心的是如何使用NvM存儲(chǔ)服務(wù),以及使用過程中出現(xiàn)Error后如何快速定位和分析問題。NvM服務(wù)的使用可以參考<
縮略詞:
簡(jiǎn)寫 | 全稱 |
DMU | Data Memory Unit |
Fls | Flash |
OPER | Flash Operation Error |
SQER | Command Sequence Error |
EVER | Erase Verify Error |
注:本公眾號(hào)文章中使用了一些第三方工具和文檔,若有侵權(quán),請(qǐng)聯(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芯片F(xiàn)LASH基本概念介紹
9.AUTOSAR架構(gòu)下Fls詳細(xì)分析
10.TC3xx芯片DMU介紹
正文
由于從NvM User的存儲(chǔ)服務(wù)請(qǐng)求正向自定向下分析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)了什么錯(cuò)誤,也就能采用對(duì)應(yīng)的應(yīng)對(duì)措施。
Note:
1.該表格僅把NvM最常用的服務(wù)(讀,寫,擦除)可能產(chǎn)生的Error統(tǒng)計(jì)進(jìn)去,像NvM?Cancell這類的不常用服務(wù)沒有統(tǒng)計(jì)進(jìn)去。
2.NvM除了底層上報(bào)的錯(cuò)誤外,本身還有很多Error處理機(jī)制,比如,調(diào)用底層接口的返回值判斷等,這里錯(cuò)誤也沒有統(tǒng)計(jì)進(jìn)去,也就是我們僅僅把NvM DMU上報(bào)的錯(cuò)誤統(tǒng)計(jì)出來
3.DMU上報(bào)的Error的原因,以及對(duì)應(yīng)軟件的處理辦法可以查看數(shù)據(jù)手冊(cè)獲得。具體請(qǐng)參考: <<TC3xx芯片DMU介紹>>
NvM User | NvM | Fee | Fls |
NvM User可以通過Block Callback獲取NvM Job請(qǐng)求的結(jié)果, | NvM調(diào)用NvM Block配置的Callback函數(shù)JobEndCbkExtFunc_pt,傳入的JobResult為NVM_REQ_NOT_OK |
| Fls執(zhí)行Compare任務(wù)時(shí)發(fā)生錯(cuò)誤,調(diào)用Fee_JobErrorNotification |
Fls調(diào)用Fee_JobErrorNotification, Fee_JobErrorNotification調(diào)用NvM_JobErrorNotification | Fls擦寫過程中發(fā)生了超時(shí),調(diào)用Fee_JobErrorNotification | ||
Fls擦除過程中發(fā)生錯(cuò)誤,調(diào)用Fee_JobErrorNotification | |||
Fls寫數(shù)據(jù)過程發(fā)生錯(cuò)誤,調(diào)用Fee_JobErrorNotification | |||
Fls讀數(shù)據(jù)過程發(fā)生錯(cuò)誤,調(diào)用Fee_JobErrorNotification | |||
NvM調(diào)用NvM Block配置的Callback函數(shù)JobEndCbkExtFunc_pt,傳入的JobResult為NVM_REQ_INTEGRITY_FAILED | Fee在處理Read任務(wù)時(shí)發(fā)現(xiàn)數(shù)據(jù)不一致(比如,Block重來沒有被寫過)就會(huì)調(diào)用NvM_JobErrorNotification | ||
NvM調(diào)用NvM Block配置的Callback函數(shù)JobEndCbkExtFunc_pt,傳入的JobResult為NVM_REQ_NV_INVALIDATED | Fee在處理Read任務(wù)時(shí)發(fā)現(xiàn)數(shù)據(jù)是無效的就會(huì)調(diào)用NvM_JobErrorNotification | ||
NvM調(diào)用NvM Block配置的Callback函數(shù)JobEndCbkExtFunc_pt,傳入的JobResult為NVM_REQ_NOT_OK | Fee在處理寫任務(wù)時(shí)發(fā)現(xiàn)寫的次數(shù)已經(jīng)超過該Block配置的最大寫次數(shù)了就會(huì)調(diào)用NvM_JobErrorNotification |
我們把TC3xx芯片的DFlash都擦除掉,然后通過仿真器執(zhí)行重啟。
Fee在處理Read任務(wù)時(shí)發(fā)現(xiàn)數(shù)據(jù)不一致(Block沒有被寫過),Fee_MainFunction會(huì)調(diào)用
NvM_JobErrorNotification通知到上層的NvM模塊。

?
如果對(duì)應(yīng)的NvM Block配置了Callback函數(shù),NvM模塊就會(huì)調(diào)用該Block的Callback函數(shù)通知到NvM_User,這樣NvM User就能知道當(dāng)前NvM Block的狀態(tài)。

?
本文自底向上分析了存儲(chǔ)協(xié)議棧的Error流轉(zhuǎn)過程,通過本文總結(jié)的Error流轉(zhuǎn)表格,我們可以方便的查找DMU操作出問題的可能原因。但是,對(duì)于NvM模塊本身的一些邏輯狀態(tài)上報(bào)的Error,這個(gè)表格沒有統(tǒng)計(jì),感興趣的朋友可以自己再去研究。
End
「汽車電子嵌入式在CSDN上同步推出AUTOSAR精進(jìn)之路專欄,本專欄每個(gè)模塊完全按實(shí)際項(xiàng)目中開發(fā)及維護(hù)過程來詳細(xì)介紹。模塊核心概念介紹、實(shí)際需求描述、實(shí)際工程配置、特殊需求介紹及背后原理、實(shí)際工程使用經(jīng)驗(yàn)總結(jié)。目的是讓讀者看完每一個(gè)章節(jié)后能理解原理后根據(jù)需求完成一個(gè)模塊的配置或者解決一個(gè)問題。」
點(diǎn)擊文章最后左下角的閱讀原文可以獲取更多信息
或者復(fù)制如下鏈接到瀏覽器獲取更多信息
https://blog.csdn.net/qq_36056498/article/details/132125693
注:本公眾號(hào)文章中使用了一些第三方工具和文檔,若有侵權(quán),請(qǐng)聯(lián)系作者刪除!
推薦閱讀
汽車電子嵌入式精彩文章匯總第一期:20210530-20230703
AUTOSAR 架構(gòu)下EcuM喚醒源事件詳解
AUTOSAR架構(gòu)下NVM Block連續(xù)寫及Default Value問題分析
AUTOSAR架構(gòu)下NvM源碼詳細(xì)分析
AUTOSAR架構(gòu)下報(bào)文掉線超時(shí)不上報(bào)問題分析
Classic Autosar下的以太網(wǎng)通訊架構(gòu)概覽
End
歡迎點(diǎn)贊,關(guān)注,轉(zhuǎn)發(fā),在看,您的每一次鼓勵(lì),都是我最大的動(dòng)力!
汽車電子嵌入式
微信掃描二維碼,關(guān)注我的公眾號(hào)