vector autosar配置一个CAN接收报文,RTE层发现并未接收到信号,怎样查这个问题

vector autosar配置一个CAN接收报文,RTE层发现并未接收到信号,com层IPDU的callout函数也未触发,想知道数据传递到哪一层了,要观测哪个函数?怎样查这个问题

AUTOSAR + Vector MICROSAR 架构里,CAN 报文接收路径是分层的。

你现在的现象是:

  • RTE 未收到信号

  • COM 层 I-PDU Callout 未触发

这说明 问题大概率出在 COM 之前(或 COM 未识别该 PDU)


一、标准接收路径(Vector MICROSAR)

CAN 报文从总线到 RTE 的完整路径:

复制代码
CAN总线
 → CanDrv (CanIf_RxIndication)
   → PduR_CanIfRxIndication
     → Com_RxIndication
       → Com_RxProcessing_RxPduSigEvent
         → Rte_Write / Rte_Receive

你现在需要确认:数据到底卡在哪一层。


二、排查顺序(推荐按顺序查)


✅ 第一步:确认 CanIf 是否收到报文

重点函数:

复制代码
CanIf_RxIndication()

怎么查:

  1. 在该函数打断点

  2. 或开启 CANIF DET/DEBUG

  3. 查看是否进入该函数


如果根本没进 CanIf_RxIndication

说明问题在:

  • 硬件滤波(HRH配置错误)

  • CanDrv 未配置对应 CAN ID

  • 波特率不匹配

  • CAN 控制器未启动


✅ 第二步:确认是否传递到 PduR

关键函数:

复制代码
PduR_CanIfRxIndication()

如果 CanIf_RxIndication 进了,但 PduR 没进:

👉 检查 CanIfRxPduCfg 里是否配置了:

  • 正确的 RxPduId

  • 正确的 HRH 绑定


✅ 第三步:确认是否到达 COM

关键函数:

复制代码
Com_RxIndication()

如果 PduR 进了,但 Com_RxIndication 没进:

👉 说明 PduR 路由表错误

检查:

复制代码
PduR_RoutingPath

是否从:

复制代码
CanIf → COM

三、你说的 Callout 没触发,说明什么?

COM 的 I-PDU Callout 是在:

复制代码
Com_RxIndication()

内部被调用的。

如果 callout 没进,只有两种可能:

  1. 根本没到 COM

  2. IPDU 未被识别(RxPduId 不匹配)


四、最关键的观测函数(按优先级)

建议你按这个顺序打断点:

优先级 函数
⭐⭐⭐⭐ CanIf_RxIndication
⭐⭐⭐⭐ PduR_CanIfRxIndication
⭐⭐⭐ Com_RxIndication
⭐⭐ Com_RxProcessing_RxPduSigEvent
Rte_Write_xxx

五、Vector 特有排查技巧

1️⃣ 打开 CANoe Trace 看 CAN ID 是否正确

确认:

  • ID

  • DLC

  • 数据长度

  • 是否标准帧/扩展帧


2️⃣ 检查 CanIf 配置

看:

复制代码
CanIfRxPduCfg

重点看:

  • CanIfRxPduCanId

  • CanIfRxPduDlc

  • CanIfRxPduHrhRef


3️⃣ 检查 HRH 是否匹配

很多时候问题是:

CAN 控制器滤波没有放行该 ID

检查:

复制代码
CanHardwareObject

是否配置为:

复制代码
BASIC CAN
FULL CAN

六、常见问题总结(80% 出在这里)

问题 现象
CAN ID 配错 CanIf 不触发
HRH 没绑定 CanIf 不触发
PduR 未路由 COM 不触发
IPDU ID 不一致 Callout 不触发
DLC 不一致 COM 丢弃
字节序配置错 RTE 收到 0

七、快速判断法(最有效)

你现在的现象说明:

大概率没进入 Com_RxIndication()

所以:

👉 先断在 CanIf_RxIndication

如果都没进,那问题 100% 在:

  • 硬件滤波

  • CAN 控制器配置


八、终极定位法(一步到位)

如果项目允许:

在:

复制代码
CanIf_RxIndication
PduR_CanIfRxIndication
Com_RxIndication

都加一行 GPIO 翻转或 log

看哪个触发。


相关推荐
传奇开心果编程1 小时前
【Rust入门知识点学与练】第24课:Trait 基础
开发语言·学习·rust
言乐66 小时前
Python加速器4跨境网络加速器
运维·服务器·开发语言·网络·python
金金计较.7 小时前
Go语言-3
java·开发语言·golang
张小凡vip8 小时前
python--爬虫--经验积累的遇到的坑
开发语言·爬虫·python
Wang's Blog8 小时前
Java框架快速入门: Spring Security+OAuth2之云服务集成与多因子认证设计
java·开发语言·spring
门思科技8 小时前
LoRaWAN 网络容量估算:一个 SX1302 网关到底能带多少设备
开发语言·网络·php
大草原的小灰灰9 小时前
Python基础语法
开发语言·python
泡泡鱼(敲代码中)10 小时前
MySQL基础学习笔记:从数据模型到DDL全掌握
开发语言·数据库·笔记·学习·mysql
潜创微科技12 小时前
IT6520:USB-C 转 MIPI 高集成控制器,DP 1.4a 转 MIPI 单芯片搞定 4K120 显示
c语言·开发语言·低延迟·掌机·联阳
Escalating_xu12 小时前
【System V 信号量】从 P/V 原语到 Builder 封装:写出可控、可清理的进程互斥组件
java·linux·开发语言·jvm