0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

NVRAM Manager(NVM)模塊詳細(xì)介紹

工程師鄧生 ? 來源:汽車電子嵌入式 ? 作者:Tomas Li ? 2022-09-20 09:06 ? 次閱讀

前言

存儲協(xié)議棧負(fù)責(zé)ECU中非易失性數(shù)據(jù)的存儲管理。存儲協(xié)議棧的分享包括NVM、MemI、Ea、Fea、Eep、Fls模塊的詳細(xì)介紹及代碼分析,具體的項(xiàng)目實(shí)戰(zhàn)請關(guān)注本號的后續(xù)文章,本篇為NVRAM Manager(NVM)模塊詳細(xì)介紹篇(三)。

eb3a684a-387d-11ed-ba43-dac502259ad0.png

正文

4.API詳解

如下表所示,NVM的API接口主要分為幾大類型。

eb8f2a2e-387d-11ed-ba43-dac502259ad0.png

4.1同步請求函數(shù) Synchronous requests

4.1.1NvM_Init

函數(shù)原型:

void NvM_Init(

const NvM_ConfigType* ConfigPtr

)

ec092202-387d-11ed-ba43-dac502259ad0.png

函數(shù)參數(shù):

ConfigPtr:指向選定配置集的指針。

函數(shù)描述:用來重置所有內(nèi)部變量的服務(wù)。

函數(shù)NvM_Init應(yīng)將所有內(nèi)部變量,例如隊(duì)列、請求標(biāo)志、狀態(tài)機(jī),重置為其初始值。它應(yīng)在內(nèi)部發(fā)出“初始化完成”的信號,例如,以啟用作業(yè)處理和隊(duì)列管理。

函數(shù)NvM_Init不應(yīng)修改永久RAM塊內(nèi)容或調(diào)用顯式同步回調(diào),因?yàn)檫@將在NvM_ReadAll上完成。

函數(shù)NvM_Init應(yīng)將NVM_BLOCK_DATASET類型的所有NVRAM塊的數(shù)據(jù)集索引設(shè)置為零。

函數(shù)NvM_Init不得初始化其他模塊(假設(shè)底層層已經(jīng)初始化)。

提示:耗時(shí)的NVRAM塊初始化和根據(jù)塊描述符設(shè)置應(yīng)該由NvM_ReadAll請求完成。

4.1.2 NvM_SetBlockProtection

函數(shù)原型:

Std_ReturnType NvM_SetBlockProtection(

NvM_BlockIdType BlockId,

boolean ProtectionEnabled

)

ec3a9b16-387d-11ed-ba43-dac502259ad0.png

函數(shù)返回值:

E_OK: The block was enabled/disabled as requested

E_NOT_OK: An error occured.

函數(shù)參數(shù):

BlockId:塊標(biāo)識符唯一地標(biāo)識一個(gè)NVRAM塊描述符。NVRAM塊描述符包含有關(guān)單個(gè)NVRAM塊的所有所需信息。

ProtectionEnabled:TRUE: Write protection shall be enabled

FALSE: Write protection shall be disabled

函數(shù)描述:用于設(shè)置/重置NV塊的寫入保護(hù)的服務(wù)。

功能NvM_SetBlockProtection通過在相應(yīng)的NVRAM塊的管理部分設(shè)置寫保護(hù)屬性,為相應(yīng)的NV塊設(shè)置/重置寫保護(hù)。

NvM模塊的環(huán)境應(yīng)在調(diào)用函數(shù)NvM_SetBlockProtection之前已初始化NvM模塊。

4.1.3 NvM_GetErrorStatus

函數(shù)原型:

Std_ReturnType NvM_GetErrorStatus(

NvM_BlockIdType BlockId,

NvM_RequestResultType* RequestResultPtr

)

ec77e3a4-387d-11ed-ba43-dac502259ad0.png

函數(shù)返回值:

E_OK:已成功讀取與塊相關(guān)的錯(cuò)誤/狀態(tài)信息。

E_NOT_OK:發(fā)生錯(cuò)誤。

函數(shù)參數(shù):

BlockId:塊標(biāo)識符唯一地標(biāo)識一個(gè)NVRAM塊描述符。NVRAM塊描述符包含有關(guān)單個(gè)NVRAM塊的所有所需信息。

函數(shù)描述:提供以下服務(wù)來讀取與塊相關(guān)的錯(cuò)誤/狀態(tài)信息。

函數(shù)NvM_GetErrorStatus應(yīng)在NVRAM塊的管理部分中讀取與塊相關(guān)的錯(cuò)誤/狀態(tài)信息。NVRAM塊的狀態(tài)/錯(cuò)誤信息應(yīng)由以前或當(dāng)前的異步請求來設(shè)置。

NvM模塊的環(huán)境應(yīng)在調(diào)用函數(shù)NvM_GetErrorStatus之前已初始化NvM模塊。

