目录
- 关键词
- 平台说明
- 背景
- 一、需求
- 二、配置
- 2.1 NvMBlockDescriptors
- 2.2 NvMFeeRef
- 2.3 FeeBlockConfigurations
- 三、code
- 3.1 声明和定义
- 3.2 调试
关键词
嵌入式、C语言、autosar、OS、BSW
平台说明
项目 | Value |
---|---|
OS | autosar OS |
autosar厂商 | vector , EB |
芯片厂商 | TI 英飞凌 |
编程语言 | C,C++ |
编译器 | HighTec (GCC) |
autosar版本 | 4.3.1 |
>>>>>>>>>>>>>>>>>>>>>>>>>回到总目录<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
背景
创建一个简单的Native block 并且调试其读写。
- 调试工具:劳特巴赫
- 配置工具:vector 工具链
一、需求
创建一个NVRAMblock,
- 大小为1byte,
- short name为NvM_cluster3,
- NvMRamBlockDataAddress 为RamBlock_NvM_cluster3
- NvMRomBlockDataAddress 为NvMRamBlockDataAddress
- NvMBlockManagementType 为NATIVE
- 使用write_all ,read_all.
二、配置
2.1 NvMBlockDescriptors
2.2 NvMFeeRef
2.3 FeeBlockConfigurations
block size 为5 的原因是 开启了crc32 校验,占用了4个byte。
三、code
在NvM_Cfg.c生成
3.1 声明和定义
在NvM_Cfg.c中包含一个.h文件,,h文件中声明RamBlock_NvM_cluster3和RomBlock_NvM_cluster3。
typedef struct __attribute__((packed))
{
uint8 NVM_cluster3data[1];
}RamBlock_NvM_cluster3data_S;
extern RamBlock_NvM_cluster3data_S RamBlock_NvM_cluster3;
extern const RamBlock_NvM_cluster3data_S RomBlock_NvM_cluster3;
在另一个.C文件中 定义
RamBlock_NvM_cluster3data_S RamBlock_NvM_cluster3 = {0};
const RamBlock_NvM_cluster3data_S RomBlock_NvM_cluster3 = {0};
3.2 调试
创建一个10ms 周期task,在task_10ms.c中定义
uint8 NVM_test_flag_u8_D = 0U;
uint8 NVM_read_D = 0U;
NVM_test_flag_u8_D用于在劳特巴赫中控制写入和读取nvblock。
NVM_read_D用于保存从NVblock中读取的值。
if(NVM_test_flag_u8_D == 2)
{
NVM_test_flag_u8_D =0;
NvM_ReadBlock(NvMConf_NvMBlockDescriptor_NvM_cluster3,&NVM_read_D);
}
else if(NVM_test_flag_u8_D == 3)
{
NVM_test_flag_u8_D = 0;
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,则表示存储成功。
>>>>>>>>>>>>>>>>>>>>>>>>>回到总目录<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<