AutoSAR配置与实践(实践篇)13.6 如何添加一个NVM BLOCK (PIM类型)

news2024/11/28 22:32:49

AutoSAR配置与实践(实践篇)13.1 如何添加一个NVM BLOCK

  • 如何添加一个NVM BLOCK (PIM类型)
  • 一、PIM(PerInstanceMemory)简介
  • 二、PIM添加步骤
    • 2.1 总体思路
    • 2.2 DEV工程步骤
    • 2.3 CFG工程步骤

如何添加一个NVM BLOCK (PIM类型)

->返回总目录<-

一、PIM(PerInstanceMemory)简介

  • NvM提供了NvM_ReadPRAMBlock/NvM_WritePRAMBlock一对API可以对这个固定地址(永久地址)的RAM块进行读写操作。配置这样的地址,我们称之为PerInstanceMemory(PIM),它存在于RTE中,SWC可以通过Rte_Pim接口访问。

  • 与Nv Block Descriptor类型的差异在于PIM类型适用于单个SWC访问,而Descriptor类型一般是多个SWC共同访问一个Block。两种类型的优劣势在之前有介绍,不清楚的可以回头看看7.5章节的介绍。

  • 如果用户在某些情况下还是想使用临时地址用来作NvM请求,仍旧可以通过NvM_ReadBlock/NvM_WriteBlock接口来实现。

二、PIM添加步骤

2.1 总体思路

使用方SWC:
App_Swc 即用户模块。需要新建SWC、Runnable、PIM存储区及NVM ports(Client类型)。同时将ports通过access point关联到Runnable的以便使用。

提供方BSW模块:
NVM标准模块。当App_Swc创建ServiceNeed之后,NVM模块自动生成Ports(Service类型)并映射。

2.2 DEV工程步骤

  1. 新建C/S接口
    NVM_swc中新建一个C/S类型接口,同时在接口中定义函数原型
    具体NVM函数解释:
    Erase: 擦除接口
    GetErrorStatus: 获取NVM错误状态接口
    InvalidateNvBlock: 读写失败时,使NVMBLock无效
    NvM_ReadBlock: 读Block
    NvM_WriteBlock: 写Block
    NvM_SetRamBlockStatus: 设置Block标志,以便ShutDown阶段通过Writeall写入。
    NvM_RestoreBlockDefaults: 把ROM默认数据拷贝到RAM
    在这里插入图片描述

2.新建SWC(App_Swc) ,在SWC内部创建Service Ports(实例化C/S接口)

在这里插入图片描述
3.新建标定参数,这个主要是定义数据的初值

在这里插入图片描述
4.在ServiceNeed中创建NvMBlockNeeds,Block属性和port属性
Default Value:即第3步定义的初值

在这里插入图片描述

5.定义Addressing Method

这就是一个分区字段,生成代码后,可以根据用户需求,将字段定义在普通RAM或者RRAM(休眠唤醒不掉电)。若配置成RRAM可以优化启动时间,有兴趣的可以查看实践篇的NVM 时间优化。

在这里插入图片描述
6.创建一个PIM类型的存储区(PIM)

Data Type: PIM的数据类型,一般为Array数组,定义存储长度
Addressing Method: 存储策略,链接哪个字段

在这里插入图片描述
7.在SWC内部创建runnable,并在其中添加AccessPoint, 包括读取、写入和获取错误状态接口

在这里插入图片描述
8.保存DEV工程

2.3 CFG工程步骤

1.DEV工程保存后在Cfg工程下点击同步数据

2.修改Fee下的写入参数
在这里插入图片描述

3.修改NVM模块的写入参数

  • 配置长度等信息
  • 注意RAM、ROM block是从Develop自动同步的, 不用做修改。
    若名称出现”To be defined by RTE”, 点击Cfg生成代码后即可加载为正常的名称
    在这里插入图片描述
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1008313.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

用 Github Codespaces 免费搭建本地开发测试环境