4.1.4 NvM_CancelJobs

函數(shù)原型:

Std_ReturnType NvM_CancelJobs(

NvM_BlockIdType BlockId

)

函數(shù)返回值:

E_OK:該作業(yè)已被成功地從隊(duì)列中刪除。

E_NOT_OK:在隊(duì)列中找不到該作業(yè)。

函數(shù)參數(shù):

BlockId:塊標(biāo)識符唯一地標(biāo)識一個(gè)NVRAM塊描述符。NVRAM塊描述符包含有關(guān)單個(gè)NVRAM塊的所有所需信息。

函數(shù)描述:服務(wù)取消所有等待NV塊的作業(yè)。

函數(shù)NvM_CancelJobs應(yīng)取消指定NV塊的隊(duì)列中所有待定的作業(yè)。如果被請求,則對已取消的塊的結(jié)果類型為NVM_REQ_CANCELED。

當(dāng)前處理的作業(yè)將在NvM_CancelJobs調(diào)用之后繼續(xù)。

如果請求被接受,功能NvM_CancelJobs的工作應(yīng)提前將指定NVRAM塊的塊特定請求結(jié)果設(shè)置為NVM_REQ_CANCELED。

提示:目的只是在清理階段清空隊(duì)列,以防終止或重新啟動(dòng)分區(qū),以避免稍后結(jié)束作業(yè)通知。

4.2異步單塊請求 Asynchronous single block requests

4.2.1NvM_ReadBlock

函數(shù)原型:

Std_ReturnType NvM_ReadBlock(

NvM_BlockIdType BlockId,

void* NvM_DstPtr

)

函數(shù)返回值:

E_OK:請求已被接受。

E_NOT_OK:請求未被接受

函數(shù)參數(shù):

BlockId:塊標(biāo)識符唯一地標(biāo)識一個(gè)NVRAM塊描述符。NVRAM塊描述符包含有關(guān)單個(gè)NVRAM塊的所有所需信息。

NvM_DstPtr:指向RAM數(shù)據(jù)塊的指針

函數(shù)描述:將NV塊的數(shù)據(jù)復(fù)制到其相應(yīng)的RAM塊的服務(wù)。

函數(shù)NvM_ReadBlock將接管給定的參數(shù),將讀請求放入作業(yè)隊(duì)列中并返回。

4.2.2NvM_WriteBlock

函數(shù)原型:

Std_ReturnType NvM_WriteBlock(

NvM_BlockIdType BlockId,

const void* NvM_SrcPtr

)

函數(shù)返回值:

E_OK:請求已被接受。

E_NOT_OK:請求未被接受

函數(shù)參數(shù):

BlockId:塊標(biāo)識符唯一地標(biāo)識一個(gè)NVRAM塊描述符。NVRAM塊描述符包含有關(guān)單個(gè)NVRAM塊的所有所需信息。

NvM_SrcPtr:指向RAM數(shù)據(jù)塊的指針

函數(shù)描述:將RAM塊的數(shù)據(jù)復(fù)制到其相應(yīng)的NV塊的服務(wù)。

NvM_WriteBlock函數(shù)應(yīng)測試相應(yīng)RAM塊管理部分的NV塊的寫入保護(hù)屬性。如果出現(xiàn)故障,應(yīng)報(bào)告NVM_E_WRITE_PROTECTED/(在生產(chǎn)過程中)錯(cuò)誤。

4.2.3 NvMEraseNvBlock

函數(shù)原型:

Std_ReturnType NvM_EraseNvBlock(

NvM_BlockIdType BlockId

)

函數(shù)返回值:

E_OK:請求已被接受。

E_NOT_OK:請求未被接受

函數(shù)參數(shù):

BlockId:塊標(biāo)識符唯一地標(biāo)識一個(gè)NVRAM塊描述符。NVRAM塊描述符包含有關(guān)單個(gè)NVRAM塊的所有所需信息。

函數(shù)描述:要擦除NV塊的服務(wù)。

4.3異步多塊請求 Asynchronous multi block requests

4.3.1NvM_ReadAll

函數(shù)原型:

void NvM_ReadAll(

void

)

函數(shù)描述:啟動(dòng)一個(gè)多塊讀取請求。

多塊服務(wù)NvM_ReadAll應(yīng)提供兩種不同的功能:

-- 初始化所有NVRAM塊的管理數(shù)據(jù)

-- 將數(shù)據(jù)復(fù)制到永久RAM塊,或?yàn)橄鄳?yīng)配置的NVRAM塊調(diào)用顯式同步回調(diào)(NvM_ReadRamBlockFromNvm)。

函數(shù)NvM_ReadAll將向NvM模塊發(fā)出請求信號并返回。NVRAM Manager將延遲處理請求的ReadAll直到所有單個(gè)塊作業(yè)隊(duì)列為空。

4.3.2 NvM_WriteAll

函數(shù)原型:

