图2系统软件基础架构
系统软件架构分为两大部分:软件平台和应用层(控制策略)。其中软件平台主要包含:硬件依赖层(底层驱动)、硬件抽象层、CAN协议栈(CCP和UDS)、系统调度(RTOS/主循环调度)以及基础服务(如:Flash,时钟,CRC校验,随机数产生函数等)。底层驱动又分为一般输入输出驱动、CAN驱动和复杂驱动。这里的复杂驱动是指:非通用的无法经过HAL层处理的底层IO驱动。比如一些特殊格式的编/解码信号。本系统中,Flash Driver和System Clock虽不经过HAL处理,但不属于复杂驱动。因为Flash Driver提供对CPU的Flash和内部EEPROM操作的API接口,System Clock提供CPU的总线时钟和外设时钟配置API接口。它们均不直接参与CPU外设的输入输出控制。
本系统无复杂驱动。
在本VCM软件架构中,CCP负责数据的采集和标定,仅在产品开发过程中使用,在产品软件任一版本发布或软件冻结前都将被移除。UDS/OBD诊断按照ISO标准进行开发,网络层遵循ISO15765-2协议,应用层遵循ISO14229-1协议。
本VCM软件未使用操作系统。系统上电初始化完成后,系统的任务调度由主循环进行处理。
本VCM软件采用基于模型的开发, HAL(Hardware Abstract Layer,硬件抽象层)是上层应用策略和底层信息交互的桥梁。HAL一方面将底层的输入信息进行采集后输入给应用层进行运算分析,另一方面将应用层的运算分析结果通过调用底层驱动输出到CPU外设上。在整个软件架构中起着信息交互枢纽的作用。
应用层分为模型自动生成代码和手写代码两大部分,建模和代码生成工具使用Matlab Simulink。
ISO 26262软件架构要求ASIL-C |
航盛ASIL-B/C |
注释:强烈推荐采用半形式化注释,推荐形式化和非形式化注释 |
自动代码采用形式化注释,手动代码采用半形式化和非形式化注释 |
原则:强烈推荐层级架构,模块设计时高内聚低耦合,高调度性能。中断限制使用(推荐) |
采用3层软件架构,并采用Matlab作为应用层开发工具,自动生成代码。各模型有统一的模块调度各子功能模块,模块功能划分清晰,核心算法及常用算法封装,全局非常量,非标定量禁止交叉访问。中断只对底层驱动起作用且禁止嵌套 |
错误校验:强烈推荐执行合理性校验,数据错误校验及控制流监测。 |
底层平台各层级函数间具有完善的数据校验及参数检查机制。上层模型各种信号传递时首先经过输入处理模块进行信号校验和转换。各子功能模块间也有数据校验。具有RAM、EEPROM自检功能,对于Flash,采用CPU自带ECC校验。并具有Stack监测功能。在各功能设计时有独立诊断模块,对不可能逻辑进行分析,以进行控制流监测。 |
错误处理:强烈推荐故障弱化,推荐静态恢复和数据纠错处理 |
功能上采用分级故障处理机制,根据不同的故障有不同的故障恢复策略。EEPROM采用双备份独立校验,主存储区错误时将采用从存储区,同时错误时将采用缺省值。其余故障处理无数据纠错机制。 |
验证:强烈推荐设计检查的非形式化验证以及数据流和控制流分析(安全相关) |
采用matlab simulink V&V,并进行MIL,SIL,HIL验证 |
-
- 软件平台化架构设计 – Software PlatformArchitecture Design
软件平台化架构如下图所示:
图3软件平台化架构图
本系统中软件平台使用到的资源有:
- 硬件依赖层(底层驱动)
- 一般IO驱动
- 数字输入输出
- 模拟输入
- PWM输入输出
- 其他驱动
- CAN通信
- LIN通信
- SPI通信
- 外部EEPROM
- 芯片TLE8108EM
- WKUP
- watchdog
- 一般IO驱动
- 平台软件
- 周期任务调度
- 硬件抽象层
- 数字输入
- 数字输出
- 模拟输入
- PWM输入
- PWM输出
- CAN通信
- LIN通信
- 网络管理模块
- CCP协议栈
- 诊断
- ISO15765-2协议栈
- Unified Diagnostic Services(UDS)
- On-Board Diagnostics(OBD)
- 基础服务
- 系统时钟和CPU资源管理
- 定时器
- 通用函数utils