汽车电控底层及应用层软件开发介绍

汽车电子

2364人已加入

描述

一、底层软件开发介绍

1 底层软件主要内容

底层软件开发内容有:一方面是设备驱动的实现,基于主芯片有:底层驱动PORTS,ADC,PWM,SPI,CAN,SENT等,基于外围芯片的复杂驱动。

另一方面基础功能的开发,bootloader开发,操作系统RTOS,存储管理,故障诊断,通讯和网络安全等功能。

汽车电控

2 底层软件开发基础

对于上述的底层软件开发内容,若要深入的话,一是要能看懂芯片手册,熟悉所使用芯片提供的资源 ,包括多核定义,内存分配情况(包括RAM和ROM/FLASH/EEPROM),ADC模块,GTM模块和通讯模块等等;二是要掌握常用的标准与协议,包括OSEK标准(操作系统相关),14229协议和15765协议(诊断,刷写相关),XCP协议(标定相关)和 11989协议(CAN通讯相关)等;三是要掌握C语言编程,ECU底层软件使用该语言进行开发。

汽车电控

3 底层软件开发工具

底层软件开发最常用的工具有劳特巴赫TRACE32和Vector三件套(Canlyzer, CANape,CANoe)。其中,劳特巴赫调试工具提供了嵌入式开发全生命周期的支持, 覆盖了Pre-Silicon,芯片Bring-Up, Bootloader、 Firmware的开发,OS和App的调试,以及后续的软件测试等过程。

举一个简单应用,比如开发者使用劳特巴赫实时跟踪代码的运行状态,观察一些调试资源,像寄存器、内存、C源码、变量等等,这样就可以识别开发的功能是否满足设计要求。

而Vector工具的话:对于CANlyzer,一方面可以模拟报文节点,发送或接收报文,以此来验证通讯或诊断功能,另一方面通过CAPL语言可设计一个模拟环境来测量或验证所开发的功能。对于CANape,一方面可以实时监测TCU的内外部变量,另一个方面还可以改变标定变量的数值。

汽车电控

熟悉了上述的两类工具,底层软件所涉及的测试和验证工作就基本没问题。

二、应用层软件开发介绍

1.应用层软件概述

相对于底层软件,应用层软件偏向于解决车辆的实际驾驶工况和应用场景问题,以及通过精妙的控制算法或策略实现零部件的精准控制。应用层软件一般从底层软件获取来自传感器或CAN通讯的输入数据,通过自身复杂而有效的策略和算法计算或决策出控制目标,输出给底层软件最终去驱动执行器。比如电机控制器,根据当前油门或制动,坡度,车速等数据,识别出车辆现在处于什么工况,再根据工况的特性,是加速还是减速,是急加速还是急减速等特性,计算出电机的目标转速和目标扭矩,然后基于电机特性Map,确定目标电流或电压,最终驱动电机,以此精准控制电机运转。通过这个例子,也不难发现,要做好应用层软件有几点要求:

1) 深入理解控制对象所应用的场景,车辆有不同的驾驶工况,比如加速超车,制动回馈,自动巡航,自动泊车等。在这些场景下,我们一方面要深入理解控制对象的应用状况,另一方面也要处理不同驾驶工况如何相互切换;

2)深入了解控制对象的实际特性,以电机为例,电机特性Map图(转速-扭矩-功率),电机特性受温度等因素的影响情况;

3)深入掌握控制对象的基础知识,还以电机为例,电机的基本控制方法,电机驱动控制原理,车辆运动学理论等。

2 应用层软件的开发工具

当前应用层软件的开发工具,在国内最流行的应该是Mathworks公司的Matlab+Simulink+Stateflow, 以前在德企会用Matlab+targetlink+stateflow, 像博世还有自己的开发工具。像当下自动驾驶的应用层,有很多公司会采用代码开发,像C、C++等,不过这里提到的都是基于模型的应用层软件开发。

相对于底层软件,应用层软件偏向于解决车辆的实际驾驶工况和应用场景问题,以及通过精妙的控制算法或策略实现零部件的精准控制。应用层软件一般从底层软件获取来自传感器或CAN通讯的输入数据,通过自身复杂而有效的策略和算法计算或决策出控制目标,输出给底层软件最终去驱动执行器。比如电机控制器,根据当前油门或制动,坡度,车速等数据,识别出车辆现在处于什么工况,再根据工况的特性,是加速还是减速,是急加速还是急减速等特性,计算出电机的目标转速和目标扭矩,然后基于电机特性Map,确定目标电流或电压,最终驱动电机,以此精准控制电机运转。通过这个例子,也不难发现,要做好应用层软件有几点要求:

1) 深入理解控制对象所应用的场景,车辆有不同的驾驶工况,比如加速超车,制动回馈,自动巡航,自动泊车等。在这些场景下,我们一方面要深入理解控制对象的应用状况,另一方面也要处理不同驾驶工况如何相互切换;

2)深入了解控制对象的实际特性,以电机为例,电机特性Map图(转速-扭矩-功率),电机特性受温度等因素的影响情况;

3)深入掌握控制对象的基础知识,还以电机为例,电机的基本控制方法,电机驱动控制原理,车辆运动学理论等。

3 应用层软件的开发工具

当前应用层软件的开发工具,在国内最流行的应该是Mathworks公司的Matlab+Simulink+Stateflow, 以前在德企会用Matlab+targetlink+ stateflow, 像博世还有自己的开发工具。像当下自动驾驶的应用层,有很多公司会采用代码开发,像C、C++等,不过这里提到的都是基于模型的应用层软件开发。

汽车电控

就是先根据详细设计方案搭建模型,再基于开发工具所提供自动生成代码配置,将所有模型自动生成C代码;生成的应用层软件代码和底层代码一起编译执行,生成可供ECU执行运行的文件,比如s19,Hex,Bin等格式;最终通过刷写工具将软件烧录到ECU相应的内存空间,启动ECU就可以实时运行软件,执行相应的功能。

汽车电控

审核编辑:汤梓红

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分