void NvM_ReadAll(

void

)

函數(shù)描述:啟動(dòng)一個(gè)多塊寫入請求。

函數(shù)NvM_WriteAll的作業(yè)應(yīng)將永久RAM塊的內(nèi)容同步到它們相應(yīng)的NV塊上,或者在關(guān)閉時(shí)調(diào)用顯式同步回調(diào)(NvM_WriteRamBlockToNvm)。

如果NVRAM block ID 1(包含內(nèi)存布局的配置ID)被標(biāo)記為“在NvM_WriteAll期間寫入”,則NvM_WriteAll函數(shù)的作業(yè)將在最后一步(最后一次寫操作)寫入該block,以防止在寫操作過程中發(fā)生掉電故障時(shí)內(nèi)存布局不匹配。

函數(shù)NvM_WriteAll應(yīng)向NvM模塊發(fā)出請求信號并返回。NVRAM管理器應(yīng)延遲請求的處理,直到所有單個(gè)塊作業(yè)隊(duì)列為空。

4.3.2NvM_CancelWriteAll

函數(shù)原型:

void NvM_CancelWriteAll(

void

)

ecf252ec-387d-11ed-ba43-dac502259ad0.png

函數(shù)描述:

取消正在運(yùn)行的NvM_WriteAll請求。

4.4回調(diào)函數(shù)

4.4.1 NvM_JobEndNotification

函數(shù)原型:

void NvM_JobEndNotification(

void

)

函數(shù)描述:底層內(nèi)存抽象使用該函數(shù)表示作業(yè)結(jié)束,沒有錯(cuò)誤。

回調(diào)函數(shù)NvM_JobEndNotification被底層內(nèi)存抽象用來指示作業(yè)結(jié)束。

注:作業(yè)結(jié)束時(shí)關(guān)于內(nèi)存抽象的通知成功:

- -- Read finished & OK

- -- Write finished & OK

- -- Erase finished & OK

這個(gè)例程可以在中斷上下文中被調(diào)用,這取決于調(diào)用函數(shù)。所有內(nèi)存抽象模塊都應(yīng)該配置為使用相同的模式(回調(diào)/輪詢)。

如果通過NvMPollingMode禁用了輪詢模式,NvM模塊只能提供回調(diào)函數(shù)NvM_JobEndNotification。NvM_JobEndNotification功能受常用配置參數(shù)的影響。

4.5期望的接口 Expected Interfaces

4.5.1必需的接口

ed52c3c0-387d-11ed-ba43-dac502259ad0.png

4.5.2可配置的接口

Single block job end notification

函數(shù)原型:

Std_ReturnType NvM_SingleBlockCallbackFunction(

uint8 ServiceId,

NvM_RequestResultType JobResult

)

函數(shù)返回值:

E_OK:回調(diào)函數(shù)已成功處理

任何其他:回調(diào)函數(shù)已處理失敗

函數(shù)參數(shù):

ServiceId: NVRAM Manager服務(wù)的唯一服務(wù)ID。

JobResult: 覆蓋以前處理的單塊作業(yè)的請求結(jié)果。

函數(shù)描述:每個(gè)塊回調(diào)例程通知上層異步單塊請求已經(jīng)完成。

Multi block job end notification

函數(shù)原型:

void NvM_MultiBlockCallbackFunction(

uint8 ServiceId,

NvM_RequestResultType JobResult

)

函數(shù)參數(shù):

ServiceId: NVRAM Manager服務(wù)的唯一服務(wù)ID。

JobResult: 覆蓋以前處理的單塊作業(yè)的請求結(jié)果。

函數(shù)描述:公共回調(diào)例程,通知上層一個(gè)異步的多塊請求已經(jīng)完成。

Callback function for block initialization

函數(shù)原型:

Std_ReturnType InitBlockCallbackFunction(

void

)

函數(shù)返回值:

E_OK:回調(diào)函數(shù)已成功處理

任何其他:回調(diào)函數(shù)已處理失敗

函數(shù)描述:每個(gè)塊回調(diào)例程,當(dāng)需要在RAM中恢復(fù)默認(rèn)數(shù)據(jù)時(shí),NvM模塊將調(diào)用該塊回調(diào)例程,即使配置了ROM塊。

注意:在這里,如果沒有配置ROM塊,應(yīng)用程序應(yīng)該將默認(rèn)數(shù)據(jù)復(fù)制到RAM塊,并且/或者它可以設(shè)置一些標(biāo)志來知道默認(rèn)數(shù)據(jù)已經(jīng)恢復(fù)。

5.服務(wù)接口 Service Interfaces

本章是對NvM模塊規(guī)范的補(bǔ)充。盡管該規(guī)范的其他部分定義了相應(yīng)的基本軟件模塊的行為和c接口,但本章以SWC模板的形式指定了相應(yīng)的AUTOSAR服務(wù)。這里描述的接口將在VFB上可見,并用于生成應(yīng)用程序軟件和NvM模塊之間的RTE。

