AUTOSAR 扩展定点数学函数库(EFX)分析
1. 概述
AUTOSAR (AUTomotive Open System ARchitecture) 是汽车电子控制单元(ECU)软件架构的开放标准。在AUTOSAR架构中,扩展定点数学函数库(Extended Fixed-point library, EFX)提供了一组优化的定点数学运算函数,专为资源受限的嵌入式系统设计,特别是需要精确数学运算但缺乏浮点硬件支持的汽车ECU。
本文通过分析AUTOSAR SWS (Software Specification) EFX Library规范文档,详细介绍EFX库的架构和主要功能组件。
2. EFX库在AUTOSAR架构中的位置
扩展定点数学函数库(EFX)是AUTOSAR基础软件层(BSW)的一个组成部分,提供优化的定点数学运算功能,供应用软件组件(SWC)使用。

2.1 架构分层详解
-
应用软件组件(AppSWC)
- 位于AUTOSAR架构最顶层,包含各种应用算法和控制逻辑
- 通过RTE接口调用EFX库提供的各种数学函数
- 典型应用包括控制算法、信号处理等需要高性能数学计算的功能
-
运行环境(RTE)
- 作为应用层和基础软件层之间的桥梁
- 提供标准化的接口,使应用软件能够访问基础软件服务
- 负责服务调用的抽象,屏蔽底层实现细节
-
基础软件层(BSW)
- EFX库 :提供定点数学运算功能,包括多种专用函数模块
- 过滤器函数:提供低通、高通等滤波功能
- 控制器函数:支持PT1、DT1、PID等控制器实现
- 数学函数:包括基础数学运算和三角函数
- 信号处理函数:用于处理各类信号的特殊函数
- 数组函数:处理数据数组的专用函数
- 64位函数:支持更高精度的数学运算
- 服务层:包含操作系统、诊断等基础服务
- ECU抽象层:提供对底层硬件的抽象
- 微控制器抽象层(MCAL):直接与硬件交互
- EFX库 :提供定点数学运算功能,包括多种专用函数模块
-
硬件层次
- ECU硬件抽象层:提供对寄存器和硬件接口的抽象
- 硬件层:包含MCU核心和各种外设
2.2 EFX库的设计特点
-
优化的定点算法
- 针对无浮点硬件支持的微控制器优化实现
- 使用定点数学表示法,精确控制位精度和舍入行为
- 高效利用处理器资源,减少运算开销
-
多精度支持
- 提供8位、16位、32位和64位精度的运算功能
- 根据应用需求灵活选择精度和性能平衡点
-
标准化接口
- 符合AUTOSAR标准规范的命名和调用约定
- 可移植性强,支持不同硬件平台
-
应用领域支持
- 特别支持控制系统开发,提供专用控制函数库
- 支持信号处理和滤波器实现
- 提供数组处理和统计分析工具
3. EFX库主要功能分类
EFX库提供多种类型的数学函数,支持各种嵌入式应用场景下的计算需求。下图展示了EFX库的主要功能分类和组织结构:

