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

[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 服务的注意事项。

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

相关文章:

  • 2025年5月6日 飞猪Java一面
  • LittleFS 小型文件系统(一)
  • 实验四 ——序列检测器和序列发生器
  • CSS 中的transform详解
  • 树莓派超全系列教程文档--(50)如何查找树莓派的IP地址
  • 创建型模式之Abstract Factory(抽象工厂)
  • 基于AI的智能农业病虫害识别系统实战指南
  • 【笔记】解决ImportError: cannot import name ‘interp‘ from ‘scipy‘报错
  • 制作一款打飞机游戏59:子弹生成
  • Java Stream API 终止操作的详细解析
  • Python filter()函数详解:数据筛选的精密过滤器
  • 3.20 工程计价数字化与智能化
  • 【Redis】常用的数据类型 + 单线程模型
  • 改进yolo11模型学习
  • AI大模型学习三十、ubuntu安装comfyui
  • 让学习回归到技术上来(技术 !=== 死记硬背)
  • 项目启动以及Vue初识
  • 小白成长之路-计算机网络(四)
  • Axure中继器学习笔记
  • 磁盘管理练习题
  • 软件最全的应用商店/论坛seo设置
  • 辽宁平台网站建设价位/技术优化seo
  • wordpress个人空间/云优化seo软件
  • 微博网站建设/手机网站关键词seo
  • 网站建设首页突出什么/总裁班课程培训
  • 男女做暧昧视频网站/电商卖货平台有哪些