目标:实现CAN应用报文收发,使用中断模式
准备:准备一个task能调度跑起来的demo工程,在此基础上进行通讯协议栈功能的扩展。这里说明下这么做的原因,不要一开始就在系统服务(OS,看门狗等)和模式管理花太多时间,系统服务和模式管理里的应用配置可以在实现功能时了解。另外一个原因是,一个项目一般由若干个人合作完成,对于我们一个菜鸟,架构方面的工作(需要资深人员负责)轮不到我们。但是对于一个基于base的项目,通讯和诊断协议栈一般都需要重新开发,所以我们先抓主要矛盾,搞明白通讯和诊断协议栈,可以先动手干活,逐步再了解其它相关组件的应用,然后能干更多活,若干时间后就可以干架构的工作啦。
接下来介绍下学习和实践方法
首先要了解通讯协议栈,具体到CAN应用报文通讯在AUTOSAR架构中是怎么实现的,只有了解了才能明白在configurator中需要配置哪些相关的组件。下面是一张AUTOSAR架构的图
这里面只体现了和总线通讯相关的模块。BSW必不可少的需要OS/BwsM/EcuM,另外上述和CAN应用报文通讯参考框1中(框2和诊断通讯数据流有关),CAN收据接收通过CAN driver向上传递给CAN Interface,然后走框1中的流,传递给PduR模块,因为是应用报文,所以PduR模块将应用报文(这里叫PDU更合适,因为已经不是CAN报文,而是把信息提取了出来,命名为Protocol Data Unit)路由到Com模块,所以为了实现CAN应用报文通讯,我们需要加入在demo工程(包括OS/EcuM/BswM/RTE/Ecuc)的基础上加入CAN,CANIf,PduR,Com组件,以及和CAN通讯相关的CANSM和ComM组件,CANSM是CAN通讯相关的状态机,ComM负责通讯管理,在这个阶段大概了解他们的功能即可。
蓝色框里的组件大多以XF结尾,这个是和序列化相关的,软件自动导入的,后面暂时没什么用,我也没删除。
绿色框是已经完成了部分Dcm诊断通讯的内容,这个后面再说。
以上信息是在开发AUTOSAR前需要了解的基本知识。
另外补充一点,MCAL层我基本都是通过英飞凌提供的MCAL包,通过EB配置的,这个后面有机会再把底层的驱动分享下。但是configurator中我加入了CAN模块,也就是CAN Controller相关的驱动(没有用复杂的收发器,所以没有收发器驱动)。这个CAN driver是达芬奇提供的,由于我使用的MCAL是4.2.2版本,BSW的版本是4.0.3,版本差