AUTOSAR NvM协议栈集成方法

一、涉及的模块

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.rhkb.cn/news/93559.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

山东布谷科技直播软件源码Nginx服务器横向扩展:搭建更稳定的平台服务

在直播软件源码平台中,服务器扮演着重要的角色,关系着视频传输、数据处理、用户管理等工作的顺利完成。随着互联网的迅猛发展,直播行业也随之崛起,全世界的人们都加入到了直播软件源码平台中,用户流量的增加让服务器的…

设计模式之构建器(Builder)C++实现

1、构建器提出 在软件功能开发中,有时面临“一个复杂对象”的创建工作,该对象的每个功能接口由于需求的变化,会使每个功能接口发生变化,但是该对象使用每个功能实现一个接口的流程是稳定的。构建器就是解决该类现象的。构建就是定…

爬虫逆向实战(八)--猿人学第十五题

一、数据接口分析 主页地址:猿人学第十五题 1、抓包 通过抓包可以发现数据接口是api/match/15 2、判断是否有加密参数 请求参数是否加密? 查看“载荷”模块可以发现有一个m加密参数 请求头是否加密? 无响应是否加密? 无cook…

[C++] string类的介绍与构造的模拟实现,进来看吧,里面有空调

文章目录 1、string类的出现1.1 C语言中的字符串 2、标准库中的string类2.1 string类 3、string类的常见接口说明及模拟实现3.1 string的常见构造3.2 string的构造函数3.3 string的拷贝构造3.4 string的赋值构造 4、完整代码 1、string类的出现 1.1 C语言中的字符串 C语言中&…

【数据分析入门】Numpy进阶

目录 一、数据重塑1.1 透视1.2 透视表1.3 堆栈/反堆栈1.3 融合 二、迭代三、高级索引3.1 基础选择3.2 通过isin选择3.3 通过Where选择3.4 通过Query选择3.5 设置/取消索引3.6 重置索引3.6.1 前向填充3.6.2 后向填充 3.7 多重索引 四、重复数据五、数据分组5.1 聚合5.2 转换 六、…

搭建Web服务器并用cpolar发布至公网访问

本地电脑搭建Web服务器并用cpolar发布至公网访问 文章目录 本地电脑搭建Web服务器并用cpolar发布至公网访问前言1. 首先在电脑安装PHPStudy、WordPress、cpolar2. 安装cpolar,进入Web-UI界面3. 安装wordpress4. 进入wordpress网页安装程序5. 利用cpolar建立的内网穿…

FL Studio 21最新for Windows-21.1.0.3267中文解锁版安装激活教程及更新日志

FL Studio 21最新版本for Windows 21.1.0.3267中文解锁版是最新强大的音乐制作工具。它可以与所有类型的音乐一起创作出令人惊叹的音乐。它提供了一个非常简单且用户友好的集成开发环境(IDE)来工作。这个完整的音乐工作站是由比利时公司 Image-Line 开发…

OpenAI全球招外包大军,手把手训练ChatGPT取代码农 ; 码农:我自己「杀」自己

目录 前言 OpenAI招了一千多名外包人员,训练AI学会像人类一样一步步思考。如果ChatGPT「学成归来」,码农恐怕真的危了? 码农真的危了! 当时OpenAI也说,ChatGPT最合适的定位,应该是编码辅助工具。 用Cha…

设计模式之原型模式详解

前言 在设计模式的系列文章中,我们前面已经写了工厂模式、单列模式、建造者模式,在针对创建型模式中,今天想跟大家分享的是原型模式,我觉的这种模式叫克隆模式会更佳恰当。原型模式的目的就是通过复制一个现有的对象来生成一个新…

【Linux】生产者消费者模型

目录 什么是生产消费者模型 为什么要使用生产消费者模型 基于阻塞队列的生产消费者模型 什么是生产消费者模型 生产者消费者模型是一种常见的并发编程模型,用于解决生产者和消费者之间数据交换和同步的问题。在这个模型中,生产者会生成数据并将其放入…

Spring之AOP的特性

一. AOP简介 AOP是Aspect-Oriented Programming的缩写,即面向切面编程。利用oop思想,可以很好的处理业务流程,但是不能把系统中某些特定的重复性行为封装到模块中。例如,在很多业务中都需要记录操作日志,结果我们不得…

HTML5 游戏开发实战 | 五子棋

01、五子棋游戏设计的思路 在下棋过程中,为了保存下过的棋子的信息,使用数组 chessData。chessData[x][y]存储棋盘(x,y)处棋子信息,1 代表黑子,2 代表白子,0…

【100天精通python】Day38:GUI界面编程_PyQT从入门到实战(中)

目录 专栏导读 4 数据库操作 4.1 连接数据库 4.2 执行 SQL 查询和更新: 4.3 使用模型和视图显示数据 5 多线程编程 5.1 多线程编程的概念和优势 5.2 在 PyQt 中使用多线程 5.3 处理多线程间的同步和通信问题 5.3.1 信号槽机制 5.3.2 线程安全的数据访问 Q…

高效数据传输:轻松上手将Kafka实时数据接入CnosDB

本篇我们将主要介绍如何在 Ubuntu 22.04.2 LTS 环境下,实现一个KafkaTelegrafCnosDB 同步实时获取流数据并存储的方案。在本次操作中,CnosDB 版本是2.3.0,Kafka 版本是2.5.1,Telegraf 版本是1.27.1 随着越来越多的应用程序架构转…

Linux驱动开发之点亮三盏小灯

头文件 #ifndef __HEAD_H__ #define __HEAD_H__//LED1和LED3的硬件地址 #define PHY_LED1_MODER 0x50006000 #define PHY_LED1_ODR 0x50006014 #define PHY_LED1_RCC 0x50000A28 //LED2的硬件地址 #define PHY_LED2_MODER 0x50007000 #define PHY_LED2_ODR 0x50007014 #define…

TiDB基础介绍、应用场景及架构

1. 什么是newsql NewSQL 是对各种新的可扩展/高性能数据库的简称,这类数据库不仅具有NoSQL对海量数据的存储管理能力,还保持了传统数据库支持ACID和SQL等特性。 NewSQL是指这样一类新式的关系型数据库管理系统,针对OLTP(读-写&…

移动通信系统的LMS自适应波束成形技术matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 ..................................................................... idxx0; while idxx&…

docker 基础知识

目录 1. 加载docker镜像 2. 显示所有的镜像 3. 执行镜像,生成容器, 每执行一次,便生成一个容器 4. 显示出container名称 5. 进入容器 6. 如何将文件传入容器内 首先要确保已经安装了docker。注意:服务器上若没有管理员权限&am…

(贪心) 剑指 Offer 14- II. 剪绳子 II ——【Leetcode每日一题】

❓剑指 Offer 14- II. 剪绳子 II 难度:中等 给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n 都是整数,n > 1 并且 m>1 ),每段绳子的长度记为 k[0],k[1]...k[m - 1] 。请问 k[0]*k[1]*.…

数据结构的图存储结构

目录 数据结构的图存储结构 图存储结构基本常识 弧头和弧尾 入度和出度 (V1,V2) 和 的区别,v2> 集合 VR 的含义 路径和回路 权和网的含义 图存储结构的分类 什么是连通图,(强)连通图详解 强连通图 什么是生成树,生…