5.1 Client-Server-Interfaces

5.1.1 NvM_Admin

eea139c8-387d-11ed-ba43-dac502259ad0.png

eed1563a-387d-11ed-ba43-dac502259ad0.png

5.1.2 NvM_Mirror

efac1374-387d-11ed-ba43-dac502259ad0.png

f04ef65c-387d-11ed-ba43-dac502259ad0.png

f072a476-387d-11ed-ba43-dac502259ad0.png

f1948a04-387d-11ed-ba43-dac502259ad0.png

5.1.3 NvM_NotifyInitBlock

f1c9084c-387d-11ed-ba43-dac502259ad0.png

5.1.4 NvM_NotifyJobFinished

f1f55bd6-387d-11ed-ba43-dac502259ad0.png

5.1.5 NvM_Service

f23f3dfa-387d-11ed-ba43-dac502259ad0.png

5.2 Implementation Data Types

5.2.1 NvM_RequestResultType

f2a48c82-387d-11ed-ba43-dac502259ad0.png

f2cf62c2-387d-11ed-ba43-dac502259ad0.png

5.2.2 NvM_BlockIdType

f30d0fc8-387d-11ed-ba43-dac502259ad0.png

f33cea40-387d-11ed-ba43-dac502259ad0.png

5.2.3 ConstVoidPtr

f37f34ea-387d-11ed-ba43-dac502259ad0.png

f5b07bd4-387d-11ed-ba43-dac502259ad0.png

5.3 Ports

5.3.1 NvM_PAdmin_{Block}

f5eb7eb4-387d-11ed-ba43-dac502259ad0.png

5.3.2 NvM_PM_{Block}

f625df8c-387d-11ed-ba43-dac502259ad0.png

f67365d6-387d-11ed-ba43-dac502259ad0.png

5.3.3 NvM_PNIB_{Block}

f6e6aa8c-387d-11ed-ba43-dac502259ad0.png

5.3.4 NvM_PNJF_{Block}

f70f2606-387d-11ed-ba43-dac502259ad0.png

f79d2c80-387d-11ed-ba43-dac502259ad0.png

5.3.5 NvM_PS_{Block}

f7d0f3f8-387d-11ed-ba43-dac502259ad0.png

6.NVM配置

NvMBlockDescriptor: 容器的管理結(jié)構(gòu),配置組成一個(gè)給定的NVRAM塊管理類型。它的多樣性描述了配置的NVRAM塊的數(shù)量,每一個(gè)塊需要配置。NVRAM塊描述符壓縮在NVRAM塊描述符表中。

NvMCommon: 通用配置選項(xiàng)的容器。配置NVM模塊的公共屬性。

NvmDemEventParameterRefs: DemEventParameter元素的引用容器,當(dāng)發(fā)生相應(yīng)的錯(cuò)誤時(shí),應(yīng)該使用API Dem_SetEventStatus調(diào)用該元素。EventId取自引用的DemEventParameter的DemEventId符號值。標(biāo)準(zhǔn)化錯(cuò)誤在此容器中提供,可以通過特定于供應(yīng)商的錯(cuò)誤引用進(jìn)行擴(kuò)展。實(shí)際項(xiàng)目中基本不配置。

f7f72cc6-387d-11ed-ba43-dac502259ad0.png

6.1NvMCommon

NvMApiConfigClass: 預(yù)處理器開關(guān),啟用一些與NVM API配置類相關(guān)的API調(diào)用。

NvMBswMMultiBlockJobStatusInformation: 該參數(shù)指定是否告知BswM多塊作業(yè)的當(dāng)前狀態(tài)。

True:如果ReadAll和WriteAll被啟動(dòng)、完成、取消,調(diào)用BswM_NvM_CurrentJobMode

False:完全不通知BswM

NvMCompiledConfigId: NV內(nèi)存布局的配置ID。這個(gè)配置ID應(yīng)該被發(fā)布,例如,一個(gè)SW-C應(yīng)該有可能把它寫入NV內(nèi)存。

NvMCrcNumOfBytes: 如果為至少一個(gè)NVRAM塊配置了CRC校驗(yàn),則該參數(shù)定義了一個(gè)作業(yè)處理周期內(nèi)需要處理的最大字節(jié)數(shù)。

NvMDatasetSelectionBits: 定義在內(nèi)存硬件抽象接口內(nèi)為NVRAM塊的特定數(shù)據(jù)集尋址時(shí)應(yīng)使用的最低有效位數(shù)。

0 . .8:用于數(shù)據(jù)集或冗余塊尋址的位數(shù)。

0:不配置數(shù)據(jù)集或冗余NVRAM塊,不需要選擇位。

1:配置了冗余NVRAM塊,但沒有配置dataset NVRAM塊

