本文是针对链接中文章的学习笔记https://mp.weixin.qq.com/s?__biz=MzUyODA2MjkyNA==&mid=2247490026&idx=1&sn=71943d725ceab7076112427e9fe7f59f&chksm=fa775949cd00d05f9bd53cbea662d5bc35cee25826c327011b903802cf5d34004cb9cd7cbeb2&scene=178&cur_album_id=1584282669947912193#rd
一、autosar架构概述
tresos主要关注底软(BSW)的开发,BSW划分为:服务层,ECU抽象层,微控制器抽象层和复杂驱动。如图1,BSW层介于RTE和Microcontroller之间。
图1
每层按功能组继续划分,如图2所示。CAN通讯属于通讯功能,属于图2中黑框所涵盖的范围。
图2
黑框内表示通讯功能,对该功能再按模块细分,如下图3所示。其中CAN通讯的核心模块有4个(红圈标示):COM模块,PDU Router模块, CAN Interface模块和CAN Driver模块。
图3
二、CAN接收
CAN接收功能需要使用通知(Indication)服务,基于autosar架构的实现过程如下:
图4 CAN接收
其中值得注意2点:
1、当配置为轮询方式时,BSW调度器周期性调用CAN Driver模块的Can_MainFunction_Read函数;
2、数据到达COM后,Com模块将会把数据存入其缓存,供应用层软件读取使用。
三、CAN发送
CAN发送功能需使用请求(Request)服务和确认(Comfirmation)服务,AUTOSAR架构的CAN发送功能如下图5、6所示。
图5 CAN发送
图5中值得注意的是: 当配置为轮询方式时,BSW调度器周期性调用Com模块的Com_MainFunction_Tx函数,Com模块将从其缓存器中读取需发送的数据;
图6 CAN发送后的确认流程
图6中值得注意的是:当配置为轮询方式时,BSW调度器周期性调用CAN Driver模块的Can_MainFunction_Write函数。
【注】:
请求(request),即服务用户向服务提供者发起请求服务;
通知(indication),即服务提供者向服务用户通知一个对其重要的服务提供者内部事件;
确认(confirm),即服务提供者向服务用户传达先前请求服务的结果,是成功还是失败,是完成还是未完成。