You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用CAN收发中断方式时,Autosar消息路由调用的API咨询

Autosar规范下CAN中断场景的PDU路由API说明

核心分层调用流程(CAN RX中断路径)

Autosar采用分层架构,CAN报文接收及PDU路由需按Can Driver → CanIf → PduR的顺序调用标准API,以下是各层关键接口:

1. Can Driver层(硬件抽象层,CAN ISR内调用)

当CAN接收中断触发后,Can Driver完成硬件报文读取后,必须调用Autosar标准API:

void Can_RxIndication(
    const Can_HwHandleType HwMailbox,
    const Can_PduType* PduInfoPtr
);
  • 作用:将接收到的CAN L-PDU(含ID、数据、长度)通知给CanIf模块,无需手动复制缓冲区——Can Driver会按配置将报文存入指定缓冲区,并通过PduInfoPtr传递指针。

2. CanIf层(接口适配层)

CanIf接收Can Driver的指示后,完成PDU格式转换、过滤等适配操作,随后调用Pdu Router的标准接收指示API:

void PduR_RxIndication(
    PduIdType RxPduId,
    const PduInfoType* PduInfoPtr
);
  • 作用:将处理后的PDU传递给PduR模块,启动路由流程。

3. PduR层(PDU路由核心)

PduR根据预先配置的路由规则(由Autosar配置工具定义,如DaVinci Configurator),自动完成PDU的路由转发:

  • 若需转发至本地上层模块(如Com、Nm),PduR会调用对应模块的RxIndication API(如Com_RxIndication());
  • 若需转发至其他ECU(即跨ECU路由),PduR会调用下层发送接口触发发送流程。

关键注意事项

  • 所有API均为Autosar规范强制定义,无需自行实现,仅需通过配置工具关联各模块的接口映射;
  • CAN接收中断内的操作需保持轻量化,Can Driver仅负责硬件交互与Can_RxIndication()调用,复杂逻辑(如过滤、路由)交由CanIf和PduR在任务上下文处理(若配置为非中断上下文);
  • 缓冲区管理由Can Driver按配置自动完成,无需手动复制报文——配置时需指定接收缓冲区的数量、大小及分配方式。

内容的提问来源于stack exchange,提问作者최 고운

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 10:25:04