当前位置: 首页 > ai >正文

[BUG记录]0X10 会话切换服务响应NRC 0x10

目录

  • 关键词
  • 平台说明
  • 一、背景
  • 二、分析过程
    • 2.1 响应NRC 0x10 的情况
  • 三、措施
  • 四、lesson learned

  

关键词

嵌入式、C语言、autosar、TDA4
在这里插入图片描述
>>>>>回到总目录<<<<<<

平台说明

项目Value
OSautosar OS
autosar厂商vector
芯片厂商TI
编程语言C,C++
编译器HighTec (GCC)

一、背景

  接手到一个bug排查,问题如下:
  在0x10服务中,自定义了一个会话(假设为 0x10 0x46会话)。发现上电后从默认会话切换到0x46有概率会响应NRC 0x10。不是100%复现,概率也不一定。

二、分析过程

2.1 响应NRC 0x10 的情况

  1.CPU负责过高或者CAN 总线负载过高会导致ECU无法处理上位机的请求。
  2.正在执行连续FLASH 操作导致ECU无法及时处理上位机的请求。
  3.请求了不支持的会话类型。
  4.请求格式错误。
  5.ECU处于安全锁定状态。
  6.0x23服务读取正在被操作的地址的时候会响应NRC 0X10.
  7.当上一个服务正在被处理的时候又收到一个新的服务请求。
  8.当服务的return值超范围的时候。
  9.其他异常情况。
  
  
  依次排查后发现,在DCM_10serverPreHandler函数中,有人将DCM_E_BUSYREPEATREQUEST赋值给了return,正确用法应该是赋值给ErrorCode。
在抽象层代码中我们可以看到在函数Dcm_RepeaterProcessSvcPreHandler 中,如果return 值 不为E_OK,DCM_E_PENDING或者 E_NOT_OK 则会响应NRC 0x10.

在这里插入图片描述

三、措施

  修改错误代码后测试正常。

四、lesson learned

  注意函数返回值。
后续更新关于0X10 服务的注意事项。

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

http://www.xdnf.cn/news/9372.html

相关文章:

  • <<运算符重载 和 c_str() 的区别和联系
  • TF 卡和 NM 卡有何区别?
  • openinstall支持豆瓣广告监测,赋能品牌深挖社交流量
  • Baklib知识中台体系构建与应用解析
  • 比较转录组-油料作物-文献精读133
  • Jenkins实践(10):pipeline构建历史展示包名和各阶段间传递参数
  • 【深度学习新浪潮】智能眼镜关键技术拆解(简要版)
  • 什么是 BOM 表,如何通过 BOM 表做好生产管理
  • git 删除某次commit并 推送到 origin
  • 安装 LCMS-8060 三重四级杆配件的详细步骤和要点
  • JavaSE核心知识点04工具04-03(Maven)
  • 简单产品图生成器v1(自己写的)
  • 散货拼柜业务有哪些管理难题?易境通散货拼柜系统如何协同化管理?
  • IPsec协议
  • Codeforces Round 1027 (Div. 3)
  • 使用硬件调试器认识arm64的四大特权级
  • 防火墙虚拟系统
  • 【深度学习新浪潮】以图搜地点是如何实现的?(含大模型方案)
  • AI编译器战争:MLIR vs. OpenAI Triton的算子优化哲学对比 ——从矩阵乘法案例看两种范式的设计差异
  • redis五种数据结构底层实现
  • python调用langchain实现RAG
  • c/c++编译工具在win环境下的配置
  • 超大规模模型训练中的 ZeRO 优化器与混合精度通信压缩技术
  • Nginx监控技术、技巧与最佳实践
  • 【Linux系列】在CentOS系统上安装和配置Vim
  • Java实现加解密和通信安全
  • Qt中的智能指针
  • P4155 [SCOI2015] 国旗计划
  • 学者观察 | 区块链、数字身份、隐私保护为数字世界构筑信任基石——信通院云大所何宝宏
  • C++—decltype