3.1 过滤器函数
过滤器函数提供了多种数字滤波器实现,用于信号的噪声抑制和特定频率成分的提取或抑制。
-
低通滤波器(LowPassFilter)
- 用于过滤掉信号中的高频成分,保留低频信号
- 功能函数包括:
Efx_LpFilter_S32
:32位精度的低通滤波器实现Efx_LpFilter_S16
:16位精度的低通滤波器实现Efx_LpFilter_U16
:16位无符号精度的低通滤波器
- 提供对应的初始化函数:
Efx_LpFilterInit_S16
、Efx_LpFilterInit_S32
-
高通滤波器(HighPassFilter)
- 用于过滤掉信号中的低频成分,保留高频信号
- 支持多种精度的实现:
Efx_HpFilter_S32
:32位精度实现Efx_HpFilter_S16
:16位精度实现
- 相应的初始化函数:
Efx_HpFilterInit_S16
、Efx_HpFilterInit_S32
-
带通滤波器(BandPass)
- 允许特定频率范围内的信号通过,同时衰减该范围外的信号
- 主要函数:
Efx_BandpassFilter_S32
-
带阻滤波器(BandStop)
- 阻止特定频率范围内的信号通过,允许该范围外的信号通过
- 主要函数:
Efx_BandstopFilter_S32
3.2 控制器函数
控制器函数提供了各种控制系统常用的控制器实现,特别适用于闭环控制系统开发。
-
PT1控制器(PT1Controller)
- 一阶比例时间控制器,具有一阶延迟特性
- 支持不同精度:
Efx_PT1_S32
:32位精度实现Efx_PT1_S16
:16位精度实现
- 初始化函数:
Efx_PT1Init_S16
、Efx_PT1Init_S32
-
DT1控制器(DT1Controller)
- 一阶微分时间控制器,用于预测控制系统的行为
- 多精度支持:
Efx_DT1_S32
:32位精度实现Efx_DT1_S16
:16位精度实现
- 对应初始化函数:
Efx_DT1Init_S16
、Efx_DT1Init_S32
-
PID控制器(PIDController)
- 比例-积分-微分控制器,最常用的闭环控制器
- 函数实现:
Efx_PID_S32
:32位精度PID控制器Efx_PID_S16
:16位精度PID控制器
- 初始化函数:
Efx_PIDInit_S16
、Efx_PIDInit_S32
3.3 数学函数
数学函数模块提供基础数学运算和三角函数支持,为各种算法实现提供基础。
-
基础函数(BasicMath)
- 提供基本数学运算,包括除法和平方根计算
- 除法函数:
Efx_DivS32byS32_S16
:32位除以32位,结果16位Efx_DivS16byS16_S16
:16位除以16位,结果16位Efx_DivU32byU32_U16
:无符号32位除法
- 平方根函数:
Efx_SqrtS32_S16
:32位数平方根Efx_SqrtU32_U16
:无符号32位平方根Efx_SqrtU16_U8
:无符号16位平方根
-
三角函数(TrigFunctions)
- 提供常用三角函数的定点实现
- 基本三角函数:
Efx_Sin_S16
:正弦函数Efx_Cos_S16
:余弦函数Efx_Tan_S16
:正切函数
- 反三角函数:
Efx_Arcsin_S16
:反正弦函数Efx_Arccos_S16
:反余弦函数Efx_Arctan_S16
:反正切函数
-
64位函数(Func64bit)
- 提供高精度64位数学运算
- 64位除法:
Efx_DivS64byS64_S32
:有符号64位除法Efx_DivU64byU64_U32
:无符号64位除法
- 64位平方根:
Efx_SqrtS64_S32
:有符号64位平方根Efx_SqrtU64_U32
:无符号64位平方根
3.4 信号处理函数
信号处理函数提供了一系列用于处理和转换信号的专用工具。
-
迟滞函数(Hysteresis)
- 提供带迟滞的开关功能,避免信号在阈值附近振荡
- 实现函数:
Efx_Hysteresis_B_S32
:32位精度迟滞函数Efx_Hysteresis_B_S16
:16位精度迟滞函数
-
斜率限制(RateLimiter)
- 限制信号变化的速率,防止系统响应过快
- 支持多种精度:
Efx_RateLimiter_S32
:32位精度实现Efx_RateLimiter_S16
:16位精度实现
-
去抖动函数(Debounce)
- 滤除信号中的噪声波动,稳定输出
- 提供的函数:
Efx_Debounce_B_S16
:布尔型去抖动Efx_Debounce_S16
:16位精度去抖动
3.5 数组处理函数
数组处理函数提供对数据集合的各种操作,支持数据分析和处理需求。
-
排序函数(Sort)
- 对数据数组进行升序或降序排序
- 支持不同精度:
Efx_Sort_S16
:16位精度数组排序Efx_Sort_S32
:32位精度数组排序
-
统计函数(Statistics)
- 计算数组的各种统计特性
- 最小值/最大值函数:
Efx_Min_S32
/Efx_Max_S32
:32位精度Efx_Min_S16
/Efx_Max_S16
:16位精度
- 平均值函数:
Efx_Avg_S32
:32位精度平均值Efx_Avg_S16
:16位精度平均值
-
插值函数(Interpolation)
- 在已知数据点之间进行线性插值计算
- 一维插值:
Efx_Interpolate1D_S32
:32位精度一维插值Efx_Interpolate1D_S16
:16位精度一维插值
- 二维插值:
Efx_Interpolate2D_S32
:32位精度二维插值
4. EFX库应用场景
EFX库在汽车电子控制单元中有广泛的应用场景,特别是在需要精确数学运算但硬件资源有限的系统中。
-
发动机管理系统
- 燃油喷射控制:使用PID控制器和过滤器函数
- 点火正时控制:使用插值函数和控制器模块
- 进气量计算:应用数学函数和滤波器
-
变速箱控制系统
- 换挡策略:使用状态检测和迟滞函数
- 液压控制:应用PID控制器和PT1控制器
- 扭矩管理:使用数学函数和滤波器
-
车身电子系统
- 空调控制:使用PID控制器和去抖动函数
- 灯光控制:应用迟滞函数和状态检测
- 雨刷控制:使用滤波器和去抖动函数
-
底盘控制系统
- ABS/ESP:应用滤波器和状态检测函数
- 转向辅助:使用PID控制器和PT1控制器
- 悬挂控制:用到滤波器和信号处理函数
5. 总结
AUTOSAR扩展定点数学函数库(EFX)作为AUTOSAR架构中的基础软件模块,提供了丰富的定点数学运算功能,支持各种汽车控制应用的开发需求。EFX库通过优化的定点算法实现,有效平衡了计算精度和性能需求,特别适合资源受限的嵌入式系统。
EFX库的主要价值体现在:
- 提供标准化接口:符合AUTOSAR规范,确保软件兼容性和可移植性
- 优化的性能:为无浮点硬件支持的系统提供高效的数学计算
- 多精度支持:根据应用需求灵活选择不同精度的函数
- 专业控制功能:提供现成的控制器和信号处理组件,加速应用开发
定点数学运算功能,支持各种汽车控制应用的开发需求。EFX库通过优化的定点算法实现,有效平衡了计算精度和性能需求,特别适合资源受限的嵌入式系统。
EFX库的主要价值体现在:
- 提供标准化接口:符合AUTOSAR规范,确保软件兼容性和可移植性
- 优化的性能:为无浮点硬件支持的系统提供高效的数学计算
- 多精度支持:根据应用需求灵活选择不同精度的函数
- 专业控制功能:提供现成的控制器和信号处理组件,加速应用开发
通过EFX库,开发人员可以在不牺牲性能的情况下,使用定点算法实现复杂的控制和信号处理功能,推动汽车电子系统向更智能、高效的方向发展。