汽车软件到目前还是一种嵌入式软件,嵌入式软件有领域的特点,汽车软件和其他嵌入式软件的开发有所不同,其特点有:
- 大量使用moto芯片
- 大规模使用simulink
- 大量使用CAN通信
- 标定功能是标配
- 不使用通用的操作系统,如linux,即使是常见的实时操作系统也很少使用,如vxworks,ucos等
- 主要开发人员都是机械类专业背景
对于传统汽车,汽车软件设计就是控制器软件设计。控制器是用来控制汽车部件的,传统汽车的部件都是复杂的机械系统,没有对机械原理的良好了解,无法开发控制算法,所以很容易理解第6点,为什么过去的汽车软件开发人员大部分是机械类出身。
接着第5点的原因也可以就此引出。由于一个控制器控制一个汽车部件,一个控制器上就运行一个程序,强调实时性而不是多任务,对操作系统的要求不高,反而操作系统越简单实时性越好,所以大部分控制器供应商选择自行开发专用的底软(不一定是操作系统),相较于使用通用操作系统,专用底软不仅能提高性能还能降低成本(操作系统免费而且对硬件要求低)。
机械系统控制算法的参数很多都是无法直接确定的,需要试验得到,所以各大汽车零部件商都很重视标定功能的开发,汽车软件的标定功能是领先于其他嵌入式领域的。这是第4点的原因。
CAN通信在很多工业领域也会用到,但是说到行业内的普及率还是汽车为最。CAN通信在今天已经遇到很多瓶颈,但是在汽车总线刚刚出现的时候很好的兼顾了成本和性能。这是第3点的原因。
正如前面所说,研究算法的人大部分是机械类专业出身,他们不懂编程,虽然采用了标准库的C语言写汽车控制算法并不难