0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

存储协议栈的Error流转过程分析

832065824 来源:汽车电子嵌入式 2023-09-04 09:53 次阅读

前言

前面的文章我们详细分析了NvM,Fee,Fls模块以及NvM User和NvM的交互,对AUTOSAR架构下的存储协议栈应该有了一个比较深入的了解了。回头来看,站在NvM使用者的角度来看最关心的是如何使用NvM存储服务,以及使用过程中出现Error后如何快速定位和分析问题。NvM服务的使用可以参考<>一文,本文就来自低向上的分析AUTOSAR架构下存储协议栈的Error处理机制,希望能帮助NvM使用者快速定位和分析问题!

缩略词:

简写 全称
DMU Data Memory Unit
Fls Flash
OPER Flash Operation Error
SQER Command Sequence Error
EVER Erase Verify Error

注:本公众号文章中使用了一些第三方工具和文档,若有侵权,请联系作者删除!

参考文档:

1.AURIXTC3XX_um_part1_v2.0.pdf

2. Specification of Flash EEPROM Emulation

3. Specification of Flash Driver

4.Specification of NVRAM Manager AUTOSAR CP Release 4.3.1

5.AUTOSAR架构下NVM Block连续写及Default Value问题分析

6.AUTOSAR架构下NvM模块详细分析

7.AUTOSAR架构下Fee详细分析

8.TC37x芯片FLASH基本概念介绍

9.AUTOSAR架构下Fls详细分析

10.TC3xx芯片DMU介绍

正文

1.Error自定向上分析

由于从NvM User的存储服务请求正向自定向下分析Error发生的条件和流转十分困难,我们采用自底向上的方法从底层已知Error出发向上分析Error的流转,也就是:Fls已知Error àFeeàNvMàNvM User

如下表所示,我们把自底向上分析的结果以表格的形式统计出来,通过这种方式,NvM User就能从JobResult结果查找NvM,Fee,Fls报了什么错误,也就能采用对应的应对措施。

Note:

1.该表格仅把NvM最常用的服务(读,写,擦除)可能产生的Error统计进去,像NvMCancell这类的不常用服务没有统计进去。

2.NvM除了底层上报的错误外,本身还有很多Error处理机制,比如,调用底层接口的返回值判断等,这里错误也没有统计进去,也就是我们仅仅把NvM DMU上报的错误统计出来

3.DMU上报的Error的原因,以及对应软件的处理办法可以查看数据手册获得。具体请参考: <<TC3xx芯片DMU介绍>>

NvM User NvM Fee Fls
NvM User可以通过Block Callback获取NvM Job请求的结果,
然后根据结果执行对应的策略
NvM调用NvM Block配置的Callback函数JobEndCbkExtFunc_pt,传入的JobResult为NVM_REQ_NOT_OK

NvM_CurrentBlockInfo_t.LastResult_t = NVM_REQ_NOT_OK



Fee在处理Write任务时会调用Fls的Compare接口对比写入DFlash的数据和RAM缓存的数据,如果出现错误,Fee会调用NvM_JobErrorNotification

Fls调用Fee_JobErrorNotification, Fee_JobErrorNotication调用FeeNvmIllegalStateNotification


FeeJobResult == MEMIF_BLOCK_FAILED

Note: FeeNvmIllegalStateNotification是一个Callout函数,由User实现
Fls执行Compare任务时发生错误,调用Fee_JobErrorNotification

FlsJobResult == MEMIF_BLOCK_INCONSISTENT

Note: 写入Flash的数据和RAM缓存的数据不一致
Fls调用Fee_JobErrorNotification, Fee_JobErrorNotification调用NvM_JobErrorNotification

FeeJobResult == MEMIF_BLOCK_FAILED
Fls擦写过程中发生了超时,调用Fee_JobErrorNotification

FlsJobResult == MEMIF_BLOCK_FAILED

Note: 监控擦写任务执行的时间,超时就会报错
Fls擦除过程中发生错误,调用Fee_JobErrorNotification

FlsJobResult == MEMIF_BLOCK_FAILED

