当前位置: 首页 > news >正文

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

目录

  • 关键词
  • 平台说明
  • 背景
  • 一、需求
  • 二、配置
    • 2.1 NvMBlockDescriptors
    • 2.2 NvMFeeRef
    • 2.3 FeeBlockConfigurations
  • 三、code
    • 3.1 声明和定义
    • 3.2 调试

  

关键词

嵌入式、C语言、autosar、OS、BSW

平台说明

项目Value
OSautosar 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
{}

调试步骤:

    1. 劳特巴赫中修改NVM_test_flag_u8_D == 3,将66写入NvMConf_NvMBlockDescriptor_NvM_cluster3中。
    1. 下电。
    1. 上电。
  • 4.在劳特巴赫中修改NVM_test_flag_u8_D ==2,如果成功读取到NVM_read_D =66,则表示存储成功。

>>>>>>>>>>>>>>>>>>>>>>>>>回到总目录<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

相关文章:

  • StarRocks实战——华米科技埋点分析平台建设
  • 中文Mistral模型介绍(Chinese-Mistral)——中文大语言模型
  • 嵌入式软件面试---编程基础篇
  • 深入理解npm常用命令
  • 【c语言】自定义类型:枚举类型【详解】
  • Flutter与iOS和Android原生页面交互
  • 技术详解 | 黑客如何通过PDF文件分发恶意软件
  • 基于java的电影院售票网站
  • ajax的优缺点有哪些?
  • 每日一题:用c语言中指针实现除2操作
  • Centos7安装Docker与Docker-compose【图文教程】
  • Flutter iOS上架指南
  • 【JAVAEE学习】探究Java中多线程的使用和重点及考点
  • Python语言例题集(010)
  • 苍穹外卖07(缓存菜品,SpringCache,缓存套餐,添加购物车菜品和套餐多下单,查看购物车,清除购物车,删除购物车中一个商品)
  • Angular 2 DI - IoC DI - 1
  • C# 免费离线人脸识别 2.0 Demo
  • Codepen 每日精选(2018-3-25)
  • GraphQL学习过程应该是这样的
  • python学习笔记-类对象的信息
  • rc-form之最单纯情况
  • React 快速上手 - 06 容器组件、展示组件、操作组件
  • Solarized Scheme
  • vue2.0开发聊天程序(四) 完整体验一次Vue开发(下)
  • 大快搜索数据爬虫技术实例安装教学篇
  • 仿天猫超市收藏抛物线动画工具库
  • 紧急通知:《观止-微软》请在经管柜购买!
  • 悄悄地说一个bug
  • 终端用户监控:真实用户监控还是模拟监控?
  • 最简单的无缝轮播
  • linux 淘宝开源监控工具tsar
  • 蚂蚁金服CTO程立:真正的技术革命才刚刚开始
  • ​ 轻量应用服务器:亚马逊云科技打造全球领先的云计算解决方案
  • ​MySQL主从复制一致性检测
  • # Swust 12th acm 邀请赛# [ A ] A+B problem [题解]
  • #define用法
  • #include<初见C语言之指针(5)>
  • #绘制圆心_R语言——绘制一个诚意满满的圆 祝你2021圆圆满满
  • #微信小程序:微信小程序常见的配置传值
  • $GOPATH/go.mod exists but should not goland
  • (2)STL算法之元素计数
  • (2021|NIPS,扩散,无条件分数估计,条件分数估计)无分类器引导扩散
  • (C语言)共用体union的用法举例
  • (C语言)输入一个序列,判断是否为奇偶交叉数
  • (办公)springboot配置aop处理请求.
  • (附源码)计算机毕业设计SSM疫情下的学生出入管理系统
  • (黑客游戏)HackTheGame1.21 过关攻略
  • (三) prometheus + grafana + alertmanager 配置Redis监控
  • (十一)JAVA springboot ssm b2b2c多用户商城系统源码:服务网关Zuul高级篇
  • (实战)静默dbca安装创建数据库 --参数说明+举例
  • (转)AS3正则:元子符,元序列,标志,数量表达符
  • (转)fock函数详解
  • (转)VC++中ondraw在什么时候调用的
  • (转)程序员技术练级攻略
  • (自用)learnOpenGL学习总结-高级OpenGL-抗锯齿