基于can总线的A2L文件解析(3)

前言

在第二篇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公众号,《汽车电子学习笔记》感兴趣可以关注一下~~~文章都会同步更新~

  • 6
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赞哥哥s

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值