AUTOSAR NvM协议栈集成方法

news2024/9/25 21:27:29

一、涉及的模块

Bsw:NvM、MemIf、Fee、Crc
Mcal:Fls

其中一些芯片厂商的MCAL也会提供Fee模块,本文选择使用ETAS提供的Fee模块,好处是Fee的Block不需要手动配,在NvM中配好了Block之后,生成Bsw代码的同时会自送生成Fee的Block。

二、各模块间的交互关系

1. 初始化

上述模块中三个模块需要初始化,初始化顺序如下:

	Fls_Init(&Fls_ConfigRoot[0]);
    Fee_Init (NULL_PTR);
    NvM_Init();

2. MainFunction

以下两个MainFunction需要被周期性调用:

    NvM_MainFunction();
    MemIf_Rb_MainFunction();

调用周期在下面的位置可以配,在NvM模块中配好后,MemIf的调用周期会自动生成:
在这里插入图片描述
在这里插入图片描述
在MemIf中可以配置是否使用ETAS的Fee模块,如果配置为使用,那么在MemIf的MainFunction中会周期调用 Fee_MainFunction 和 Fls_MainFunction,如下:

#if (defined(MEMIF_FEE_USED) && (MEMIF_FEE_USED == STD_ON))
        Fee_MainFunction();
        Fls_MainFunction();
#endif

3.BSW和MCAL之间的交互

下图展示了上述四个模块间是如何传递状态信息的,使用的是同步调用方式:
在这里插入图片描述

Fee模块会调用Fls模块中的下列接口:

Fls_MainFunction      
Fls_Read                
Fls_Write               
Fls_Erase               
Fls_Compare             
Fls_BlankCheck          
Fls_GetJobResult        
Fls_ControlTimeoutDet   

三、DFlash特性

本文以英飞凌TC234为例。DFlash地址范围为0xAF000000-0xAF01FFFF,共128K。Fls模块相关配置如下:
在这里插入图片描述
DFlash的最小擦除单位是8K,最小写入单位是8字节。FlsTotalSize可以比实际的DFlash小,但要保证是16K的倍数,因为整块DFlash要被均分为两个Sector,每个Sector必须是8K的倍数。
与写入的最小单位相关的有以下配置项:
在这里插入图片描述

四、配置

1.NvM大小

上文我们说过FlsTotalSize这个配置项代表用于模拟EEPROM的DFlash的大小,除此之外Fls模块中还需要配置一个FlsSector,TC234这几个配置项都是固定的,不允许改动,实测这里的FlsSectorSize没有作用,生成代码的时候是把FlsTotalSize/2作为每个Sector的大小。

在这里插入图片描述
需要注意的是Fee中的FeeSector大小需要根据FlsSector的大小进行配置,即配置为FlsTotalSize/2,本次我配置的FlsTotalSize为0x18000
在这里插入图片描述

2. NvMCrcNumOfBytes

注意一下这个参数,要配的大一点,不然写入长度较大的数据的时候时间会很长。
在这里插入图片描述

3.两个基础Block

NvM中有两个Block是必须要配的,是NvM协议栈内部用的,如下:
在这里插入图片描述
在这里插入图片描述
其中第一个用于NvM_WriteAll()和NvM_ReadAll这两个操作。第二个是存储NvM内部使用的一个ConfigID。

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

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

相关文章

c语言——查找特定字符在字符串中出现的次数