NvMDrvModeSwitch: 在執(zhí)行NvM_ReadAll和NvM_WriteAll時(shí),預(yù)處理器開關(guān)使內(nèi)存驅(qū)動(dòng)切換到快速模式。

true: Fast mode enabled.

false: Fast mode disabled.

NvMDynamicConfiguration: 預(yù)處理器開關(guān),啟用由NvM_ReadAll請求處理的動(dòng)態(tài)配置管理。

true: Dynamic configuration management handling enabled.

false: Dynamic configuration management handling disabled.

該參數(shù)會(huì)影響所有與ID為1的Block相關(guān)的NvM進(jìn)程,以及所有與抗更改軟件相關(guān)的NvM進(jìn)程。如果關(guān)閉了Dynamic Configuration, Block 1不能被NvM使用

NvMJobPrioritization: 預(yù)處理器開關(guān),以啟用作業(yè)優(yōu)先級處理

true: Job prioritization handling enabled.

false: Job prioritization handling disabled.

NvMMultiBlockCallback: 每個(gè)異步多塊請求終止時(shí)調(diào)用的公共回調(diào)例程的入口地址

NvMPollingMode: 預(yù)處理器開關(guān),以啟用/禁用NVRAM管理器中的輪詢模式,同時(shí)禁用/啟用底層可使用的回調(diào)函數(shù)

NvMRepeatMirrorOperations: 定義應(yīng)用程序在延遲當(dāng)前作業(yè)之前向NvM模塊的鏡像復(fù)制數(shù)據(jù)或從鏡像復(fù)制數(shù)據(jù)的重試次數(shù)。

NvMSetRamBlockStatusApi: 預(yù)處理器開關(guān),以啟用API NvM_SetRamBlockStatus。

NvMSizeImmediateJobQueue: 定義直接優(yōu)先級作業(yè)隊(duì)列的隊(duì)列條目數(shù)。如果NVM_JOB_PRIORITIZATION被關(guān)閉,則該參數(shù)應(yīng)超出作用范圍。

NvMSizeStandardJobQueue: 定義標(biāo)準(zhǔn)作業(yè)隊(duì)列的隊(duì)列條目數(shù)。

f847c8ac-387d-11ed-ba43-dac502259ad0.png

f8f876e8-387d-11ed-ba43-dac502259ad0.png

6.2NvMBlockDescriptor

NvMBlockCrcType: 定義NVRAM塊的CRC數(shù)據(jù)寬度。默認(rèn)值:NVM_CRC16,即當(dāng)NVM_BLOCK_USE_CRC==為true時(shí),將使用CRC16

NvMBlockHeaderInclude: 定義頭文件,其中NVRAM塊的所有者擁有永久RAM數(shù)據(jù)塊、ROM數(shù)據(jù)塊(如果配置)和每個(gè)配置回調(diào)的回調(diào)函數(shù)原型的聲明。

如果沒有配置永久RAM塊、ROM塊或回調(diào)函數(shù),則該配置參數(shù)將被忽略。

NvMBlockManagementType: 定義NVRAM塊的塊管理類型。

NvMBlockUseAutoValidation: 定義在關(guān)閉階段是否自動(dòng)驗(yàn)證RAM塊。

True:使用了自動(dòng)驗(yàn)證機(jī)制。

False:沒有使用自動(dòng)校驗(yàn)機(jī)制。

NvMBlockUseCrc: 定義NVRAM塊的CRC使用情況,即在RAM和NV內(nèi)存中保留用于CRC的內(nèi)存空間。

true:該NVRAM塊將使用CRC。

false:該NVRAM塊不使用CRC。

NvMBlockUseCRCCompMechanism: 定義在寫作業(yè)期間是否將RAM塊的CRC與最后一個(gè)成功讀或?qū)懽鳂I(yè)期間計(jì)算的CRC進(jìn)行比較。

True:使用比較機(jī)制,

False:沒有使用比較機(jī)制

NvMBlockUseSetRamBlockStatus: 定義改塊是否使用NvMSetRamBlockStatusApi。

注意:如果NvMSetRamBlockStatusApi被禁用,這個(gè)配置參數(shù)將被忽略。

true:調(diào)用該RAM塊的NvMSetRamBlockStatus將設(shè)置該RAM塊的狀態(tài)。

false:該RAM塊的NvMSetRamBlockStatus調(diào)用將被忽略。

NvMBlockUseSyncMechanism: 定義NV塊是否使用帶有RAM鏡像的顯式同步機(jī)制和用于向NvM模塊的RAM鏡像傳輸數(shù)據(jù)的回調(diào)例程。如果使用同步機(jī)制,則為True,否則為false。

NvMBlockWriteProt: 定義NV塊的初始寫保護(hù)

true:啟用塊初始寫保護(hù)。

false:關(guān)閉塊初始寫保護(hù)。

