AUTOSAR源码分析之一

本文主要分析了AUTOSAR中CANIF驱动的初始化、数据发送及接收流程。在驱动初始化中,详细阐述了CAN线中断的安装过程。在数据发送部分,提到了定时器触发和直接触发两种发送机制。对于数据接收,既讨论了中断方式的处理,也提及了轮询方式,但轮询方式可能未实际调用。整个解析侧重于理解CANIF在AUTOSAR系统中的工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

AUTOSAR CANIF驱动中间层接口分析:canif.c/can.c
1、驱动初始化
       在Can_Init关中断处理中安装CAN线中断:Irq_Save——————Irq_Restore
       StartupTask->CanIf_InitController->Can_InitController->Can_Init->ISR_INSTALL_ISR2("DCAN1Level0",Can1_InterruptHandler,CAN1_LEVEL_0,2,0)->Can1_InterruptHandler,直接封装Can_InterruptHandler
       初始化区分Can_GeneralType,中间是一个unit8 CanIndex,定义为一个驱动模块的实例,序号从0开始

2、数据发送:
     数据发送看到两种情况,一是通过定时器触发消息队列发送,另一种是直接触发发送例程

     A、TASK(SchM_BswService,任务注册)->CanNm_MainFunction_All_Channels->CanNm_MainFunction->CanNm_Internal_TickMessageCycleTime->CanNm_Internal_TransmitMessage->CanIf_Transmit->Can_Write
     B、GEN_TASK_HEAD(任务注册)->MainFunctionTask->Com_MainFunctionTx->Com_Internal_TriggerIPduSend->PduR_ComTransmit->PduR_ARC_Transmit->PduR_ARC_RouteTransmit->J1939Tp_Transmit->J1939Tp_Internal_DirectTransmit->Ca

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值