首页 > 其他分享 >[AutoSar]BSW_Memory_Stack_003 NVM与APP的显式和隐式同步

[AutoSar]BSW_Memory_Stack_003 NVM与APP的显式和隐式同步

时间:2024-04-07 22:04:48浏览次数:22  
标签:AutoSar APP RAM 显式 NVM NvM requests block

目录


  

关键词

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

平台说明

项目Value
OSautosar OS
autosar厂商vector , EB
芯片厂商TI 英飞凌
编程语言C,C++
编译器HighTec (GCC)
autosar版本4.3.1

在这里插入图片描述
  
  
>>>>>>>>>>>>>>>>>>>>>>>>>回到总目录<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

  
  

缩写描述
EEPROMElectrically Erasable Programmable read only memory
NVMNVRAM Manager
MEMIFMemory Abstraction Interface
EAEEPROM Abstraction
EEPinternal/external EEPROM DRIVER
FEEFlash EEPROM Emulation
FLSinternal/external Flash Driver
FCFSFirst come first served

背景

  NVM与APP之间的data有implicit和explicit两种同步方式,本文描述了两种方式之间的区别和实现方式。

一、implicit synchronization

  如NVM模块介绍和使用说明1.1所描述的,不论什么类型的NVRAM BLOCK 都至少有一个NV block, 一个RAM block and 一个 Administrative block。
在这里插入图片描述implicit synchronization 的意思就是APP 与NVRAM block 共用一个 RAM block。如下图所示:

在这里插入图片描述

  不建议多个APP 访问同一个RAM block,一是因为在写入期间 RAM 的值不允许改动,二是因为多个APP 的读写容易造成冲突和越界。

1.1 Write requests 流程 (NvM_WriteBlock)

    1. APP 数据写入RAM 中
    1. APP发出the NvM_WriteBlock请求,此后这个RAM block 的控制权移交给NVM模块。
    1. 从现在开始,APP不允许修改RAM block,直到通过异步轮询(预留链接位置,后面更新详情)发出请求成功或者失败的返回。这个时候可以读取RAM block。
    1. APP可以用轮询的方式周期性检查NvM写入操作是否完成,NvM也可以用回调函数的方式来通知APP操作完成。
    1. 当NvM操作完成后,APP才可以重新更改RAM Block中的值。
        

1.2 Read requests 流程 (NvM_ReadBlock)

    1. APP 端提供一个RAM 用于被 NVM 端的RAM block 填充data。
    1. APP 发出NvM_ReadBlock 请求,此后这个RAM block 的控制权移交给NVM模块。
    1. 从这一步开始,APP不允许读取 也不允许写入这个RAM,直到通过异步轮询发出请求成功或者失败的返回。
    1. APP可以用轮询的方式周期性检查NvM写入操作是否完成,NvM也可以用回调函数的方式来通知APP操作完成。
    1. 当NvM操作完成后,APP才可以重新读取和使用RAM Block中的值。

1.3 Restore default requests 流程 (NvM_RestoreBlockDefaults)

    1. APP 端提供一个RAM 用于被 NVM 端的ROM block 填充data。
    1. APP 发出NvM_RestoreBlockDefaults请求,此后这个RAM block 的控制权移交给NVM模块。
    1. 从这一步开始,APP不允许读取 也不允许写入这个RAM,直到通过异步轮询发出请求成功或者失败的返回。
      1. APP可以用轮询的方式周期性检查NvM写入操作是否完成,NvM也可以用回调函数的方式来通知APP操作完成。
    1. 当NvM操作完成后,APP才可以重新读取和使用RAM Block中被ROM提供的值。

1.4 Multi block read requests 流程 (NvM_ReadAll)

  EcuM Fixed 状态机在启动的时候调用,用于读取填充所有permanent block。

    1. ECU状态管理器可以使用轮询来获取请求的状态,也可以通过回调函数得到通知。
    1. 在NvM_ReadAll期间,将在完全处理完NVRAM块后调用单个块回调(如果配置了)。这些回调使RTE能够单独启动每个SW-C。

1.5 Multi block write requests 流程 (NvM_WriteAll)

  此请求必须仅在系统关闭时由ECU状态管理器触发。这个请求将所有修改过的永久RAM块的内容写入NV内存。通过仅在ECU关闭期间调用此请求,ECU状态管理器可以确保在操作结束之前,没有SW组件能够修改RAM块中的数据。

    1. ECU状态管理器发出NvM_WriteAll请求,该请求将控制权转移给NvM模块。
    1. ECU状态管理器可以使用轮询来获取请求的状态,也可以通过回调函数得到通知。

二、explicit synchronization

开启explicit sync 配置
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

NvMReadRamBlockFromNvCallback:回调,读取RAM mirror 数据到 RAM block。
NvMWriteRamBlockToNvCallback:回调,将RAM block 数据写到 RAM mirror。
NvMrepeatmirrorOperations:上述两个回调失败时重新执行次数。

  如下图所示,explicit 与implicit synchronization 相比,多了一个mirro RAM ,

在这里插入图片描述

   显式同步与隐式同步最根本的区别就是,显式同步APP是知道NvM使用RAM Block的起始时间点和结束时间点的,而且这两个时间点是APP自己来控制的,即两个回调函数中的复制操作起始和结束的时间点。APP不需要通过读取NvM的操作状态来判断当前是否可以使用RAM Block。
   通过一个互斥量设计,可以让多个APP同时共享一个RAM BLOCK。

注意: 如果在一个APP 请求 没有执行完的时候APP2由来一个请求,NVM会合并两个请求,NVM只会处理一次。

