“AUTOSAR Nvm_WriteAll()掉电无法正常更新Nvm数据” 问题分析

news2024/11/25 14:34:05

1、问题现象

  • 再掉电时调用Nvm_WriteAll()函数后,再重新上电,发现下电前更新得NvmBlock数据未被正确更新到Nvm中。
  • 掉电时直接调用Nvm_WriteBlock()函数,可以正常更新指定得NvmBlock块。

2、排查

在这里插入图片描述

  • NvM_InterWriteAll()函数有被正常执行。
  • NvM_InterWriteAll()函数中调用得NvM_UpdateValidandChangeStatus(STD_ON,STD_ON)函数被屏蔽了,无法正常执行。
    • NvM_UpdateValidandChangeStatus(STD_ON,STD_ON)作用:Update Validand Change Status。
    • 当该函数不执行时,会直接跳过所有得NvmBlock块,更新标志直接被设置成OFF。
    • 在这里插入图片描述

3、NvM_UpdateValidandChangeStatus(STD_ON,STD_ON)作用

  • 该函数在写NvmBlock时用于更新对应得RAM状态,用于NVM识别是否需要更新NvmBlock。
  • 该函数通过宏NVM_SET_RAM_BLOCK_STATUS_API 决定是否使用。
    • NVM_SET_RAM_BLOCK_STATUS_API = FALSE:该函数可以被正常调用。
      • 影响:NvMSetRamBlockStatusApi = FALSE,则 NvM_WriteAll() 会将所有 NVRAM Block对应的RAM内容拷贝到 NV Block中。
    • NVM_SET_RAM_BLOCK_STATUS_API = TRUE :该函数被屏蔽。
      • 影响:
        • NVM_SET_RAM_BLOCK_STATUS_API = TRUE,只有 RAM Block的内容发生变化的RAM内容被写到 NV Memory中。
        • 此时需要注意:
          • 每当Nvm Block对应的 RAM内容发生变化时,用户必须调用 NvM_SetRamBlockStatus(BlockID, TRUE),告诉 NvM 模块在 NvM_WriteAll()时要处理该 Nvm Block。
          • 如果在Nvm Block对应的 RAM内容发生变化时,用户不调用 NvM_SetRamBlockStatus(BlockID, TRUE,那么在调用Nvm_WriteAll()时,该对应的Nvm Block将不会被更新。
        • 好处: 可以加快NvM_WriteAll()的速度。

4、提升NvM_WriteAll()速度的办法

  • NVM_SET_RAM_BLOCK_STATUS_API 配置为 TRUE,通过调用NvM_SetRamBlockStatus(NvMBlock_ID, TRUE)通知Nvm更新数据时,只更新数据发生改变的NvmBlock。
  • NvMBlockUseCRCCompMechanism配置为TRUE,通过比较上次写入数据的CRC与想要更新的数据的CRC进行对比,当CRC不变时,直接跳出写操作。
    • 该操作有一个弊端:当RAM数据发生变化,但是CRC不变的情况下,那么对应的RAM数据将不会被更新。

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

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

相关文章

Python期末复习题库(上)

1. (单选题) Python源程序的扩展名为( A ) A. py B. c C. class D. ph 2. (单选题) 下列( A )符合可用于注释Python代码。 A. # B. */ C. // D. $ 3. (单选题)下列关于Python 语言的特点的说法中,错误的是&#xf…

【C++修行之道】C/C++内存管理

目录 一、C/C内存分布 1. 选择题: 2. 填空题: 3. sizeof 和 strlen 区别? 二、 C语言中动态内存管理方式:malloc/calloc/realloc/free 1.malloc/calloc/realloc的区别是什么? 2.这里需要free(p2)吗&#xff…

计算机图形学入门15:几何表示

1.几何概论 通过图形学建模表示现实生活中的各种物体,要解决的第一个问题就是如何定义物体形状,而这就涉及到了几何(Geometry)。如下图所示,各种各样的玻璃水杯、车子上的不同部件、水花四溅的模拟、病毒的微观结构等这些几何形状。 那么如何…

Pikachu靶场--文件包含

参考借鉴 Pikachu靶场之文件包含漏洞详解_pikachu文件包含-CSDN博客 文件包含(CTF教程,Web安全渗透入门)__bilibili File Inclusion(local) 查找废弃隐藏文件 随机选一个然后提交查询 URL中出现filenamefile2.php filename是file2.php&…

MCK主机加固在防漏扫中的关键作用

在当今这个信息化飞速发展的时代,网络安全成为了企业不可忽视的重要议题。漏洞扫描,简称漏扫,是一种旨在发现计算机系统、网络或应用程序中潜在安全漏洞的技术手段。通过自动化工具,漏扫能够识别出系统中存在的已知漏洞&#xff0…

C++项目实战:SPDK文件系统

目录 一、Blobstore设计框架二、Cache机制三、Blob FS I/O操作四、SPDK FUSE (Filesystem in Userspcae) 前言 Blob FS是spdk面向于用户态的轻量级的文件系统 SPDK通过绕过内核(kernel bypass)的方案,构筑了用户态驱动,并利用异步轮询、无锁机制等&a…

函数依赖-函数依赖、平凡函数依赖、完全与部分函数依赖、传递函数依赖

一、引言 函数依赖是关系模式中属性与属性之间存在的一种重要数据依赖 1、将关系模式R的模式结构改为 R(SNO,CNO,SN,SD,DD,GRADE) 并对属性列进行重命名 R(学生学号&#xff0c…

msvcp100.dll已加载但找不到入口点的处理方法,分析比较靠谱的msvcp100.dll解决方法

用户在日常使用中有时会遇到一个错误提示:“已加载 msvcp100.dll,但找不到入口点”。这一信息不仅引发了使用上的不便,也对软件的稳定性产生了质疑。理解并解决该问题不仅对确保计算机正常运行至关重要,也对维护软件的长期稳定性和…

油猴 脚本如何添加包含哪个网址 执行脚本

油猴 脚本如何添加包含哪个网址 执行脚本 在这里面加上就可以 // include *://blog.csdn.net/*/article/details/* // include *.blog.csdn.net/article/details/*

【随手记】贴一段matplotlib绘图的多图拼接代码

二维: import numpy as np import matplotlib.pyplot as pltpic_names ["pic1", "pic2", "pic3", "pic4", "pic5", "pic6", "pic7", "pic8", "pic9", "pic10&qu…

代理四川公司疑难商标办理商标异议复审办理

申请商标注册或者办理其他商标事宜,可以自行办理,也可以委托依法设立的商标代理机构办理。外国人或者外国企业在中国申请商标注册和办理其他商标事宜的,应当委托依法设立的商标代理机构办理,按照被代理人的委托办理商标注册申请或…

BEV 中 multi-frame fusion 多侦融合(一)

文章目录 参数设置align_dynamic_thing:为了将动态物体的点云数据从上一帧对齐到当前帧流程旋转函数平移公式filter_points_in_ego:筛选出属于特定实例的点get_intermediate_frame_info: 函数用于获取中间帧的信息,包括点云数据、传感器校准信息、自车姿态、边界框及其对应…

EasyCVR/EasyDSS无人机直播技术助力野生动物监测:开启野生动物保护新篇章

近日有新闻报道,一名挖掘机师傅在清理河道时,意外挖出一只稀有的扬子鳄,挖机师傅小心翼翼地将其放在一边,扬子鳄也顺势游回一旁的河道中。 随着人类对自然环境的不断探索和开发,野生动物及其栖息地的保护显得愈发重要。…

压测怎么做?如何自动化?盘点各大公司全链路压测方案与实践

本文综合盘点各大公司团队的全链路压测技术方案和实践路径,供大家参考。 一、什么是全链路压测? 全链路压测指的是基于实际的生产业务场景、系统环境,模拟海量的用户请求和数据对整个业务链进行压力测试,并持续调优的过程。常用…

PyMuPDF 操作手册 - 01 从PDF中提取文本

文章目录 一、打开文件二、从 PDF 中提取文本2.1 文本基础操作2.2 文本进阶操作2.2.1 从任何文档中提取文本2.2.2 如何将文本提取为 Markdown2.2.3 如何从页面中提取键值对2.2.4 如何从矩形中提取文本2.2.5 如何以自然阅读顺序提取文本2.2.6 如何从文档中提取表格内容2.2.6.1 提…

为啥找对象千万别找大厂男,还好我不是大厂的。。

网上看到一大厂女员工发文说:找对象千万别找大厂男,理由说了一大堆,无非就是大厂男为了逃避带娃,以加班为由宁愿在工位上玩游戏也不愿回家。当然这种观点有的人赞同有的人反对。 网友精彩评论: --------------下面是今…

视频太大了怎么缩小内存

我们在分享视频的时候,有时候会遇到过视频文件太大,无法发送或者上传的情况,别担心,今天我就来给大家分享一个简单有效的方法,让你的视频变得更小,更方便分享! 打开 “51视频处理官网 的网站。上…

vue引入aos.js实现滚动动画

aos.js官方网站:http://michalsnik.github.io/aos/ aos.js介绍 AOS (Animate on Scroll) 是一个轻量级的JavaScript库,用于实现当页面元素随着用户滚动进入可视区域时触发动画效果。它不需要依赖 jQuery,可以很容易地与各种Web开发框架&#…

高压线防外破警示灯在电力安全发挥的作用_鼎跃安全

高压输电线路往往跨越城市、乡村和野外,覆盖范围广泛。随着城乡建设和交通运输的快速发展,高压线路周围的活动频繁,外部破坏风险增加。车辆撞击电线杆、施工机械误碰线路以及人为破坏等事件时有发生,严重影响电力供应的稳定性和安…

Linux---rpm/yum包管理器

文章目录 前言一、pandas是什么?二、使用步骤 1.引入库2.读入数据总结 一.RPM概述 RPM(Red Hat Package Manager)是Linux中的一种软件包管理格式也可以称为软件包管理器;它可以将软件包以二进制形式打包,并提供工具来安…