[AutoSar]BSW_Memory_Stack_004 创建一个简单NV block并调试

📅 2026/8/22 12:19:50
[AutoSar]BSW_Memory_Stack_004 创建一个简单NV block并调试
目录关键词平台说明背景一、需求二、配置2.1 NvMBlockDescriptors2.2 NvMFeeRef2.3 FeeBlockConfigurations三、code3.1 声明和定义3.2 调试关键词嵌入式、C语言、autosar、OS、BSW平台说明项目ValueOSautosar OSautosar厂商vector EB芯片厂商TI 英飞凌编程语言CC编译器HighTec (GCC)autosar版本4.3.1回到总目录背景创建一个简单的Native block 并且调试其读写。调试工具劳特巴赫配置工具vector 工具链一、需求创建一个NVRAMblock大小为1byteshort name为NvM_cluster3NvMRamBlockDataAddress 为RamBlock_NvM_cluster3NvMRomBlockDataAddress 为NvMRamBlockDataAddressNvMBlockManagementType 为NATIVE使用write_all ,read_all.二、配置2.1 NvMBlockDescriptors2.2 NvMFeeRef2.3 FeeBlockConfigurationsblock size 为5 的原因是 开启了crc32 校验占用了4个byte。三、code在NvM_Cfg.c生成3.1 声明和定义在NvM_Cfg.c中包含一个.h文件,h文件中声明RamBlock_NvM_cluster3和RomBlock_NvM_cluster3。typedefstruct__attribute__((packed)){uint8 NVM_cluster3data[1];}RamBlock_NvM_cluster3data_S;externRamBlock_NvM_cluster3data_S RamBlock_NvM_cluster3;externconstRamBlock_NvM_cluster3data_S RomBlock_NvM_cluster3;在另一个.C文件中 定义RamBlock_NvM_cluster3data_S RamBlock_NvM_cluster3{0};constRamBlock_NvM_cluster3data_S RomBlock_NvM_cluster3{0};3.2 调试创建一个10ms 周期task在task_10ms.c中定义uint8 NVM_test_flag_u8_D0U;uint8 NVM_read_D0U;NVM_test_flag_u8_D用于在劳特巴赫中控制写入和读取nvblock。NVM_read_D用于保存从NVblock中读取的值。if(NVM_test_flag_u8_D2){NVM_test_flag_u8_D0;NvM_ReadBlock(NvMConf_NvMBlockDescriptor_NvM_cluster3,NVM_read_D);}elseif(NVM_test_flag_u8_D3){NVM_test_flag_u8_D0;RamBlock_NvM_cluster3.NVM_cluster3data[0]66;NvM_WriteBlock(NvMConf_NvMBlockDescriptor_NvM_cluster3,NULL_PTR);}else{}调试步骤劳特巴赫中修改NVM_test_flag_u8_D 3将66写入NvMConf_NvMBlockDescriptor_NvM_cluster3中。下电。上电。4.在劳特巴赫中修改NVM_test_flag_u8_D 2如果成功读取到NVM_read_D 66则表示存储成功。回到总目录