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

一、底层软件开发介绍
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就可以实时运行软件,执行相应的功能。


VR眼镜厉害了,不仅可以治中风还能戒毒
中兴通讯在5G时代下的网络建设和网络交付所面临的挑战探讨
单片机在现代电子系统的地位综述
让我们一起来认识下微内核吧
小容量异步电动机受潮的维修方法
汽车电控底层及应用层软件开发介绍
区块链成为医疗领域的新起点
浅析通过CM1243-5实现S7-1200与S7-300之间的S7通信
华为mate10什么时候上市?华为mate10最新消息:华为新旗舰,华为Mate 10值得期待!
如何使用好“元宇宙”这把双刃剑
新能源汽车高压数据采集解决方案的介绍
联通高管透露WCDMA网演进:三阶段实现100M速率
暴利!印度智能手机达5.85亿,手游市场潜力巨大
美国三城市率先体验5G_全球5G普及已不再是梦
基于SPW-FSM Editor的CPM调制器的建模
国产嵌入式工控机的设计理念是怎么样的呢?
IBM、微软同时落子张江,张江、临港南北联动发展
华为云智能体连接物理世界实现智能世界
全球人工智能之战一触即发 看亚马孙如何悄然布局
基于车路云一体化方案的智慧交通“衡阳模式”