开发者网络

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 96|回复: 10

ECU软件开发介绍1

[复制链接]

2

主题

2

帖子

6

积分

新手上路

Rank: 1

积分
6
发表于 2022-12-2 20:01:54 | 显示全部楼层 |阅读模式
和一些非软件方向的汽车同行交流,他说软件不就是实现那么些功能,但为什么开发一个ECU(控制器)软件需要那么多人头?这问题好像一下子也不能讲清楚,软件这东西有点抽象,看不到摸不着。因此计划写一个系列的文章,介绍下汽车ECU软件是怎么回事?开发有哪些活?这些活怎么做?等等之类。希望对未参加工作的学生或者有志于转向软件方向的汽车同行会有所帮助,能对汽车ECU软件建立一个全面的认识。
1 概述

本系列文章所涉及的ECU(控制器)类似如下所示:



Source: http://osc.lv/autosport-engineering/electronics/engine-management-system-ecu/

它需要采集一些传感器信号,与其他控制器通讯,也需要控制一些执行器。它可以一个发动机控制器,也可以是一个电机控制器,还可以是一个整车控制器等等。


因此,对于这类汽车ECU软件包含三个部分: 应用层软件(Application Software, ASW),底层软件(Basic Software, BSW)和Bootloader,其中Bootloader归为BSW,但它不适用于采用AutoSAR方式开发,所以在这拎出来。采用经典的Autosar架构,三者关系如下所示:



source: https://www.avinsystems.com/products/autosar-classic-platform-basic-software/


  • Bootloader, 即启动引导加载程序,是硬件设备在上电复位之后执行的第一段软件代码,主要功能是刷写软件(这里指BSW和ASW),也包括初始化硬件设备等,以便为最终跳入软件做好准备。具体来讲,Bootloader会检查是否有来自通信(CAN为例)总线的软件刷写请求。若有,则建立与软件下载端的CAN总线通信,并接收CAN总线下载的新软件、解析其地址,数据和代码,运行Flash驱动程序,将其编程到Flash中,并校验其完整性,从而完成软件更新。若没有,则直接跳转到软件复位入口函数,关于Bootloader的内容可参考下图:



source: https://www.avinsystems.com/products/bootloader/

2. BSW, 为应用层软件提供基础服务,其功能一方面是主芯片和外围芯片驱动的实现,另一方面基础功能(操作系统,存储管理,故障诊断,通讯和网络安全等)的开发。
3. ASW, 主要功能是对控制对象功能的实现。即考虑车辆的各种驾驶工况和应用场景,通过复杂的控制逻辑算法实现控制对象的精准控制。
下面结合2个例子理解下BSW和ASW。
例1: 比如车辆要具备自适应巡航功能,这时ASW和BSW都需要做什么?ASW需要根据实际车速来控制油门和制动,BSW需要读取和处理速度传感器的数值,具体过程可参考下图:



source: Application Design PatternsCatalogue

假设速度传感器输出的是模拟电流值,速度的物理值与该电流存在一定的映射关系。我们知道ECU硬件将会对速度传感器输出值进行相关的处理传给ECU的MCU,此时MCU收到模拟信号,需要转换为数字信号才能进一步运算处理,所以MCU进行模数转换(ADC),也就是要设置好ADC相关的参数,此时这部分内容就属于BSW的内容,当然BSW也需要负责采集到信号数据的保存,一般也需要负责转换为速度的物理值。然后再传给ASW,ASW根据实时的速度等信号去实现自适应巡航控制逻辑和算法。
例子2:比如永磁同步电机控制,采用基于传感器的FOC+SVPWM控制算法,如下所示:



Source:来自Mathworks官网

