ETAS参考博世是研发需求为AUTOSAR平台提供了工具链,受到不是主机厂和Tire1的追捧,进行快速的平台开发和移植,本文一起分享BSW-CAN协议栈开发。
1 导入DBC解析CAN协议栈
在IsolarA/B新建工程后,完成dbc和arxml的导入,系统上层的SWC和基本类型都有了,需要对工程BSW进行配置
1.1OS
OS模块主要增加6个核的OSApplication,每个OSA按照多核部署方案分配OSTask_BSW,OSTask_ASW和底层中断
OSA里面考虑多核部署,CAN考虑部署在主核Core0
IRQ配置中断优先级
OSTASK配置栈大小
1.2 Ecuc配置
增加通信PDU的配置
1.3 RTE配置
关联BSW模块
SWC_Comoponenet与TaskMapping
2 COMM
ComM模块可简化总线通信栈的初始化、网络管理等,并可收集/协调总线通信访问请求。
3 ECUC
EcuC模块中PDU(Protocol Data Unit)形式传输,为将各层PDU关联,需要定义全局PDU(Global PDU)。由于全局PDU不属于任何标准BSW模块,所以AUTOSAR提出一个EcuC模块来收集一些配置信息。
4 COM
Com模块位于运行时环境RTE与PduR模块之间,主要功能包括:
①将信号装载到I-PDU中发送,从接收到的I-PDU中解析出信号;
②提供信号路由功能,将接收到的I-PDU中的信号打包到发送I-PDU中;
③通信发送控制(启动/停止I-PDU组);
④发送请求的应答等;
5 PDUR
IPDU网关作用,主要为通信接口模块、传输协议模块、诊断通信管理模块,通信模块提供基于I-PDU的路由服务。在通信协议栈中起承上启下的作用
6 CANIF
CanIf模块主要完成对CanIf和控制器中全局变量及配置缓冲区的初始化:发送请求服务,为上层提供在CAN网络发送PDU的接口;发送确认服务,发送成功后通知上层,或发送取消后确认存于发送缓存;接收指示服务,成功接收PDU后通知上层。
CanIf模块主要配置为迎接对象句柄(Hardware object handle,Hoh),包括Hth(Hardware transmit handle)和Hrh(Hardware receive handle),它们需要引用Can模块中定义的CAN硬件对象(CanHardwareObject),CanHardwareObject是对CAN邮箱(MailBox,MB)的抽象。CanIf模块还需要配置CanIf层的PDU,每个PDU需要引用一个Hth或者Hrh,即完成PDU向MB的分配。
6 CANNM
7 CANSM
负责实现CAN网络控制流程的抽象,为ComM模块提供API来请求CAN网络进行通信模式当切换
8 ECUM
EcuM模块负责初始化(Initialize)和反初始化一些BSW模块。模式管理分为Fixed和Flexible两种方式
EcuM模块需要初始化一些BSW模块,所以需要定义一些列初始化列表。对于Fixed模式,可以定义4个初始化列表:
①初始化列表0(Driver Init List Zero);
②初始化列表1;
③初始化列表2;
④初始化列表3。
其中,列表0、1在OS启动之前完成,而列表2、3则需要OS支持,故而在其启动之后完成。对于Flexible模式,EcuM只需要完成列表0、1中各模块的初始化,列表2、3模块初始化需要由BswM模块来实现.