Note: 发生OPER, EVER, SQER
Fls写数据过程发生错误,调用Fee_JobErrorNotification

FlsJobResult == MEMIF_BLOCK_FAILED

Note: 发生OPER, PVER, SQER错误
Fls读数据过程发生错误,调用Fee_JobErrorNotification

FlsJobResult == MEMIF_BLOCK_FAILED

Note: 开启了ECC_ERROR检查,如果发生了ECC错误就会报错
NvM调用NvM Block配置的Callback函数JobEndCbkExtFunc_pt,传入的JobResult为NVM_REQ_INTEGRITY_FAILED

NvM_CurrentBlockInfo_t.LastResult_t = NVM_REQ_INTEGRITY_FAILED
Fee在处理Read任务时发现数据不一致(比如,Block重来没有被写过)就会调用NvM_JobErrorNotification

FeeJobResult == MEMIF_BLOCK_INCONSISTENT
NvM调用NvM Block配置的Callback函数JobEndCbkExtFunc_pt,传入的JobResult为NVM_REQ_NV_INVALIDATED

NvM_CurrentBlockInfo_t.LastResult_t = NVM_REQ_NV_INVALIDATED
Fee在处理Read任务时发现数据是无效的就会调用NvM_JobErrorNotification

FeeJobResult == MEMIF_BLOCK_INVALID
NvM调用NvM Block配置的Callback函数JobEndCbkExtFunc_pt,传入的JobResult为NVM_REQ_NOT_OK

NvM_CurrentBlockInfo_t.LastResult_t = NVM_REQ_NOT_OK
Fee在处理写任务时发现写的次数已经超过该Block配置的最大写次数了就会调用NvM_JobErrorNotification

FeeJobResult == MEMIF_BLOCK_FAILED

2.数据INTEGRITY_FAILED错误示例

我们把TC3xx芯片的DFlash都擦除掉,然后通过仿真器执行重启。

Fee在处理Read任务时发现数据不一致(Block没有被写过),Fee_MainFunction会调用

NvM_JobErrorNotification通知到上层的NvM模块。

acf1a5fc-4ab6-11ee-97a6-92fbcf53809c.png

如果对应的NvM Block配置了Callback函数,NvM模块就会调用该Block的Callback函数通知到NvM_User,这样NvM User就能知道当前NvM Block的状态。

ad21b2ce-4ab6-11ee-97a6-92fbcf53809c.png

3. 总结

本文自底向上分析了存储协议栈的Error流转过程,通过本文总结的Error流转表格,我们可以方便的查找DMU操作出问题的可能原因。但是,对于NvM模块本身的一些逻辑状态上报的Error,这个表格没有统计,感兴趣的朋友可以自己再去研究。

审核编辑:彭菁

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 存储
    +关注

    关注

    13

    文章

    4261

    浏览量

    85658
  • 软件
    +关注

    关注

    69

    文章

    4765

    浏览量

    87156
  • NVM
    NVM
    +关注

    关注

    1

    文章

    39

    浏览量

    19108
  • 协议栈
    +关注

    关注

    2

    文章

    140

    浏览量

    33608

原文标题:AUTOSAR架构下存储协议栈Error问题自底向上分析

