支持汽车电子的嵌入式软件编程接口库设计
摘要: 近年来,随着电子科学和计算机技术的飞速发展,汽车电子设备的应用越来越多。目前,国内汽车电子技术水平跟国外汽车厂商相比还有很大差距,尤其是在发动机电控方面,国内尚无独立开发先例。本文介绍的柴油机电控系统嵌入式软件平台就是面向汽车电子,遵循OSEK标准,应用于汽车动力总成控制的系统平台。
引言
近年来,随着电子科学和计算机技术的飞速发展,汽车电子设备的应用越来越多。目前,国内汽车电子技术水平跟国外汽车厂商相比还有很大差距,尤其是在发动机电控方面,国内尚无独立开发先例。本文介绍的柴油机电控系统嵌入式软件平台就是面向汽车电子,遵循OSEK标准,应用于汽车动力总成控制的系统平台。
软件平台由微型系统内核和应用编程接口库组成。嵌入式操作系统内核负责任务调度及事件处理等,编程接口库负责将开发常用的算法和MPC555底层硬件的驱动函数进行控件级封装,供用户调用。在嵌入式系统中,开发人员通过调用编程接口库中已有的API函数,就可以实现常用运算功能以及常规硬件操作。
图1 发动机电控系统层次图
整个电控系统包括硬件平台、底层驱动、嵌入式软件平台和上层用户四个层次。各个层次关系,如图1所示。
硬件平台简介
发动机电控系统硬件平台主控CPU为MPC555,它是一款高性能的32位单片机,是专为汽车电子、航空航天、智能系统等高端嵌入式控制系统所设计的芯片。其独特之处在于其具有浮点运算单元,支持浮点代码的直接编程;此外,MPC555还具有可编程的时间处理模块,可通过对该模块的独立编程,实现对发动机曲轴、凸轮轴等复杂周期信号的处理,无需外接单独的CPU,从而大大简化了软、硬件设计。
图2 发动机电控系统硬件电路结构框图
以MPC555为核心控制单元,辅以相应的输入信号处理、输出控制和通讯单元设计的发动机电控系统硬件电路结构框图,如图2所示。
嵌入式操作系统内核简介
该嵌入式操作系统是以MPC555/MPC556单片机为硬件运行平台,参照欧洲OSEK标准,构建的超微型实时安全的嵌入式操作系统内核。该系统为用户提供各种任务调度、事件处理及中断响应机制,并由操作系统管理各个任务之间的切换和信息传递。
为满足系统实时性的要求,操作系统任务管理采用基于任务优先级的可抢占式任务机制,任务之间通过消息邮箱和消息队列传递变量和信息。另外,系统内核利用开放源码机制,通过裁减与移植,可以支持多种国际主流处理器。
图3支持汽车电子的嵌入式操作系统内核结构图
该嵌入式操作系统内核的功能结构,如图3所示。
嵌入式编程接口库设计
应用编程接口库的设计是将发动机电控系统需要的常规算法和硬件基本操作封装为函数形式,嵌入在操作系统中,为开发人员提供一个友好安全的软件平台。
图4 支持汽车电子的嵌入式编程接口库结构图
该嵌入式编程接口库的结构,如图4所示。
嵌入式基础编程接口库
嵌入式基础编程接口库是指各行业在电子控制方面通用的编程接口库。该库利用现有车辆数据作为模拟数据进行控制算法和线性插值算法库函数验证,数据结构符合ASAP2标准。该接口库为用户提供了一整套开发中常用的算法函数和基本操作,对典型的算法和操作进行控件级封装,为应用程序提供一个完整的通用的系统调用函数库。该函数库主要包括:
1. 2D、3D线性插值算法接口库:
在二维、三维表中,经过线性插值得到与输入量对应的函数值,用于发动机控制参数查表算法。
2. PID控制器算法接口库:
PID控制器是一种线性控制器。它根据给定值与实际输出值构成控制偏差,将偏差的比例、积分和微分通过线性组合构成控制量,主要用于控制喷油输出信号。
3. 平滑滤波处理算法接口库:
主要用于对采集的模拟信号进行平滑和去抖处理。
4. 其他汽车电子控制系统中,常用的控制算法和信号处理函数接口库。
嵌入式基础编程接口库的设计有两个目的:一是方便调用应用程序,增加程序可靠性和编程效率;二是希望通过将处理方法标准化,在不改变程序结构的情况下,可以将程序言在不同的硬件平台上进行移植,免去了软件开发人员对一些典型算法和操作的重复编程。
嵌入式专用编程接口库
嵌入式专用编程接口库,是指针对特定柴油机和ECU的硬件特殊需要设计的系统专用编程接口库。该接口库的设计符合OSEK操作系统调用规范,为用户提供底层硬件MPC555的各个功能模块的驱动,并针对汽车电子完成了基本的数据处理工作,提供软件方面的可调用函数。
嵌入式专用编程接口库主要包括:
1. 模拟量输入检测及处理接口库:
发动机的温度、压力等传感器信号以电压形式被电控单元ECU的模拟量通道采集。信号采集方式可以是需要时调用采集函数,也可以设置成QADC单元自动按定时器周期顺序采集。在系统初始化时,用户可根据具体情况分别设定各个通道的采集方式。
2. 开关量输入/输出接口库:
用于对离合器、刹车等开关量信号采集并做去抖处理,结果赋值给指定的全局变量,供用户需要时读取。传感器电源、涡轮增压器控制等开关量输出,则通过直接调用相应函数由引脚输出高低电平实现。I/O口的引脚方向在系统初始化时根据硬件设计设定。
3. 周期量输入检测及输出控制接口库:
MPC555单片机内部集成的时间处理单元TPU自带曲轴/凸轮轴信号检测功能和喷油信号输出控制功能。为方便用户使用,我们将各个功能封装为底层驱动函数形式,用户可以调用这些函数设定TPU的工作方式。
4. 其他和单片机硬件相关的驱动函数接口库。
底层驱动接口库是汽车电子开发人员和底层硬件系统之间的桥梁,使开发人员可以最大限度地脱离底层硬件转而专注于汽车控制算法设计。用户通过对底层驱动接口函数的调用,就可以方便地完成对MPC555底层硬件的操作。
嵌入式API函数库
基于上述算法和底层驱动函数库,针对该控制系统的具体需求和功能,兼顾在汽车电子领域的通用性,我们对函数和算法以及各种操作进行了更高一层的封装,为用户提供了更标准的API函数库,更大程度地方便了用户。API函数库包含了发动机各种信号的输入处理和输出控制函数,能够实现更加具体的功能。
以发动机喷油控制函数为例,当系统检测到曲轴信号缺齿位置时,产生中断。系统根据测得的发动机转数,以及各种温度和压力参数,结合怠速、刹车等开关的状态,设定喷油输出信号的起始时刻和脉冲宽度,从而实现对发动机性能的控制。
结语
本文介绍了一种支持汽车电子的嵌入式编程接口库的内容和设计方法。接口库提供了可供系统直接调用的各种API函数,以实现常规算法和硬件操作。接口库的设计相对独立,实现了与硬件平台、操作系统和控制算法的并行开发,最后统一联调,大大缩短了开发的时间。同时,这种层次分明的设计思想,也使得接口库设计更加通用和标准化,可以通过简单修改移植到新的软、硬件平台之上,提高了代码的重复利用率,有较高的使用价值。
暂无评论