如何丝滑地白嫖一个本地开发环境&#xff1f;怎么新建一个代码空间&#xff1f; 1&#xff1a;通过Github网页新建2&#xff1a;通过VSCode插件新建 为代码创建相应的开发测试环境 如何丝滑地白嫖一个本地开发环境&#xff1f; 使用Codespaces为开发者解决这样的痛点&#xf…

安装chromadb遇到的问题与python3升级

环境&#xff1a; python 3.10 &#xff0c; centos 7.x 使用 pip3 install chromadb 时&#xff0c;遇到以下问题。 问题1: gcc note: This error originates from a subprocess, and is likely not a problem with pip. ERROR: Failed building wheel for chroma-hnswlib F…

《PostgreSQL与MySQL:详细对比与分析》

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f405;&#x1f43e;猫头虎建议程序员必备技术栈一览表&#x1f4d6;&#xff1a; &#x1f6e0;️ 全栈技术 Full Stack: &#x1f4da…

【Java 基础篇】Java 比较器排序:精通自定义对象排序

在 Java 编程中&#xff0c;排序是一个非常常见且重要的操作。Java 提供了多种排序机制&#xff0c;其中之一就是使用比较器&#xff08;Comparator&#xff09;进行排序。比较器允许您自定义对象的排序方式&#xff0c;使您能够实现各种排序需求&#xff0c;从简单的对象排序到…

stm32---定时器输入捕获

一、输入捕获介绍 在定时器中断实验章节中我们介绍了通用定时器具有多种功能&#xff0c;输入捕获就是其中一种。 STM32F1除了基本定时器TIM6和TIM7&#xff0c;其他定时器都具有输入捕获功能 。输入捕获可以对输入的信号的上升沿&#xff0c;下降沿或者双边沿进行捕获&#xf…

分享一个基于微信小程序的医院口腔助手小程序 牙科诊所预约小程序 源码 lw 调试

&#x1f495;&#x1f495;作者&#xff1a;计算机源码社 &#x1f495;&#x1f495;个人简介&#xff1a;本人七年开发经验&#xff0c;擅长Java、Python、PHP、.NET、微信小程序、爬虫、大数据等&#xff0c;大家有这一块的问题可以一起交流&#xff01; &#x1f495;&…

【实战详解】如何快速搭建接口自动化测试框架?Python + Requests

摘要&#xff1a; 本文主要介绍如何使用Python语言和Requests库进行接口自动化测试&#xff0c;并提供详细的代码示例和操作步骤。希望能对读者有所启发和帮助。 前言 随着移动互联网的快速发展&#xff0c;越来越多的应用程序采用Web API&#xff08;也称为RESTful API&…

记录selenium和chrome使用socks代理打开网页以及查看selenium的版本

使用前&#xff0c;首先打开socks5全局代理。 之前我还写过一篇关于编程中使用到代理的情况&#xff1a; 记录一下python编程中需要使用代理的解决方法_python 使用全局代理_小小爬虾的博客-CSDN博客 在本文中&#xff0c;首先安装selenium和安装chrome浏览器。 参考我的文章…

无涯教程-JavaScript - INFO函数

描述 INFO函数返回有关当前操作环境的信息。 语法 INFO (type_text) 争论 Argument描述Required/OptionalType_text 指定要返回的信息类型的文本。 下表给出了Type_text的值和相应的返回信息。 Required Type_text 返回的信息"目录" 当前目录或文件夹的路径。&qu…

ELK学习笔记1:简介及安装

ELK学习笔记1&#xff1a;简介及安装 ELK的简介 ELK是三个开源软件的缩写&#xff0c;分别表示&#xff1a;Elasticsearch , Logstash, Kibana , 它们都是开源软件。新增了一个FileBeat&#xff0c;它是一个轻量级的日志收集处理工具(Agent)&#xff0c;Filebeat占用资源少&a…

LeetCode-热题100-笔记-day27

