前言
存儲協(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ì)介紹篇(三)。
正文
4.API詳解
如下表所示,NVM的API接口主要分為幾大類型。
4.1同步請求函數(shù) Synchronous requests
4.1.1NvM_Init
函數(shù)原型:
void NvM_Init(
const NvM_ConfigType* ConfigPtr
)
函數(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
)
函數(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
)
函數(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
)
函數(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必需的接口
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
5.1.2 NvM_Mirror
5.1.3 NvM_NotifyInitBlock
5.1.4 NvM_NotifyJobFinished
5.1.5 NvM_Service
5.2 Implementation Data Types
5.2.1 NvM_RequestResultType
5.2.2 NvM_BlockIdType
5.2.3 ConstVoidPtr
5.3 Ports
5.3.1 NvM_PAdmin_{Block}
5.3.2 NvM_PM_{Block}
5.3.3 NvM_PNIB_{Block}
5.3.4 NvM_PNJF_{Block}
5.3.5 NvM_PS_{Block}
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)目中基本不配置。
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ù)。
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)功能。
審核編輯:劉清
-
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)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論