NvMBswMBlockStatusInformation: 此參數(shù)指定是否通知BswM指定塊的當(dāng)前狀態(tài)。

True:在更改時(shí)調(diào)用BswM_NvM_CurrentBlockMode

Fasle:不通知BswM

NvMCalcRamBlockCrc: 定義永久RAM塊或NVRAM塊的CRC(重)計(jì)算,它們被配置為使用顯式同步機(jī)制。

true:這個(gè)永久RAM塊將(重新)計(jì)算CRC。

false:不會(huì)(重新)為這個(gè)永久RAM塊計(jì)算CRC。

NvMInitBlockCallback: 塊特定回調(diào)例程的入口地址,如果沒有ROM數(shù)據(jù)可用于NVRAM塊的初始化,將調(diào)用該回調(diào)例程。如果沒有配置,則不需要調(diào)用特定的回調(diào)例程來初始化具有默認(rèn)數(shù)據(jù)的NVRAM塊。

NvMMaxNumOfReadRetries: 定義讀重試的最大次數(shù)。

NvMMaxNumOfWriteRetries: 定義一個(gè)NVRAM塊的寫重試的最大次數(shù)。無論配置如何,對于請求NvM_WriteAll和NvM_WriteBlock處理的每個(gè)塊,都會(huì)強(qiáng)制執(zhí)行一致性檢查(可能還有寫重試)。

NvMNvBlockLength: 以字節(jié)為單位定義NV塊數(shù)據(jù)長度。

NvMNvBlockNum: 根據(jù)給定的塊管理類型定義連續(xù)區(qū)域內(nèi)多個(gè)NV塊的數(shù)量。1-255用于配置塊管理類型為nvm_block_datasset .1的NVRAM塊配置塊管理類型為NVM_BLOCK_NATIVE的NVRAM 2配置塊管理類型為nvm_block_redundancy的NVRAM

NvMNvramBlockIdentifier: 通過唯一塊標(biāo)識符標(biāo)識NVRAM塊。實(shí)現(xiàn)類型:NvM_BlockIdType。

min = 2 max = 2^(16- NVM_DATASET_SELECTION_BITS)-1預(yù)留NVRAM塊id:

0 ->通過NvM_GetErrorStatus獲得多塊請求結(jié)果

1 ->冗余NVRAM塊,保存配置ID(生成工具應(yīng)該檢查該塊從類型、CRC和大小角度正確配置)

NvMNvramDeviceId: 定義NVRAM塊所在的NVRAM設(shè)備ID。

計(jì)算公式: value = TargetBlockReference.[Ea/Fee]BlockConfiguration.[Ea/Fee]DeviceIndex

NvMRamBlockDataAddress: 定義RAM塊數(shù)據(jù)的起始地址。如果不配置,則沒有永久RAM數(shù)據(jù)塊可用于所選的塊管理類型。

NvMReadRamBlockFromNvCallback: 塊特定回調(diào)例程的入口地址,為了讓應(yīng)用程序?qū)?shù)據(jù)從NvM模塊的鏡像復(fù)制到RAM塊,需要調(diào)用該回調(diào)例程。實(shí)現(xiàn)類型:Std_ReturnType

E_OK:拷貝成功

E_NOT_OK:復(fù)制不成功,將再次調(diào)用回調(diào)例程

NvMResistantToChangedSw: 定義一個(gè)NVRAM塊是否應(yīng)該被處理為抵抗配置更改。如果在配置時(shí)沒有可用的缺省數(shù)據(jù),則應(yīng)用程序應(yīng)負(fù)責(zé)提供缺省初始化數(shù)據(jù)。在這種情況下,應(yīng)用程序必須使用NvM_GetErrorStatus()來區(qū)分第一次初始化和損壞的數(shù)據(jù)。

true: NVRAM塊抵抗更改的軟件。

false: NVRAM塊不抵抗更改的軟件。

NvMRomBlockDataAddress: 定義ROM塊數(shù)據(jù)的起始地址。如果不配置,則所選的塊管理類型沒有可用的ROM塊。

NvMBlockDescriptor: 根據(jù)給定的塊管理類型定義連續(xù)區(qū)域中的多個(gè)ROM塊的數(shù)量。0 ~ 254用于配置塊管理類型為NVM_BLOCK_DATASET的NVRAM塊。

0-1配置塊管理類型為NVM_BLOCK_NATIVE的NVRAM塊0-1配置塊管理類型為nvm_block_redundancy的NVRAM塊。

NvMSelectBlockForFirstInitAll: 定義一個(gè)塊是否由NvM_FirstInitAll處理。即使沒有永久RAM和/或顯式同步,也可以配置塊被處理。

TRUE: block將被NvM_FirstInitAll處理

FALSE:塊不被NvM_FirstInitAll處理

NvMSelectBlockForReadAll: 定義在NvM_ReadAll期間是否處理NVRAM塊。此配置參數(shù)僅對配置為具有永久RAM塊或配置為使用顯式同步機(jī)制的NVRAM塊有影響。

