按照软件功能需求和功能安全等级分割软件功能组件,一般ECU通用功能为例,模块划分先按照功能划分,前面我们提到,对于基于标准AUTOSAR开发,当前无论是整车厂还是供应商,其底层开发均愿意采用基于工具链开发,不论是Vector亦或者东软的neusar,其底层功能都有自己很成熟的功能模块划分,再此不做详细介绍,大的功能模块包含通信模块、诊断服务模块,存储模块,复杂驱动模块几类。
对于不同的ECU,不同的整车厂,不同的供应商,由于其功能需求区别过大,甚至可以说是完全不同的需求,因此无法采用完全固定的架构方案适配所有需求,因此对于整车厂和供应商,其架构主要功能模块划分工作在应用层,当然之里面也能抽出一些较为通用的功能,一般会包含状态管理模块,数据处理模块,故障处理模块,控制输出模块,通信信息处理模块等。至于这些模块功能具体怎么细分就需要架构师去详细分析考量了。
模块划分重点考虑以下两点:
1.模块功能高内聚,模块间低耦合
在做架构设计时都会考虑的,高内聚可以使模块的可重用性、移植性大大更高。低耦合强可以减少模块间接口。二者相辅相成,一般内聚性高,耦合性就会低。主要方法:
分层设计,应用层架构也尽量采用分层设计,从数据方向考虑,可以分为数据获取层(I/O,CAN/LIN等方式获取数据),数据应用层。比如CAN接收数据,一帧报文有十几个信号,每个信号