这时对于ASW,可能会先去计算目标扭矩T_ref,然后根据FOC算法计算目标电流Vα_ref,Vβ_ref,最后根据SVPWM算法得到三个半桥的状态编码值。对于BSW来说,一方面配置相应传感器的采集模块,接收各类传感器信号(电流,转速),并进行转换成相应的物理值传输给ASW;另一方面接收来自ASW的编码值指令,访问PWM相关硬件的,使硬件产生相应的电压(电流)信号去控制半桥的通断,即驱动永磁同步电机按照预期的转速或者扭矩运动,当然在BSW还会提供很多其他功能,比如不同调用周期的task,CAN通讯,诊断等功能。
通过这两个例子不难理解,BSW其实建立起与ECU硬件的联系,通过配置一系列与硬件或者基本功能相关的参数,去获取各种传感器信号,并对这些信号进行一定处理。而ASW是专注于车辆的具体功能和性能实现。
<hr/>附加一些软件开发相关的事项:
以上就是对软件开发内容的解释,那么实际项目中,ECU软件开发又是如何实施呢?ECU软件的目的是实现整车的某些功能,也就是ECU软件最终是由主机厂买单,所以就软件开发合作形式,一般有三种。对于核心技术完全被供应商垄断的,通常供应商进行ECU软件开发(既包括Bootloader,BSW和ASW);对于核心技术逐渐被主机厂掌握的,通常主机厂负责ASW,而供应商负责Bootloader和BSW;对于核心技术已被主机厂攻克了的,那么主机厂就负责所有的ECU软件,甚至是ECU硬件。
就软件开发人员要求而言,首先ECU软件会分为BSW和ASW,BSW包含了Bootloader,对于BSW软件开发人员,会要求有手写代码能力,微控制器开发经验,现如今普遍采用AutoSAR架构,会要求基于AutoSAR工具链的开发能力;对于ASW软件开发人员,会要求simulink建模能力,控制功能开发经验。而在实际开发工作中,ASW软件工程师做实车测试和标定,而BSW软件工程师基本在实验室或自己工位做测试。当然还有很多ASW软件工程师和BSW工程师的不同,有兴趣的朋友可以去看看一些公司的招聘要求。
回复

使用道具 举报

0

主题

1

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2022-12-2 20:02:16 | 显示全部楼层
写得很不错!
回复

使用道具 举报

0

主题

3

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2022-12-2 20:02:40 | 显示全部楼层
感觉电机控制的例子不大恰当啊,电机控制一般都在中断里,不属于AUTOSAR ASW的内容。
回复

使用道具 举报

1

主题

2

帖子

4

积分

新手上路

Rank: 1

积分
4
发表于 2022-12-2 20:02:53 | 显示全部楼层
愿闻其详
回复

使用道具 举报

0

主题

5

帖子

6

积分

新手上路

Rank: 1

积分
6
发表于 2022-12-2 20:03:34 | 显示全部楼层
用ADAS或者VCU比较合适
回复

使用道具 举报

1

主题

2

帖子

4

积分

新手上路

Rank: 1

积分
4
发表于 2022-12-2 20:04:25 | 显示全部楼层
上层的算法肯定是在asw里,只是在中断里调用,车上软件都是分层的
回复

使用道具 举报

1

主题

3

帖子

5

积分

新手上路

Rank: 1

积分
5
发表于 2022-12-2 20:04:40 | 显示全部楼层
看了一遍,没看出哪里不恰当,你愿意的话欢迎详细留言电机控制各个组件都是怎么被调用
回复

使用道具 举报

0

主题

3

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2022-12-2 20:04:53 | 显示全部楼层
其实用谁没太关系,主要说明ASW和BSW是干什么的
回复

使用道具 举报

1

主题

2

帖子

4

积分

新手上路

Rank: 1

积分
4
发表于 2022-12-2 20:05:11 | 显示全部楼层
看怎么定义ASW了,我经历的公司ASW一般指RTE上面那块。
回复

使用道具 举报

0

主题

2

帖子

3

积分

新手上路

Rank: 1

积分
3
发表于 2022-12-2 20:05:54 | 显示全部楼层
看怎么定义ASW,我们公司ASW指RTE上面的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|开发者网络

GMT+8, 2025-4-19 13:58 , Processed in 0.107496 second(s), 23 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表