当前位置:网站首页>基于can总线的A2L文件解析(3)
基于can总线的A2L文件解析(3)
2022-07-05 18:18:00 【赞哥哥s】
文章目录
前言
在第二篇A2L文件解析的文章中,介绍了常用接口的定义内容。在实际使用过程中,进行参数定义。下面介绍具体的配置及定义。

MOD_COMMON
此关键字用于指定模块的通用描述数据,然后将其作为该模块的标准。
/begin MOD_COMMON "This is MOD_COMMON"
BYTE_ORDER MSB_LAST
ALIGNMENT_BYTE 1
ALIGNMENT_WORD 2
ALIGNMENT_LONG 4
ALIGNMENT_FLOAT32_IEEE 4
ALIGNMENT_FLOAT64_IEEE 8
ALIGNMENT_INT64 8
/end MOD_COMMON
ALIGNMENT_BYTE:声明整个模块中的BYTE对齐方式。如果参数缺失,对齐方式为1。其他同理。
BYTE_ORDER:字节序,MSB_LAST=Intel,默认为Intel
MOD_PAR
MOD_PAR关键字用于描述要为设备配置的管理数据。除了注释之外,所有参数都是可选的。暂时没有用到。
XCP数据
在A2ML中定义XCP结构:
"XCP" struct {
taggedstruct Common_Parameters; /* default parameters */
taggedstruct {
block "XCP_ON_CAN" struct {
struct CAN_Parameters; /* specific for CAN */
taggedstruct Common_Parameters; /* overruling of default */
};
}; /* transport layer parameters*/
};
Common_Parameters定义
/*********************** start of Common Parameters ***************************/
taggedstruct Common_Parameters {
block "PROTOCOL_LAYER" struct Protocol_Layer;
block "SEGMENT" struct Segment;
block "DAQ" struct Daq;
block "PAG" struct Pag;
block "PGM" struct Pgm;
block "DAQ_EVENT" taggedunion Daq_Event;
}; /******************** end of Common Parameters *****************************/
定义了第二节介绍的接口。
IF_DATA定义XCP
PROTOCOL_LAYER
/begin IF_DATA XCP
/begin PROTOCOL_LAYER
0x0101
0x07D0
0x2710
0x07D0
0x07D0
0x07D0
0x07D0
0x00
0x08
0x08
BYTE_ORDER_MSB_LAST
ADDRESS_GRANULARITY_BYTE
OPTIONAL_CMD SET_MTA
OPTIONAL_CMD UPLOAD
OPTIONAL_CMD SHORT_UPLOAD
OPTIONAL_CMD TRANSPORT_LAYER_CMD
OPTIONAL_CMD DOWNLOAD
OPTIONAL_CMD DOWNLOAD_NEXT
OPTIONAL_CMD SHORT_DOWNLOAD
OPTIONAL_CMD SET_CAL_PAGE
OPTIONAL_CMD GET_CAL_PAGE
OPTIONAL_CMD GET_PAG_PROCESSOR_INFO
OPTIONAL_CMD GET_PAGE_INFO
OPTIONAL_CMD SET_DAQ_PTR
OPTIONAL_CMD WRITE_DAQ
OPTIONAL_CMD SET_DAQ_LIST_MODE
OPTIONAL_CMD GET_DAQ_LIST_MODE
OPTIONAL_CMD START_STOP_DAQ_LIST
OPTIONAL_CMD START_STOP_SYNCH
OPTIONAL_CMD GET_DAQ_PROCESSOR_INFO
OPTIONAL_CMD GET_DAQ_EVENT_INFO
OPTIONAL_CMD FREE_DAQ
OPTIONAL_CMD ALLOC_DAQ
OPTIONAL_CMD ALLOC_ODT
OPTIONAL_CMD ALLOC_ODT_ENTRY
COMMUNICATION_MODE_SUPPORTED BLOCK
SLAVE
/end PROTOCOL_LAYER
第一个数字是版本号,后面七个是T1-T7

接下来两个为MAX_CTO和MAX_DTO

BYTE_ORDER_MSB_LAST表示Intel格式
后面的是定义的命令,由于本XCP没有用编程,所以跟编程相关的CMD不在定义范围内。
COMMUNICATION_MODE_SUPPORTED定义从机
DAQ
/begin DAQ
DYNAMIC
0x00
0x2D
0x00
OPTIMISATION_TYPE_DEFAULT
ADDRESS_EXTENSION_FREE
IDENTIFICATION_FIELD_TYPE_ABSOLUTE
GRANULARITY_ODT_ENTRY_SIZE_DAQ_BYTE
0x07
OVERLOAD_INDICATION_PID
/begin STIM
GRANULARITY_ODT_ENTRY_SIZE_STIM_BYTE
0x07
/end STIM
目前XCP只支持DYNAMIC DAQ
MAX_DAQ为0.因为是动态DAQ
MAX_EVENT_CHANNEL为0x2D,根据实际EVENT数决定,配置时是大于实际EVENT数的。
MIN_DAQ为0.因为是动态DAQ
OPTIMISATION_TYPE;这个默认
ADDRESS_EXTENSION:free
不知道配置在哪。在标定软件中有显示可以配置。
IDENTIFICATION_FIELD_TYPE_ABSOLUTE,在下图中配置

