MemIf
和所有的抽象層作用差不多,MemIf把Driver層的模塊抽象出來提供給上層使用,具體層級(jí)結(jié)構(gòu)如下:
NvM調(diào)用MemIf提供的標(biāo)準(zhǔn)接口,例如MemIf_ReadWrite等;在MemIf根據(jù)已配置的抽象驅(qū)動(dòng)模塊(FeeEA)分別調(diào)用不同的API,實(shí)際舉例如下:
根據(jù)標(biāo)準(zhǔn),F(xiàn)ee或者Ea又會(huì)調(diào)用MeeAcc提供的接口去訪問不同的Flash驅(qū)動(dòng)。
我們以Vector的實(shí)際代碼為例,在MemIf層配置提供的接口如下:
/**-- MemHwA Function Pointers --**/ CONST(MemIf_MemHwAApi_Type, MEMIF_CONST) MemIf_MemHwaApis[MEMIF_NUMBER_OF_DEVICES] = { /* Fee_30_SmallSector */ { Fee_30_SmallSector_Read, MemIf_Fee_30_SmallSector_WriteWrapper, Fee_30_SmallSector_EraseImmediateBlock, Fee_30_SmallSector_InvalidateBlock, Fee_30_SmallSector_Cancel, Fee_30_SmallSector_GetStatus, Fee_30_SmallSector_GetJobResult, Fee_30_SmallSector_SetMode } };
在Fee層級(jí)配置的Flash驅(qū)動(dòng)接口如下:
/* FLS API pointer table */ CONST(Fee_30_SmallSector_FlsApiType, FEE_30_SMALLSECTOR_PRIVATE_CONST) Fee_30_SmallSector_FlsApi0 = { /* Read Service */ Fls_Read, /* Write Service */ Fls_Write, /* Compare Service */ Fls_Compare, /* Erase Service */ Fls_Erase, /* Blank Check Service */ Fls_BlankCheck, /* Get Status Service */ Fls_GetStatus, /* Get Job Result Service */ Fls_GetJobResult };
發(fā)現(xiàn)沒有,這一層的API并沒有MemAccM相關(guān)的接口,所以雖然規(guī)范定義了這樣的層級(jí)結(jié)構(gòu),但是在實(shí)現(xiàn)上有多種可能,簡(jiǎn)單有效才是硬道理。
Fee
之所以在車規(guī)MCU里需要提供這樣的機(jī)制,主要還是為了節(jié)約成本,提供數(shù)據(jù)的高效、實(shí)時(shí)存儲(chǔ),滿足車規(guī)對(duì)于Data Flash百萬次刷寫的要求。
在AUTOSAR的規(guī)范里,也提供了這樣類似的示例機(jī)制來提高DFlash的使用壽命:
在該示例中,共計(jì)有1500Bytes數(shù)據(jù)需要管理,這些數(shù)據(jù)被均勻分成10個(gè)Block;當(dāng)Fee發(fā)現(xiàn)某個(gè)Block數(shù)據(jù)更改并且需要重新編程的時(shí)候,他會(huì)找到目前空閑的Flash空間把數(shù)據(jù)寫進(jìn)Flash并設(shè)置有效。需要注意的是,在設(shè)計(jì)Fee驅(qū)動(dòng)時(shí),需要考慮到Flash IP支持的最小可擦除單位和最小可編程單位,只要熟悉IP特性,才能做好Flash磨損均衡算法。
小結(jié)
NvM的狀態(tài)機(jī)每家供應(yīng)商的代碼區(qū)別還是挺大的,不過我們?cè)诳创a的時(shí)候首先需要了解這些API的調(diào)用時(shí)序,如下圖為用戶調(diào)用NvM_Write服務(wù)的時(shí)序圖:
熟讀AUTOSAR NV Data Handling Guideline,才能更好理解代碼,必要時(shí)自己畫一個(gè)狀態(tài)遷移圖。
來源:汽車MCU軟件設(shè)計(jì)
審核編輯:湯梓紅
-
接口
+關(guān)注
關(guān)注
33文章
9005瀏覽量
153785 -
存儲(chǔ)
+關(guān)注
關(guān)注
13文章
4535瀏覽量
87498 -
AUTOSAR
+關(guān)注
關(guān)注
10文章
380瀏覽量
22702 -
代碼
+關(guān)注
關(guān)注
30文章
4900瀏覽量
70797
原文標(biāo)題:AUTOSAR 存儲(chǔ)棧分析--MemIfFee
文章出處:【微信號(hào):談思實(shí)驗(yàn)室,微信公眾號(hào):談思實(shí)驗(yàn)室】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
AUTOSAR存儲(chǔ)模塊的基礎(chǔ)知識(shí)
存儲(chǔ)協(xié)議棧的Error流轉(zhuǎn)過程分析

AUTOSAR是什么
AUTOSAR的相關(guān)資料推薦
一文詳解棧存儲(chǔ)的結(jié)構(gòu)
如何用eBPF優(yōu)化內(nèi)存存儲(chǔ)功能
AUTOSAR通信協(xié)議棧的幾個(gè)問題(一)
AUTOSAR中通信協(xié)議棧配置詳解

AUTOSAR經(jīng)典平臺(tái)介紹

AUTOSAR平臺(tái)研究報(bào)告:國(guó)產(chǎn)基礎(chǔ)軟件+芯片全棧方案加快量產(chǎn)

AUTOSAR通信協(xié)議解析 如何實(shí)現(xiàn)AUTOSAR通信
AUTOSAR通信實(shí)現(xiàn)中的常見問題
利用eBPF程序繞過內(nèi)核以加速存儲(chǔ)訪問

評(píng)論