true: NVRAM塊將由NvM_ReadAll處理

false: NvM_ReadAll不處理NVRAM塊

NvMSelectBlockForWriteAll: 定義在NvM_WriteAll期間是否處理NVRAM塊。此配置參數(shù)僅對配置為具有永久RAM塊或配置為使用顯式同步機(jī)制的NVRAM塊有影響。

true: NVRAM塊將由NvM_WriteAll處理

false: NvM_WriteAll不處理NVRAM塊

NvMSingleBlockCallback: 塊特定回調(diào)例程的入口地址,該例程應(yīng)在每個(gè)異步單個(gè)塊請求終止時(shí)調(diào)用

NvMStaticBlockIDCheck: 定義是否啟用靜態(tài)塊ID檢查。

false:禁用靜態(tài)塊ID檢查。

true:啟用靜態(tài)塊ID檢查。

NvMWriteBlockOnce: 定義首次寫后的寫保護(hù)。NVRAM管理器會(huì)在第一次寫入NV塊之后設(shè)置寫保護(hù)位,或者在對NV塊進(jìn)行讀取時(shí),如果該塊已經(jīng)寫入并且檢測到它是有效的和一致的,那么NVRAM管理器就會(huì)設(shè)置寫保護(hù)位。

true:定義首次寫后的寫保護(hù)。

false:定義禁用首次寫后的寫保護(hù)。

NvMWriteRamBlockToNvCallback: 塊特定回調(diào)例程的入口地址,為了讓應(yīng)用程序?qū)?shù)據(jù)從RAM塊復(fù)制到NvM模塊的鏡像,需要調(diào)用該回調(diào)例程。實(shí)現(xiàn)類型:Std_ReturnType

E_OK:拷貝成功

E_NOT_OK:復(fù)制不成功,將再次調(diào)用回調(diào)例程

NvMWriteVerification: 定義是否啟用寫驗(yàn)證。

false:關(guān)閉寫校驗(yàn)。

true:啟用寫校驗(yàn)功能。

f950ac6e-387d-11ed-ba43-dac502259ad0.png

f9cf1f40-387d-11ed-ba43-dac502259ad0.png

fa006d84-387d-11ed-ba43-dac502259ad0.png




審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • AUTOSAR
    +關(guān)注

    關(guān)注

    10

    文章

    349

    瀏覽量

    21446
  • NVRAM
    +關(guān)注

    關(guān)注

    0

    文章

    10

    瀏覽量

    11313
  • API接口
    +關(guān)注

    關(guān)注

    1

    文章

    82

    瀏覽量

    10420

原文標(biāo)題:AUTOSAR存儲協(xié)議棧-- NVRAM Manager 模塊介紹(三)