OVERLOAD_INDICATION_PID,不知道配置在哪。在标定软件中有显示可以配置。
MAX_ODT_ENTRY_SIZE_DAQ:0x07
因为TIMESTAMP选择的是NO_TIME_STAMP,所以时间戳不可用

EVENT
以其中一个event为例:
/begin EVENT
"Dlt_EvtMsg"
"Dlt_EvtM"
0x1E
DAQ
0x01
0x00
0x06
0x00
/end EVENT
事件名:Dlt_EvtMsg
短名:Dlt_EvtM
事件编号:0x1E
数据传输类型:DAQ
最大DAQ LIST数量:1
事件循环周期:0
事件时间单位:6,“UNIT_1NS” = 0,
“UNIT_10NS” = 1,
“UNIT_100NS” = 2,
“UNIT_1US” = 3,
“UNIT_10US” = 4,
“UNIT_100US” = 5,
“UNIT_1MS” = 6,
“UNIT_10MS” = 7,
“UNIT_100MS” = 8,
“UNIT_1S” = 9,
“UNIT_1PS” = 10,
“UNIT_10PS” = 11,
“UNIT_100PS” = 12
事件优先级:0
XCP_ON_CAN
CAN_Parameters
0x0102
CAN_ID_MASTER 0x0xxx
CAN_ID_SLAVE 0x0xxx
BAUDRATE 0x07A120
SAMPLE_POINT 0x50
SAMPLE_RATE SINGLE
BTL_CYCLES 0x0A
SJW 0x01
MAX_DLC_REQUIRED
XCP on CAN version 版本号:0x0102
CAN_ID_MASTER:主机ID-0x0xxx
CAN_ID_SLAVE:从机ID-0x0xxx
BAUDRATE:500K,0x07A120
SAMPLE_POINT:采样点80
SAMPLE_RATE:采样率SINGLE
BTL_CYCLES:每个bit的slot数,10
SJW:同步段长度,1
MAX_DLC_REQUIRED:主从机的DLC始终为8
PROTOCOL_LAYER和前面设置的一致

CAN相关的信息在DBC或Arxml中设置。
总结
至此,A2L文件中的内容就介绍完了。关于XCP协议及代码实现,后面有空再继续学习。
若你觉得本文对你有帮助,欢迎点赞,关注,收藏,转发~~~
你的鼓励是对小弟的最大支持~~~
建了一个WX公众号,《汽车电子学习笔记》感兴趣可以关注一下~~~文章都会同步更新~
边栏推荐
- [utiliser Electron pour développer le Bureau sur youkirin devrait]
- Find the first k small element select_ k
- rust统计文件中单词出现的次数
- Sophon KG升级3.1:打破数据间壁垒,解放企业生产力
- 【在優麒麟上使用Electron開發桌面應】
- Le cours d'apprentissage de la machine 2022 de l'équipe Wunda arrive.
- 在一台服务器上部署多个EasyCVR出现报错“Press any to exit”,如何解决?
- 英语句式参考
- How to improve the thermal management in PCB design with the effective placement of thermal through holes?
- Maximum artificial island [how to make all nodes of a connected component record the total number of nodes? + number the connected component]
猜你喜欢

Introduction to the development function of Hanlin Youshang system of Hansheng Youpin app

Sophon autocv: help AI industrial production and realize visual intelligent perception

吴恩达团队2022机器学习课程,来啦

记录Pytorch中的eval()和no_grad()

Record eval() and no in pytoch_ grad()

node_ Exporter memory usage is not displayed

Sophon KG升级3.1:打破数据间壁垒,解放企业生产力

南京大学:新时代数字化人才培养方案探讨

Tupu software digital twin | visual management system based on BIM Technology

如何获取飞机穿过雷达两端的坐标
随机推荐
访问数据库使用redis作为mysql的缓存(redis和mysql结合)
【PaddleClas】常用命令
项目中遇到的问题 u-parse 组件渲染问题
记录Pytorch中的eval()和no_grad()
Star ring technology data security management platform defender heavy release
[QNX hypervisor 2.2 user manual]6.3.2 configuring VM
Memory leak of viewpager + recyclerview
Use of print function in MATLAB
开户注册挖财安全吗?有没有风险的?靠谱吗?
Check namespaces and classes
Clickhouse (03) how to install and deploy Clickhouse
开户注册股票炒股安全吗?有没有风险的?靠谱吗?
星环科技数据安全管理平台 Defensor重磅发布
LeetCode 6109. Number of people who know the secret
Wu Enda team 2022 machine learning course, coming
The 11th China cloud computing standards and Applications Conference | cloud computing national standards and white paper series release, and Huayun data fully participated in the preparation
数值计算方法 Chapter8. 常微分方程的数值解
Multithreading (I) processes and threads
Privacy computing helps secure data circulation and sharing
破解湖+仓混合架构顽疾,星环科技推出自主可控云原生湖仓一体平台