2. 二叉树的层序遍历https://leetcode.cn/problems/binary-tree-level-order-traversal/ 给你二叉树的根节点 root &#xff0c;返回其节点值的 层序遍历 。 &#xff08;即逐层地&#xff0c;从左到右访问所有节点&#xff09;。 示例 1&#xff1a; 输入&#xff1a;root [3…

面试问题总结(2)

(꒪ꇴ꒪ )&#xff0c;Hello我是祐言QAQ我的博客主页&#xff1a;C/C语言&#xff0c;数据结构&#xff0c;Linux基础&#xff0c;ARM开发板&#xff0c;网络编程等领域UP&#x1f30d;快上&#x1f698;&#xff0c;一起学习&#xff0c;让我们成为一个强大的攻城狮&#xff0…

SpringMVC之JSON数据返回异常处理机制

目录 前言 一、JSON数据返回 1.导入依赖 2.配置spring-mvc.xml 3.使用ResponseBody注解 4.Jackson 4.1.介绍 4.2.常用注解 二、异常处理机制 1.为什么要全局异常处理 2.异常处理思路 3.SpringMVC异常分类 4.综合案例 4.1.异常处理方式一 4.2.异常处理方式二 4.3…

《PostgreSQL事务管理深入解析》

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f405;&#x1f43e;猫头虎建议程序员必备技术栈一览表&#x1f4d6;&#xff1a; &#x1f6e0;️ 全栈技术 Full Stack: &#x1f4da…

分类预测 | Matlab实现GRNN-Adaboost多特征分类预测

分类预测 | Matlab实现GRNN-Adaboost多特征分类预测 目录 分类预测 | Matlab实现GRNN-Adaboost多特征分类预测效果一览基本介绍研究内容程序设计参考资料 效果一览 基本介绍 1.Matlab实现GRNN-Adaboost多特征分类预测&#xff08;Matlab完整程序和数据&#xff09; 2.多特征输入…

【Redis】Redis作为缓存

【Redis】Redis常见面试题&#xff08;2&#xff09; 文章目录 【Redis】Redis常见面试题&#xff08;2&#xff09;1. 缓存2. Redis作为缓存2.1 缓存雪崩2.2 缓存穿透2.3 缓存击穿2.4 缓存雪崩、缓存穿透、缓存击穿的区别2.5 缓存预热2.6 如何保证缓存和MySQL双写一致 【Redis…

阿里云产品试用系列-云服务器 ECS

阿里云为个人开发者或者企业用户提供云产品的免费试用&#xff0c;本文主要描述ECS云服务器试用体验。 如上所示&#xff0c;在阿里云官方网站中&#xff0c;可使用云服务器ECS构建应用服务。 如上所示&#xff0c;在阿里云控制台中&#xff0c;可以显示成功定制免费使用阿里云…

锂离子电池和电池组安全使用指南

声明 本文是学习GB-T 42729-2023 锂离子电池和电池组安全使用指南. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本文件提供了锂离子电池和电池组使用过程中的安全指导和建议&#xff0c;给出了锂离子电池和电池组制 造厂商向用户提供可能…

【ShardingSphere】单实例模式创建分片表、广播表、单表

文章目录 1、简介2、ShardingSphere-Proxy 默认行为2.1 安装2.2 启动 3、设计测试环境3.1 架构3.2 数据映射关系 4、 准备工作4.1 配置 server.yaml4.2 配置 config-logic_db.yaml4.3 创建数据源所配置的物理库4.3.1 ds_0、ds_14.3.2 ds_2 4.4 启动4.5 &#xff08;可选&#x…

4基于pytorch的蚁群算法求解TSP(旅行商问题),访问一座城市并回到最初位置的最佳路径,解决组合中的NP问题。程序已调通,替换自己的数据可以直接运行。

基于pytorch的蚁群算法求解TSP(旅行商问题)&#xff0c;访问一座城市并回到最初位置的最佳路径&#xff0c;解决组合中的NP问题。程序已调通&#xff0c;替换自己的数据可以直接运行。 4pytorchTSP路径优化 (xiaohongs4pytorchTSP路径优化 (xiaohongshu.com)4pytorchTSP路径优化…