汽车标定技术--A2L格式分析
目录
1.A2L由来2.A2L格式2.1 PROJECT2.2 MODULE中包含的内容3. INCA和CANape兼容吗?02.A2L格式
A2L文件是一种ASCII格式可读文件,记事本都可以打开,通常需要指定编码格式为UTF-8,如果没有指定就使用默认的Latin-1。
根据官网介绍,A2L文件至少应包含如下四个层级:
层级 | 描述 | 备注 |
PROJECT | 一个A2L一个PROJECT,描述当前项目所有标定测量数据 | APAP2_V:描述使用的那一版的标准 A2ML_V::描述使用那一半的AML标准 |
Module | 每个module表示一个ECU | 目前接触的A2L都只有一个Module |
L1 Keyword | 用于描述ECU的内部所有实际信息 | 包括A2ML、曲线坐标描述、转换公式、标定量等等,有关键词定义 |
L2 Keyword | 从L1中继承下来的特性 | 这个一般是对齐方式,例如ALIGNMENT_BYTE等 |
2.1 PROJECT
一个A2L文件包含一个PROJECT,描述当前项目所有标定测量数据,在声明PROJECT之前,通常是把ASAP2_VERSION说明出来。猜测CANape和INCA根据自己软件版本首先识别ASAP2这个版本。完成版本定义后,继续描述当前项目编号和ECU软件、ECU所有信息。示例Demo如下:
ASAP2_VERSION 1 71
/begin PROJECT ASAP2_Example ""
/begin HEADER "ASAP2 Example File"
VERSION "V1.7.1"
PROJECT_NO P2016_09_AE_MCD_2MC_BS_V1_7_1_main
/end HEADER
/begin MODULE Example ""
...
/end MODULE
/end PEOJECT
MODULE表示一个ECU的所有数据描述,因此如上示例所示,MODULE必须处在一个PROJECT中。 2.2 MODULE中包含的内容
既然MODULE中包含了ECU所有的描述信息,那么有哪些关键字需要我们注意呢?ECU描述关键字 | 描述 |
A2ML | 用于定义标定测量上位机和ECU之间通信参数的格式 |
IF_DATA | 用于定义标定测量上位机和ECU之间通信参数的具体值,包括协议栈配置,该部分语法要与A2ML语法一致 |
MOD_COMMON | 定义MODULE其他参数,字节对齐、字节顺序、ECU内存中数据的大小和存储 |
MOD_PAR | 定义MODULE特定参数,例如CPU名、版本、ECU指定参数;同时还包括ECU memory定义(通过关键字MEMORY_SEGMENT) |
标定测量关键字 | 描述 | |
CHARACTERISTIC | 描述标定量的关键词,由地址、格式、转换方式、上下限构成 | |
MEASUREMENT | 描述观测量的关键词,与标定量关键词类似 | |
FUNCTION | 用于组测量,捆绑标定量和观测量一起使用 | |
BLOB | 用于定义标定量的对象,如每个数组的字节 |
A2ML必须最先定义,因为它要为后续关键字提供类型定义,比如说协议层的参数结构体类型,DAQ列表结构体类型,举例如下:
/begin A2ML
block "IF_DATA" taggeunion if_data{
"XCP" struct {
taggedstruct {
block "PROTOCOL_LAYER" struct {
uint; /* XCP protocol layer version, current 0x100*/
uint; /* T1 [ms] Time-out of the standard CTO*/
uint; /* T2 [ms] Time-out of the checksum calculation*/
uint;
/* T3 [ms] Time-out of the non-volatile memory programm*/
uint;
/* T4 [ms] Time-out of the non-volatile memory programming: PROGRAM_CLEAR*/
uint;
/* T5 [ms] Time-out of the non-volatile memory programming: M_MAX*/
uint; /* T6 [ms] Time-out of the command CONNECT*/
uint; /* T7 [ms] Time-out of the pre-action*/
uchar; /* MAX_CTO: Indicates the maximum length of a CTO packet */
uint; /* MAX_DTO: Indicates the maximum length of a DTO packet */
enum {
"BYTE_ORDER_MSB_LAST" = 0,
"BYTE_ORDER_MSB_FIRST" = 1
};
};
};
};
/end A2ML
那么上述A2ML如何使用的呢?
我们来看,关键词PROTOCOL_LAYER,
举例如下
/begin IF_DATA XCP
/begin PROTOCOL_LAYER
0x100 0x20 0x20 0x20 0x20
0x20 0x20 0x20 0x8 0x8
BYTE_ORDER_MSB_LAST ADDRESS_GRANULARITY_BYTE
/end PROTOCOL_LAYER
/end IF_DATA XCP
是不是非常清晰,0x100,
表示当前XCP协议使用的1.00版本,
后面数字就与A2ML里定义的一样,
比如说各种timeout时间阈值,CTO长度等等
大家可以根据自己的A2L进行分析。
03.INCA能识别CANape使用的A2L吗
朋友最近遇到的问题如下:
首先是没有正确的项目描述,看了一下具体文档,由PROJECT关键字,那是否是ASAP2版本问题呢?修改版本之后,暂时能获取到项目,但又出现了如下问题:
鉴于没有工具可以验证,将这方面猜想委托朋友验证一下,各位静候结果吧。
往期回顾:
1.汽车标定合集
汽车标定文章合集汽车标定技术--XCP协议如何支持测量功能
硬核:汽车标定--多周期测量显示异常汽车标定技术--MPC57xx是如何支持标定的页切换
2.AUTOSAR合集
AUTOSAR OS概述(一)AUTOSAR OS概述(二)
AUTOSAR 通信栈分析(一)
AUTOSAR文章合集
Flash模拟EEPROM原理浅析
3.汽车网络安全合集
汽车网络安全方案产品交付形态的思考汽车网络安全方案需求分析
车载信息安全场景概述
汽车网络安全渗透测试概述
汽车网络安全文章合集
4.汽车功能安全合集
5.汽车虚拟化合集