文章出处:【微信号:汽车电子嵌入式,微信公众号:汽车电子嵌入式】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    LTE协议软件分析测试方法

    本文介绍了一种应用在LTE协议系统软件开发过程的测试和调试的模型,并给出了测试模型的应用结果。该模型以LTE接入网标准架构为原型,分层调试为思想,多彩模块化打印为手段,具有环境简易、调试方便的特点
    发表于 12-16 14:06 6721次阅读

    lwip协议代码分析

    lwIP(Lightweight IP)是一个为嵌入式系统设计的轻量级TCP/IP协议
    的头像 发表于 10-29 17:37 1876次阅读
    lwip<b class='flag-5'>协议</b><b class='flag-5'>栈</b>代码<b class='flag-5'>分析</b>

    Zigbee技术规范与协议分析 -

    Zigbee技术规范与协议分析 -
    发表于 08-12 23:46

    协议是什么 协议又是什么

    协议协议的具体实现形式, 通俗的理解就是用代码实现的函数库, 以便于开发人员调用。协议是通常是一个层级结构。
    发表于 08-05 07:00

    蓝牙协议实现模式分析

    蓝牙技术是未耒无线通信的一个重要的研究方向。本文主要介绍了蓝牙技术的体系结构及其特点,并结合东芝公司生产的蓝牙协议产品BluetoothTM Utility 软件分析了它的软件实
    发表于 08-21 09:50 62次下载

    对几种开源的TCPIP协议分析

    对几种开源的TCPIP协议分析
    发表于 11-03 16:52 24次下载

    采用精简协议的ZigBee网络节点分析

    采用精简协议的ZigBee网络节点分析   ZigBee是一种新兴的短距离、低功耗、低数据速率、低成本、低复杂度的无线网络技术。ZigBee在整个协议
    发表于 03-29 15:07 1467次阅读
    采用精简<b class='flag-5'>协议</b><b class='flag-5'>栈</b>的ZigBee网络节点<b class='flag-5'>分析</b>

    uIP协议介绍

    uIP 协议是一种免费的可实现的极小的TCP/IP协议,可以使用于由8位或16位微处理器构建的嵌入式系统。本文分析了uIP
    发表于 07-15 15:27 0次下载

    基于TCN实时协议过程数据通信研究

    基于TCN实时协议过程数据通信研究
    发表于 08-31 14:45 16次下载
    基于TCN实时<b class='flag-5'>协议</b><b class='flag-5'>栈</b><b class='flag-5'>过程</b>数据通信研究

    TCP/IP协议之路由器简要分析

    TCP/IP协议中,在封装报文时就相当于是压操作,而在报文解析过程中,则是一个出过程,在封装是最先被压进
    发表于 10-10 11:46 1次下载

    一文详解存储的结构

    存储结构与之前所学的线性存储结构有所差异,这缘于对数据 “存” 和 “取” 的过程有特殊的要求。
    发表于 10-09 16:00 2405次阅读
    一文详解<b class='flag-5'>栈</b><b class='flag-5'>存储</b>的结构

    tcpip协议是什么?tcpip协议有哪些协议?tcpip协议中报文封装和解封装过程

    tcpip协议是什么? TCP/IP协议是计算机网络中使用的最常见的网络协议。它是一个四层
    的头像 发表于 08-01 17:51 8295次阅读
    tcpip<b class='flag-5'>协议</b><b class='flag-5'>栈</b>是什么?tcpip<b class='flag-5'>协议</b><b class='flag-5'>栈</b>有哪些<b class='flag-5'>协议</b>?tcpip<b class='flag-5'>协议</b><b class='flag-5'>栈</b>中报文封装和解封装<b class='flag-5'>过程</b>

    基于ZigBee协议的无线传感网络的建立过程

    电子发烧友网站提供《基于ZigBee协议的无线传感网络的建立过程.pdf》资料免费下载
    发表于 10-24 10:32 0次下载
    基于ZigBee<b class='flag-5'>协议</b><b class='flag-5'>栈</b>的无线传感网络的建立<b class='flag-5'>过程</b>

    汽车UDS协议与XCP协议

    UDS协议 汽车UDS协议是一种用于汽车电子控制单元(ECU)之间进行诊断和通信的标准协议。UDS(Unified Diagnostic
    的头像 发表于 10-27 16:35 4026次阅读
    汽车UDS<b class='flag-5'>协议</b><b class='flag-5'>栈</b>与XCP<b class='flag-5'>协议</b><b class='flag-5'>栈</b>

    基于BlueZ协议的蓝牙语音接入系统实现与性能分析

    电子发烧友网站提供《基于BlueZ协议的蓝牙语音接入系统实现与性能分析.pdf》资料免费下载
    发表于 10-30 11:25 0次下载
    基于BlueZ<b class='flag-5'>协议</b><b class='flag-5'>栈</b>的蓝牙语音接入系统实现与性能<b class='flag-5'>分析</b>