文章出處:【微信號:汽車電子嵌入式,微信公眾號:汽車電子嵌入式】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    可擴(kuò)展PMIC NVM更新指南

    電子發(fā)燒友網(wǎng)站提供《可擴(kuò)展PMIC NVM更新指南.pdf》資料免費(fèi)下載
    發(fā)表于 09-06 11:20 ?0次下載
    可擴(kuò)展PMIC <b class='flag-5'>NVM</b>更新指南

    TPS65219 NVM編程指南

    電子發(fā)燒友網(wǎng)站提供《TPS65219 NVM編程指南.pdf》資料免費(fèi)下載
    發(fā)表于 08-28 10:53 ?0次下載
    TPS65219 <b class='flag-5'>NVM</b>編程指南

    8線卡接式配線模塊詳細(xì)介紹

    8線卡接式配線模塊,也稱為8對卡接模塊,是一種用于通信系統(tǒng)的配線設(shè)備,主要用于引入和連接單股銅芯塑料線纜,提供用戶間或設(shè)備間的通信配線及防護(hù)。以下是對8線卡接式配線模塊詳細(xì)
    的頭像 發(fā)表于 08-07 09:53 ?278次閱讀

    插片式遠(yuǎn)程 IO模塊:Profinet總線耦合器在SIMATIC Manager配置

    XD9000是Profinet總線耦合器,單個(gè)耦合器最多可擴(kuò)展32個(gè)I/O模塊!本文將詳細(xì)介紹如何在SIMATIC Manager中配置插片式遠(yuǎn)程 I/O
    的頭像 發(fā)表于 07-12 18:25 ?813次閱讀
    插片式遠(yuǎn)程 IO<b class='flag-5'>模塊</b>:Profinet總線耦合器在SIMATIC <b class='flag-5'>Manager</b>配置

    96口模塊式光纖配線架詳細(xì)介紹來了

    96口模塊式光纖配線架是一種用于光纖通信系統(tǒng)中的關(guān)鍵設(shè)備,主要用于光纖的配線、管理和保護(hù)。以下是關(guān)于96口模塊式光纖配線架的詳細(xì)介紹: 型號與規(guī)格: 型號:通常根據(jù)具體的廠家和產(chǎn)品系列
    的頭像 發(fā)表于 06-26 09:52 ?374次閱讀

    DC電源模塊的分類及特點(diǎn)介紹

    BOSHIDA DC電源模塊的分類及特點(diǎn)介紹 DC電源模塊是一種將交流電轉(zhuǎn)換為直流電的設(shè)備,廣泛應(yīng)用于各種電子設(shè)備中。根據(jù)其特點(diǎn)和功能,DC電源模塊可以分為線性穩(wěn)壓
    的頭像 發(fā)表于 03-26 13:54 ?579次閱讀
    DC電源<b class='flag-5'>模塊</b>的分類及特點(diǎn)<b class='flag-5'>介紹</b>

    詳細(xì)的光模塊介紹

    模塊是一種重要的通信網(wǎng)絡(luò)組成部分,實(shí)現(xiàn)光信號與電信號之間的轉(zhuǎn)換。它包括發(fā)射器和接收器,用于提高數(shù)據(jù)傳輸和距離。光模塊根據(jù)傳輸速率、封裝形式和傳輸距離進(jìn)行分類。在通信網(wǎng)絡(luò)中,光模塊用于高速、遠(yuǎn)距離的光信號傳輸和轉(zhuǎn)換。
    的頭像 發(fā)表于 03-18 11:24 ?2012次閱讀

    請問cyw20719b2的nvram的存儲空間有多少字節(jié)?

    1)請問cyw20719b2的nvram 的存儲空間有多少字節(jié)? 2)用wiced_hal_write_nvram()或wiced_hal_read_nvram()從nvram 寫入或
    發(fā)表于 03-01 12:42

    重裝PsoC4.2后, 提示沒有安裝Update Manager是為什么?

    重裝PsoC 4.2后, 提示 沒有安裝Update Manager, 得到錯(cuò)誤信息. 請問如何安裝 Update Manager
    發(fā)表于 02-21 08:09

    詳細(xì)介紹變頻器假負(fù)載的原理、應(yīng)用和注意事項(xiàng)

    在變頻器的應(yīng)用中,假負(fù)載是一種重要的輔助設(shè)備,主要用于測試和保護(hù)變頻器模塊。本文將詳細(xì)介紹變頻器假負(fù)載的原理、應(yīng)用和注意事項(xiàng)。
    的頭像 發(fā)表于 01-25 09:09 ?2325次閱讀
    <b class='flag-5'>詳細(xì)</b><b class='flag-5'>介紹</b>變頻器假負(fù)載的原理、應(yīng)用和注意事項(xiàng)

    NVM和本地\"內(nèi)存中定義數(shù)組(靜態(tài) /global /local)的\"關(guān)鍵字是什么?

    NVM 和本地\"內(nèi)存中定義數(shù)組(靜態(tài) /global /local)的\"關(guān)鍵字是什么? 還有與 32 位對齊的關(guān)鍵字怎么樣。
    發(fā)表于 01-25 07:52

    分析Autosar架構(gòu)下的NVM源碼

    Autosar(Automotive Open System Architecture)是一種用于汽車電子系統(tǒng)開發(fā)的開放式架構(gòu)標(biāo)準(zhǔn),旨在提供一種用于構(gòu)建可靠、安全的分布式系統(tǒng)的框架。其中,NVM
    的頭像 發(fā)表于 12-08 13:56 ?1409次閱讀

    NVRAM與NVSRAM的共性跟區(qū)別簡析

    NVSRAM和NVRAM都涉及非易失性存儲技術(shù),但它們在實(shí)現(xiàn)方式和應(yīng)用方面有一些區(qū)別。
    的頭像 發(fā)表于 12-05 10:55 ?1367次閱讀

    NI Package Manager創(chuàng)建程序包

    在安裝了PackageManager的任何系統(tǒng)上安裝單個(gè)程序包。 雙擊程序包,打開Package Manager。 按照安裝提示完成安裝。 這是LabVIEW的一個(gè)功能介紹,更多的使用方法與開發(fā)案例,歡迎登錄官網(wǎng),了解更多信息。有需要LabVIEW項(xiàng)目合作開發(fā),請與我們
    發(fā)表于 11-19 20:11

    混合NVM/DRAM平臺上的內(nèi)存帶寬調(diào)節(jié)策略

    隨著相變存儲器 (PCM)、STT-MRAM、憶阻器和英特爾的 3D-XPoint 等技術(shù)的快速發(fā)展,高速的、可字節(jié)尋址的新興 NVM 的產(chǎn)品逐漸涌現(xiàn)于市場中
    的頭像 發(fā)表于 11-14 09:28 ?1281次閱讀
    混合<b class='flag-5'>NVM</b>/DRAM平臺上的內(nèi)存帶寬調(diào)節(jié)策略