fgets 函数用于从标准输入(stdin)中读取一行字符串, 并将其存储在指定的字符数组 str 中。 sizeof str/sizeof str[0] 是用来计算字符数组 str 的大小。 这个表达式计算的结果是字符数组 str 可以容纳的元素个数(包括…

linux vscode 下开发

linux vscode 下开发 javajdk插件 java jdk 各种JAVA JDK的镜像分发 编程宝库 - 技术改变世界 jdk 镜像 ubuntu22.04 安装 # Linux x64 64位 jdk-8u351-linux-x64.tar.gztar -zxf jdk-8u351-linux-x64.tar.gz mv jdk1.8.0_351 jdk8/ vim ~/.profile expo…

KEY接口ESD静电保护器件:DW05D5BC-B-E和DW05MS-S

静电在我们日常生活中,可谓是无处不在,我们身上和周围环境就带有很高的静电电压。都知道,ESD静电放电会对电子设备带来威胁甚至损坏。为此,电子设备中按键部位、接口部位以及触摸屏等防静电保护措施是非常有必要的。针对按键KEY接…

Java网络编程(一)网络基础

概述 计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统、网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递 网络分类 局域网(LAN) 局域网是一种在小区域内使用的,由多台计算机组成的网络,覆盖范围…

如何使用Python获取SAP Temporary key 临时密钥

什么是Sap 临时密钥? SAP 临时密钥是用于激活 SAP 软件的一种许可证,只能在有限的时间内使用。这些密钥可用于评估目的或在系统迁移期间使用。它们是临时解决方案,通常在一定时间后过期。 如何获取Sap Temporary keys? 临时密钥: 如果创建…

Web网页浏览器远程访问jupyter notebook服务器【内网穿透】

文章目录 前言1. Python环境安装2. Jupyter 安装3. 启动Jupyter Notebook4. 远程访问4.1 安装配置cpolar内网穿透4.2 创建隧道映射本地端口 5. 固定公网地址 前言 Jupyter Notebook,它是一个交互式的数据科学和计算环境,支持多种编程语言,如…

【仿写tomcat】五、响应静态资源(访问html页面)、路由支持以及多线程改进

访问html页面 如果我们想访问html页面其实就是将本地的html文件以流的方式响应给前端即可,下面我们对HttpResponseServlet这个类做一些改造 package com.tomcatServer.domain;import com.tomcatServer.utils.ScanUtil;import java.io.IOException; import java.io…

全国产EtherCAT运动控制边缘控制器(二):统一的上位机API接口

上节课程我们介绍了全国产EtherCAT运动控制边缘控制器ZMC432H的硬件接口与功能,本节课程我们主要讲解一下正运动API函数封装原理以及自定义API封装例程。 一、功能简介 全国产EtherCAT运动控制边缘控制器ZMC432H是正运动的一款软硬件全国产自主可控,运…

Genoss GPT简介:使用 Genoss 模型网关实现多个LLM模型的快速切换与集成

一、前言 生成式人工智能领域的发展继续加速,大型语言模型 (LLM) 的用途范围不断扩大。这些用途跨越不同的领域,包括个人助理、文档检索以及图像和文本生成。ChatGPT 等突破性应用程序为公司进入该领域并开始使用这项技术进行构建铺平了道路。 大公司正…

SOLIDWORKS有限元分析

SOLIDWORKS是一款广泛使用的三维计算机辅助设计软件,同时它还具有强大的有限元分析功能。有限元分析是一种工程分析方法,它将复杂的实体分解成许多小的有限元素,以便对其进行数学建模和分析。SOLIDWORKS的有限元分析功能可以帮助工程师预测和…

nbcio-boot3.1 解决积木报表基于SSTI的任意代码执行漏洞,积木报表版本从1.4.0升级到最新的1.6.1

1、积木报表基于SSTI的任意代码执行漏洞 使用JeecgBoot 受影响版本中由于积木报表 /jeecg-boot/jmreport/queryFieldBySql Api接口未进行身份校验,使用 Freemarker 处理用户用户传入的 sql 参数,未经授权的攻击者可发送包含恶意 sql 参数的 http 请求&am…

vue3动态组件

1 、 可以通过 shallowRef 把 可以把组件进行包裹 <template><div><el-button click"setclick(son1)">1111</el-button><el-button click"setclick(son2)">2222</el-button><el-button click"setclick(son…

数字变有趣,分析师的必备利器——奥威BI数据可视化工具

数据分析不仅要在短时间内把数据情况摸清、把数据关联梳理清楚&#xff0c;还需要以一直直观易懂的方式将数据信息准确传递给使用者&#xff0c;便于使用者利用这些数据信息去决策管理&#xff0c;这就是数据可视化。说到这&#xff0c;就不得不请出让数据变得有趣、易懂&#…

解决Java中的“Unchecked cast: java.lang.Object to java.util.List”问题

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

使用Scrapy构建自己的数据集

一、说明 当我第一次开始在工业界工作时&#xff0c;我很快意识到的一件事是&#xff0c;有时你必须收集、组织和清理自己的数据。在本教程中&#xff0c;我们将从一个名为FundRazr的众筹网站收集数据。像许多网站一样&#xff0c;该网站有自己的结构、形式&#xff0c;并有大量…

vs code 环境变量的配置

问题 环境变量中重复出现下面这两项 ..:/home/xxx/.local/bin/:/home/xxx/.local/bin/:...这造成了一些环境污染&#xff0c;因为/home/xxx/.local/bin 这个环境变量放在前面&#xff0c;文件夹里面的可执行的文件会比conda环境更加优先地执行。 解决 先说结论&#xff0c;…

数字孪生重塑生产格局:智慧工厂的前景与挑战

随着科技的飞速发展&#xff0c;数字孪生技术在智慧工厂的建设中正展现出令人瞩目的作用。数字孪生&#xff0c;一种将实际物理对象与数字虚拟模型相结合的前沿技术&#xff0c;不仅改变了生产方式&#xff0c;更为智慧工厂的未来描绘了一幅令人振奋的画卷。 在智慧工厂的建设…

Java实现敏感词过滤功能

敏感词过滤功能实现 1.GitHub上下载敏感词文件 2.将敏感词文件放在resources目录下 在业务中可以将文本中的敏感词写入数据库便于管理。 3.提供实现类demo 代码编写思路如下&#xff1a;1.将敏感词加载到list中&#xff0c;2.添加到StringSearch中&#xff0c;3.校验&#x…

SSL证书如何使用?SSL保障通信安全

由于SSL技术已建立到所有主要的浏览器和WEB服务器程序中&#xff0c;因此&#xff0c;仅需安装数字证书或服务器证书就可以激活功能了。SSL证书主要是服务于HTTPS&#xff0c;部署证书后&#xff0c;网站链接就由HTTP开头变为HTTPS。 SSL安全证书主要用于发送安全电子邮件、访…

最新发布!2023版贵州省标准地图

日前&#xff0c;贵州省自然资源厅最新发布了10幅2023版《贵州省标准地图》&#xff0c;涉及政区、水系、交通、全要素等专题。此次发布的新版《贵州省标准地图》&#xff0c;紧紧围绕聚焦实事、铆定实用、主推实效、力主实惠而组织编制。 贵州省自然资源厅将编制出版2023版《…