前言
前面的文章我们详细分析了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.
6.
7.
8.
9.
10.
正文
1.Error自定向上分析
由于从NvM User的存储服务请求正向自定向下分析Error发生的条件和流转十分困难,我们采用自底向上的方法从底层已知Error出发向上分析Error的流转,也就是:Fls已知Error àFeeàNvMàNvM User
如下表所示,我们把自底向上分析的结果以表格的形式统计出来,通过这种方式,NvM User就能从JobResult结果查找NvM,Fee,Fls报了什么错误,也就能采用对应的应对措施。
Note:
1.该表格仅把NvM最常用的服务(读,写,擦除)可能产生的Error统计进去,像NvM Cancell这类的不常用服务没有统计进去。
2.NvM除了底层上报的错误外,本身还有很多Error处理机制,比如,调用底层接口的返回值判断等,这里错误也没有统计进去,也就是我们仅仅把NvM DMU上报的错误统计出来
3.DMU上报的Error的原因,以及对应软件的处理办法可以查看数据手册获得。具体请参考: <<>>
NvM User | NvM | Fee | Fls |
NvM User可以通过Block Callback获取NvM Job请求的结果, | NvM调用NvM Block配置的Callback函数JobEndCbkExtFunc_pt,传入的JobResult为NVM_REQ_NOT_OK |
| Fls执行Compare任务时发生错误,调用Fee_JobErrorNotification |
Fls调用Fee_JobErrorNotification, Fee_JobErrorNotification调用NvM_JobErrorNotification | Fls擦写过程中发生了超时,调用Fee_JobErrorNotification | ||
Fls擦除过程中发生错误,调用Fee_JobErrorNotification | |||
Fls写数据过程发生错误,调用Fee_JobErrorNotification | |||
Fls读数据过程发生错误,调用Fee_JobErrorNotification | |||
NvM调用NvM Block配置的Callback函数JobEndCbkExtFunc_pt,传入的JobResult为NVM_REQ_INTEGRITY_FAILED | Fee在处理Read任务时发现数据不一致(比如,Block重来没有被写过)就会调用NvM_JobErrorNotification | ||
NvM调用NvM Block配置的Callback函数JobEndCbkExtFunc_pt,传入的JobResult为NVM_REQ_NV_INVALIDATED | Fee在处理Read任务时发现数据是无效的就会调用NvM_JobErrorNotification | ||
NvM调用NvM Block配置的Callback函数JobEndCbkExtFunc_pt,传入的JobResult为NVM_REQ_NOT_OK | Fee在处理写任务时发现写的次数已经超过该Block配置的最大写次数了就会调用NvM_JobErrorNotification |
2.数据INTEGRITY_FAILED错误示例
我们把TC3xx芯片的DFlash都擦除掉,然后通过仿真器执行重启。
Fee在处理Read任务时发现数据不一致(Block没有被写过),Fee_MainFunction会调用
NvM_JobErrorNotification通知到上层的NvM模块。
如果对应的NvM Block配置了Callback函数,NvM模块就会调用该Block的Callback函数通知到NvM_User,这样NvM User就能知道当前NvM Block的状态。
3. 总结
本文自底向上分析了存储协议栈的Error流转过程,通过本文总结的Error流转表格,我们可以方便的查找DMU操作出问题的可能原因。但是,对于NvM模块本身的一些逻辑状态上报的Error,这个表格没有统计,感兴趣的朋友可以自己再去研究。
End
「汽车电子嵌入式在CSDN上同步推出AUTOSAR精进之路专栏,本专栏每个模块完全按实际项目中开发及维护过程来详细介绍。模块核心概念介绍、实际需求描述、实际工程配置、特殊需求介绍及背后原理、实际工程使用经验总结。目的是让读者看完每一个章节后能理解原理后根据需求完成一个模块的配置或者解决一个问题。」
点击文章最后左下角的阅读原文可以获取更多信息
或者复制如下链接到浏览器获取更多信息
https://blog.csdn.net/qq_36056498/article/details/132125693
注:本公众号文章中使用了一些第三方工具和文档,若有侵权,请联系作者删除!
推荐阅读
End
欢迎点赞,关注,转发,在看,您的每一次鼓励,都是我最大的动力!
汽车电子嵌入式
微信扫描二维码,关注我的公众号
推荐站内搜索:最好用的开发软件、免费开源系统、渗透测试工具云盘下载、最新渗透测试资料、最新黑客工具下载……
还没有评论,来说两句吧...