2.1 Write requests 流程 (NvM_WriteBlock)

    1. APP 数据写入RAM 中。
    1. APP发出the NvM_WriteBlock请求。
    1. APP可以修改RAM block,直到NvM模块调用NvMWriteRamBlockToNvM 回调。
    1. NvM模块调用NvMWriteRamBlockToNvM回调的时候,将RAM block 数据写到 RAM mirror。如果返回E_NOT_OK则表示数据不一致,重新执行直到NvMRepeatMirrorOperations次数。
    1. 成功执行NvMWriteRamBlockToNvM后,APP才能重新读写RAM block。
    1. APP可以用轮询的方式获取NvM的操作结果,NvM也可以用回调函数的方式通知APP操作结果。

2.2Read requests 流程 (NvM_ReadBlock)

    1. APP 端提供一个RAM 用于被 NVM 端的RAM block 填充data。
    1. APP发出NvM_ReadBlock请求。
    1. APP可以修改RAM block,直到NvM模块调用NvMReadRamBlockFromNvM回调。
    1. NvM模块调用NvMReadRamBlockFromNvM 回调的时候,将RAM mirror 数据写到 RAM block 。如果返回E_NOT_OK则表示数据不一致,重新执行直到NvMRepeatMirrorOperations次数。
    1. 成功执行NvMReadRamBlockFromNvM 后,APP才能重新使用RAM block 的数据。
    1. APP可以用轮询的方式获取NvM的操作结果,NvM也可以用回调函数的方式通知APP操作结果。

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

标签:AutoSar,APP,RAM,显式,NVM,NvM,requests,block
From: https://blog.csdn.net/weixin_42447823/article/details/137374081

相关文章

  • @SpringbootApplication注解
    @SpringBootConfiguration是一个组合注解,由@ComponentScan、@EnableAutoConfiguration和@SpringBootConfiguration组成@SpringBootConfiguration与普通@Configuration相比,唯一区别是前者要求整个app中只出现一次@ComponentScanexcludeFilters-用来在组件扫描......
  • 金汇捷金钱豹龙王战神程序app拨号精灵下载说明
    金汇战神程序App下载,龙王程序app,智慧管家下载安装厂家售后使用说明及安装教程:金汇战神系金汇科技出品战神程序,无区域限制,高性价比高,调试安装更加快捷方便,安装时间大大缩短。添加微心ZSMJCC咨询索取金汇相关App下载链接手机上安装好金汇战神小精灵app后,连接上蓝牙后怎么使......
  • node 建立一个electron的hello world 的工程 有窗体const { app, BrowserWindow } = r
     要创建一个Electron的"HelloWorld"工程,可以按照以下步骤进行:首先,确保你已经安装了Node.js。使用命令行工具进入你要创建项目的目录。运行以下命令来初始化一个新的Node.js项目:bash|npminit-y这将创建一个默认的package.json文件。确保你......
  • Flask - How do I read the raw body in a POST request when the content type is "a
    TurnsoutthatFlasksets request.data toanemptystringifthecontenttypeoftherequestis application/x-www-form-urlencoded.SinceI'musingaJSONbodyrequest,IjustwanttoparsethejsonorforceFlasktoparseitandreturn request.json.......
  • 海外APP代上架,专业代上架各类App,APP代上架费用0,海外应用上架渠道,APP上架包过
    你是否面临以下问题?1、GooglePlay上架难,无从下手,问题频频上架被拒,更新被拒,违规暂停,收到警告,被动下架2、用户安装存在较大的流失风险下载速度过慢,中断流失!好不容易积累的用户轻易卸载app,召回难,损失大3、APP运营成本过高,负担重投放费用高,常常无法避免重复买量,长期承担Go......
  • class path resource [applicationContext.xml] cannot be opened because it does no
    测试运行报错:无法打开applicationContext.xml解决方法:打开File->ProjectStructure...找到Moudles->path->OutPutPath中写入resources路径......
  • uni-app项目运行到Android Studio模拟器
    1.启动模拟器①可以在AndroidStudio中打开安装好的模拟器②也可以不通过AndroidStudio,使用指令直接启动模拟器首先找到AndroidStudio模拟器安装位置,一般如下图:AppData文件夹默认隐藏,需要设置可见。然后再该路径下打开cmd控制台,输入指令emulator.exe-list-avds可......
  • vue3+uniapp手写日历组件
    为了满足产品需求,在日历中可以添加排班信息,点击日期可以获取排班日期详细数据,自定义日历样式,并且支持手动折叠和展开,折叠时只显示当前周的日期,由于现有组件库修改起来比较麻烦,自己就手写了一个日历组件,下面是我代码及思路。代码写的不好仅供参考,如有异议欢迎评论指正,感谢。一......
  • app闪退的原因--一起学习吧之测试
    一、闪退原因内存或存储空间不足:当应用程序使用过多的内存或存储空间时,可能会导致应用程序崩溃。这通常发生在设备上运行内存或存储空间不足的情况下。线程问题:如果应用程序中的线程没有正确管理或者存在死锁情况,可能导致应用程序崩溃。无效的输入或数据错误:当应用程序接收到......
  • AppleScript成功实现FaceTime语音,FaceTime视频,FaceTime蓝号检测,检测数据是否开通Fa
    FaceTime是苹果公司iOS和macOS(以前称MacOSX或OSX)内置的一款视频通话软件,通过Wi-Fi或者蜂窝数据接入互联网,在两个装有FaceTime的设备之间实现视频通话。其要求通话双方均具有装有FaceTime的苹果设备,苹果ID以及可接入互联网的3G/4G/5G或者Wi-Fi网络。 一、Windows电脑上部署......